diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100644 new mode 100755 index c82effe98..58115b3aa --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,13 +20,10 @@ if(hasParent) remove_definitions(-DDEBUG) endif() -set(valid_caps "MULTI_ESMF" "NUOPC_MESH") - -set(UFS_CAP "" CACHE STRING "Valid options are ${valid_caps}") +set(MULTI_ESMF OFF CACHE BOOL "Build ww3_multi_esmf library") set(NETCDF ON CACHE BOOL "Build NetCDF programs (requires NetCDF)") set(ENDIAN "BIG" CACHE STRING "Endianness of unformatted output files. Valid values are 'BIG', 'LITTLE', 'NATIVE'.") set(EXCLUDE_FIND "" CACHE STRING "Don't try and search for these libraries (assumd to be handled by the compiler/wrapper)") -set(BUILD_TOOLS OFF CACHE BOOL "Build WW3 tools") # make sure all "exclude_find" entries are lower case list(TRANSFORM EXCLUDE_FIND TOLOWER) @@ -47,12 +44,6 @@ else() endif() endif() -if(UFS_CAP) - if(NOT UFS_CAP IN_LIST valid_caps) - message(FATAL_ERROR "Invalid UFS_CAP selection. Valids options are ${valid_caps}") - endif() -endif() - message(STATUS "Build with switch: ${switch_file}") # Copy switch file to build dir configure_file(${switch_file} ${CMAKE_BINARY_DIR}/switch COPYONLY) @@ -67,9 +58,3 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)$") endif() add_subdirectory(model) - -# Turn on unit testing. -include(CTest) -if(BUILD_TESTING) - add_subdirectory(regtests/unittests) -endif() diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/LICENSE.md b/LICENSE.md old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/VERSION b/VERSION old mode 100644 new mode 100755 diff --git a/cmake/FindESMF.cmake b/cmake/FindESMF.cmake old mode 100644 new mode 100755 diff --git a/cmake/FindMETIS.cmake b/cmake/FindMETIS.cmake old mode 100644 new mode 100755 diff --git a/cmake/FindNetCDF.cmake b/cmake/FindNetCDF.cmake old mode 100644 new mode 100755 diff --git a/cmake/FindOASIS.cmake b/cmake/FindOASIS.cmake old mode 100644 new mode 100755 diff --git a/cmake/FindParMETIS.cmake b/cmake/FindParMETIS.cmake old mode 100644 new mode 100755 diff --git a/cmake/FindSCOTCH.cmake b/cmake/FindSCOTCH.cmake old mode 100644 new mode 100755 diff --git a/cmake/WW3-package-config.cmake.in b/cmake/WW3-package-config.cmake.in old mode 100644 new mode 100755 diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in old mode 100644 new mode 100755 diff --git a/docs/ww3_doxy_tmpl.md b/docs/ww3_doxy_tmpl.md old mode 100644 new mode 100755 diff --git a/manual/README b/manual/README old mode 100644 new mode 100755 diff --git a/manual/README_manual_reference b/manual/README_manual_reference old mode 100644 new mode 100755 diff --git a/manual/agufull08.bst b/manual/agufull08.bst old mode 100644 new mode 100755 diff --git a/manual/app/config.tex b/manual/app/config.tex old mode 100644 new mode 100755 diff --git a/manual/app/mpi.tex b/manual/app/mpi.tex old mode 100644 new mode 100755 diff --git a/manual/app/nest.tex b/manual/app/nest.tex old mode 100644 new mode 100755 diff --git a/manual/app/nuopc.tex b/manual/app/nuopc.tex old mode 100644 new mode 100755 diff --git a/manual/app/oasis.tex b/manual/app/oasis.tex old mode 100644 new mode 100755 diff --git a/manual/app/scrip.tex b/manual/app/scrip.tex old mode 100644 new mode 100755 diff --git a/manual/app/to_do.tex b/manual/app/to_do.tex old mode 100644 new mode 100755 diff --git a/manual/app/tstep.tex b/manual/app/tstep.tex old mode 100644 new mode 100755 diff --git a/manual/bbl2html.awk b/manual/bbl2html.awk old mode 100644 new mode 100755 diff --git a/manual/defs.tex b/manual/defs.tex old mode 100644 new mode 100755 index 5b8963fa5..1f67da7e7 --- a/manual/defs.tex +++ b/manual/defs.tex @@ -94,9 +94,6 @@ \newcommand{\cR}{{\cal R}} \newcommand{\cS}{{\cal S}} -\newcommand{\rd}{{\mathrm d}} - - \newcommand{\marbox}[1]{\marginpar{\fbox{{\small #1}}}} \newcommand{\proddefH}[3]{ diff --git a/manual/eqs.tex b/manual/eqs.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/BS1.tex b/manual/eqs/BS1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/BT1.tex b/manual/eqs/BT1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/BT3.tex b/manual/eqs/BT3.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/BT4.tex b/manual/eqs/BT4.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/BT8.tex b/manual/eqs/BT8.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/BT9.tex b/manual/eqs/BT9.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/DB1.tex b/manual/eqs/DB1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/FLD1.tex b/manual/eqs/FLD1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/FLD2.tex b/manual/eqs/FLD2.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ICE1.tex b/manual/eqs/ICE1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ICE2.tex b/manual/eqs/ICE2.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ICE3.tex b/manual/eqs/ICE3.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ICE4.tex b/manual/eqs/ICE4.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/IG1.tex b/manual/eqs/IG1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/IS1.tex b/manual/eqs/IS1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/IS2.tex b/manual/eqs/IS2.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/LN1.tex b/manual/eqs/LN1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/NL1.tex b/manual/eqs/NL1.tex old mode 100644 new mode 100755 index c45e9294d..a6539dbe5 --- a/manual/eqs/NL1.tex +++ b/manual/eqs/NL1.tex @@ -1,92 +1,65 @@ +\vsssub +\subsubsection{~$S_{nl}$: Discrete Interaction Approximation (\dia)} \label{sec:NL1} +\vsssub -\noindent - - -Resonant nonlinear interactions occur between four wave components -(quadruplets) with wavenumber vector $\bk$, $\bk_1$, $\bk_2$ and $\bk_3$ are such that -% eq:resonance -\begin{equation} \left . -\begin{array}{ccc} - \bk + \bk_1 & = & \bk_2 + \bk_3 \\ - f_r + f_{r,1}& =& f_{r,2} + f_{r,3} -\end{array} \:\:\: \right \rbrace \:\:\: , \label{eq:resonance} -\end{equation} +\opthead{NL1}{\wam\ model}{H. L. Tolman} -Nonlinear 4-wave interaction theories were +\noindent +Nonlinear wave-wave interactions can be modeled using the discrete interaction +approximation \citep[\dia,][]{art:Hea85b}. This parameterization was originally developed for the spectrum $F(f_r ,\theta)$. To assure the conservative nature of $S_{nl}$ for this spectrum (which can be considered as the "final product" of the model), this source term is calculated for $F(f_r,\theta)$ instead of $N(k,\theta)$, using the conversion (\ref{eq:jac_fr}). -\vsssub -\subsubsection{~$S_{nl}$: Discrete Interaction Approximation (\dia)} \label{sec:NL1} -\vsssub - -\opthead{NL1}{\wam\ model}{H. L. Tolman} - - - - In the \dia, for each component $\bk$, only 2 quadruplets configuration are -used, while there should be thousands for the full integral, and the interaction caused by these 2 quadruplets -is scaled so that it gives the right order of magnitude for the flux of energy towards low frequencies. - -Both quadruplets used the DIA use +Resonant nonlinear interactions occur between four wave components +(quadruplets) with wavenumber vector $\bk_1$ through $\bk_4$. In the \dia, it +is assumed that $\bk_1 = \bk_2$. Resonance conditions then require that +%--------------------------% +% Resonance conditions DIA % +%--------------------------% % eq:resonance \begin{equation} \left . \begin{array}{ccc} - \bk_1 & = & \bk\\ - f_{r,2} & = & (1+\lambda)f_{r} \\ - f_{r,3} & = & (1-\lambda)f_{r} -\end{array} \:\:\: \right \rbrace \:\:\: , \label{eq:DIAchoice} -\end{equation} -where $\lambda$ is a constant, usually 0.25, and they only differ by the choice of the interacting angles -taking either a plus sign or a minus sign in the following -\begin{equation} \left . -\begin{array}{ccc} - \theta_{2,\pm} & = & \theta \pm \delta_{\theta,2} \\ - \theta_{3,\pm} & = & \theta \mp \delta_{\theta,3} \\ - \end{array} \:\:\: \right \rbrace \:\:\: , \label{eq:DIAangles} + \bk_1 + \bk_2 & = & \bk_3 + \bk_4 \\ + \sigma_2 & = & \sigma_1 \\ + \sigma_3 & = & (1+\lambda_{nl})\sigma_1 \\ + \sigma_4 & = & (1-\lambda_{nl})\sigma_1 +\end{array} \:\:\: \right \rbrace \:\:\: , \label{eq:resonance} \end{equation} -where $\delta_{\theta,2}$ and $\delta_{\theta,3}$ are only a function of $\lambda$ given by the geometry of -the interacting wavenumbers along the "figure of 8", namely -\begin{eqnarray} -\cos(\delta_{\theta,2})&=&(1-\lambda)^4+4-(1+\lambda)^4)/[4(1-\lambda)^2], \\ -\sin(\delta_{\theta,3})&=&\sin(\delta_{\theta,2}) (1-\lambda)^2/(1+\lambda)^2. -\end{eqnarray} - -Hence for any $\bk$ one quadruplet selects $\bk_{2,+}$ and $\bk_{3,+}$, and the other quadruplet selects its mirror image -$\bk_{2,-}$, $\bk_{2,-}$. Because there are 3 different components interacting in the two DIA-selected quadruplets, any discrete spectral component $(f_r,\theta)$ is actually involved in 6 quadruplets and directly exchanges energy with 12 other components $(f_r',\theta')$. Because the values of $f'_r$ and $\theta'$ do not fall exacly on other discrete components, the spectral density is interpolated using a bilinear interpolation, so that each source term value -$S_{nl}(\bk)$ contains the direct exchange of energy with 48 other discrete components. -we compute the three contributions that correspond to the situation in which $\bk$ takes the role of $\bk$,$\bk_{2,+}$, $\bk_{2,-}$, $\bk_{3,+}$ and $\bk_{3,-}$ in the quadruplet, namely the full source term is, without making explicit that bilinear interpolation, -\begin{eqnarray} -S_{\mathrm{nl}}(\bk) &=& -2 \left[\delta S_{\mathrm{nl}}(\bk,\bk_{2,+},\bk_{3,+})+\delta S_{\mathrm{nl}}(\bk,\bk_{2,-},\bk_{3,-})\right] \nonumber \\ - & & + \delta S_{\mathrm{nl}}(\bk_4,\bk,\bk_5) + \delta S_{\mathrm{nl}}(\bk_6,\bk,\bk_7) \\ - & & + \delta S_{\mathrm{nl}}(\bk_8,\bk_9,\bk) + \delta S_{\mathrm{nl}}(\bk_{10},\bk_{11},\bk) . \label{eq:diasum} -\end{eqnarray} -where the geometry of the quadruplet $(\bk_4,\bk_4,\bk,\bk_5)$ is obtained from that of $(\bk,\bk,\bk_{2,+},\bk_{3,+})$ by a dilation by a factor $(1+\lambda)^2$ and rotation by the angle $\delta_{\theta,2}$; $(\bk_6,\bk_6,\bk,\bk_7)$ has the same dilation but the opposite rotation; $(\bk_8,\bk_8,\bk_9,\bk)$ is dilated by a factor $(1-\lambda)^2$ and rotated by the angle $-\delta_{\theta,3}$: and $(\bk_{10},\bk_{10},\bk_{11},\bk)$ is dilated by the same factor and rotated by the opposite angle. - - -The elementary contributions $\delta S_{\mathrm{nl}}(\bk_l,\bk_m,\bk_n)$ are given by +where $\lambda_{nl}$ is a constant. For these quadruplets, the contribution +$\delta S_{nl}$ to the interaction for each discrete $(f_r,\theta)$ +combination of the spectrum corresponding to $\bk_1$ is calculated as %----------------------------% % Nonlinear interactions DIA % %----------------------------% % eq:snl_dia - -\begin{equation} -\delta S_{\mathrm{nl}}(\bk_l,\bk_m,\bk_n) = \frac{C}{g^4} f_{r,l}^{11} \left [ F_l^2 \left ( \frac{F_m}{(1+\lambda)^4} + - \frac{F_n}{(1-\lambda)^4} \right ) - \frac{2 F_l F_m F_n}{(1-\lambda^2)^4} \right] , - \label{eq:snl_dia} -\end{equation} -where the spectral densities are $F_l = F(f_{r,l} ,\theta_l)$, etc. - $C$ is a proportionality constant that was tuned to reproduce the inverse energy cascade. Default values for different source term packages are presented in Table~\ref{tab:snl_par}. +\begin{eqnarray} +\left ( \begin{array}{c} + \delta S_{nl,1} \\ \delta S_{nl,3} \\ \delta S_{nl,4} +\end{array} \right ) & = & D +\left ( \begin{array}{r} -2 \\ 1 \\ 1 \end{array} \right ) +C g^{-4} f_{r,1}^{11} \times \nonumber \\ +& & \left [ F_1^2 +\left ( \frac{F_3}{(1+\lambda_{nl})^4} + + \frac{F_4}{(1-\lambda_{nl})^4} \right ) - +\frac{2 F_1 F_3 F_4}{(1-\lambda_{nl}^2)^4} +\right ] \: , \label{eq:snl_dia} +\end{eqnarray} +where $F_1 = F(f_{r,1} ,\theta_1 )$ etc. and $\delta S_{nl,1} = \delta +S_{nl}(f_{r,1} ,\theta_1 )$ etc., $C$ is a proportionality constant. The +nonlinear interactions are calculated by considering a limited number of +combinations $(\lambda_{nl},C)$. In practice, only one combination is +used. Default values for different source term packages are presented in +Table~\ref{tab:snl_par}. % tab:snl_par \begin{table} \begin{center} \begin{tabular}{|l|c|c|} \hline - & $\lambda$ & $C$ \\ \hline + & $\lambda_{nl}$ & $C$ \\ \hline ST6 & 0.25 & $3.00 \; 10^7$ \\ \hline \wam-3 & 0.25 & $2.78 \; 10^7$ \\ \hline ST4 (Ardhuin et al.)& 0.25 & $2.50 \; 10^7$ \\ \hline @@ -95,7 +68,7 @@ \subsubsection{~$S_{nl}$: Discrete Interaction Approximation (\dia)} \label{sec: \caption{Default constants in \dia\ for input-dissipation packages.} \label{tab:snl_par} \botline \end{table} -This parameterization was developed for deep water, using the appropriate dispersion +This source term is developed for deep water, using the appropriate dispersion relation in the resonance conditions. For shallow water the expression is scaled by the factor $D$ (still using the deep-water dispersion relation, however) @@ -159,37 +132,3 @@ \subsubsection{~$S_{nl}$: Discrete Interaction Approximation (\dia)} \label{sec: above constants can be reset by the user in the input files of the model (see \para\ref{sub:ww3grid}). -\vsssub -\subsubsection{~$S_{nl}$: Gaussian Quadrature Method (\dia)} \label{sec:GQM} -\vsssub - -\opthead{NL1 , but with a negative IQTYPE}{TOMAWAC model, M. Benoit}{adaptation to WW3 by S. Siadatmousavi \& F. Ardhuin} - -\noindent -Changing the namelist parameter IQTYPE to a negative value replaces the -DIA parameterization with the possibility to perform an exact but fast cal- -culation of $S_{\mathrm{nl}}$ using the Gaussian Quadrature Method of \cite{Lavrenov2001}. -More details can be found in \cite{Gagnaire-Renou2009}. - - -The quadruplet configurations that are used correspond to the three integrals over $f_1$, $f_2$ and $\theta_1$, with all other frequencies and directions given by the resonance conditions (\ref{eq:resonance}) with only one ambiguity on the angle $\theta_2$ which can be defined by a sign index $s$, as in the DIA. Starting from eq. (A4) in \cite{Lavrenov2001} as writen in (2.25) of \cite{Gagnaire-Renou2009}, the source term is -\begin{equation} -S_{\mathrm{nl}}(\sigma,\theta) = 8 \sum_s \int_{\sigma_1=0}^\infty \int_{\theta_1=0}^{2 \pi} \int_{\sigma_2=0}^{(\sigma+\sigma_1)/2} T \frac{F_2 F_3 (F \sigma_1^4 + F_1 \sigma^4) - F F_1 (F_2 \sigma_3^4 + F_3 \sigma_2^4)}{\sqrt{B}\sqrt{((\left| \bk+\bk_1 \right|/g- \sigma_3^2)^2-\sigma_2^4} } {\mathrm d}\sigma_1 {\mathrm d}\theta_1 {\mathrm d}\sigma_2 , - \label{eq:snl_gqm} -\end{equation} -where $B$ is given by eq. (A5) of Lavrenov (2001) and -\begin{equation} -T(\bk,\bk_1,\bk_2,\bk_3) = \frac{\pi g^2 D^2(\bk,\bk_1,\bk_2,\bk_3) }{4 \sigma \sigma_1 \sigma_2 \sigma_3} -\end{equation} -where $ D(\bk,\bk_1,\bk_2,\bk_3)$ is given by \cite{Webb1978} in his eq. (A1). - -This triple integral is performed using quadrature functions to best resolve the effect of the singularities in the denominator. It is thus replaced with weighted sums over the 3 dimensions. - -Compared to the DIA, there is no bilinear interpolation and the nearest neighbor is used in frequency and direction. Also, -the source term is computed by a loop over the quadruplet configuration, which allows for filtering based on -both the value of the coupling coefficient and the energy level at the frequency corresponding to $\bk$. Within -that loop, the source term contribution is computed for all 4 interacting components, so that any filtering still -conserves energy, action, momentum ... (One may argue that this multiplies by 4 the number of calculations, but it may have the benefit of properly dealing with the high frequency boundary... this is to be verified. The same question arises for the DIA: why have the wavenumber $\bk$ play the role of the other members of the quadruplets when this will also be computed as we loop on the spectral components?). - -If a very aggressive filtering is performed, the source may need to be rescaled. - diff --git a/manual/eqs/NL2.tex b/manual/eqs/NL2.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/NL3.tex b/manual/eqs/NL3.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/NL4.tex b/manual/eqs/NL4.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/NL5.tex b/manual/eqs/NL5.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/NLS.tex b/manual/eqs/NLS.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/REF1.tex b/manual/eqs/REF1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ST1.tex b/manual/eqs/ST1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ST2.tex b/manual/eqs/ST2.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ST3.tex b/manual/eqs/ST3.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ST4.tex b/manual/eqs/ST4.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ST5.tex b/manual/eqs/ST5.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/ST6.tex b/manual/eqs/ST6.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/TR1.tex b/manual/eqs/TR1.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/UOST.eps b/manual/eqs/UOST.eps old mode 100644 new mode 100755 diff --git a/manual/eqs/UOST.tex b/manual/eqs/UOST.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/XXn.tex b/manual/eqs/XXn.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/airseaprocesses.tex b/manual/eqs/airseaprocesses.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/derived.tex b/manual/eqs/derived.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/intro.tex b/manual/eqs/intro.tex old mode 100644 new mode 100755 diff --git a/manual/eqs/output.tex b/manual/eqs/output.tex old mode 100644 new mode 100755 index bfa7e0b5a..1f512b16a --- a/manual/eqs/output.tex +++ b/manual/eqs/output.tex @@ -12,9 +12,9 @@ \subsection{~Output parameters} \label{sub:outpars} in \para\ref{sec:ww3shel}. That input file also provides a list of flags indicating if output parameters are available in different field output file types (ASCII, grib, igrads, NetCDF). -For any details on how these parameters are computed, the user may read the code of the {\code w3iogo} routine, in the {\code w3iogomd.F90} module. +For any details on how these parameters are computed, the user may read the code of the {\code w3iogo} routine, in the {\code w3iogomd.ftn} module. -Selection of field outputs in {\code ww3\_shel.nml} or {\code ww3\_shel.inp} is most easily performed by providing a list of the +Selection of field outputs in {\code ww3\_shel.inp} is most easily performed by providing a list of the requested parameters, for example, {\textbf HS DIR SPR} will request the calculation of significant wave height, mean direction and directional spread. These will thus be stored in the {\code out\_grd.XX} file and can be post-processed, for example in NetCDF using {\code ww3\_ouf}. Examples are given in \para\ref{sec:ww3multi} and \para\ref{sec:ww3ounf}. The names for these namelists are the bold names below, for example \textbf{HS}. @@ -26,9 +26,6 @@ \subsection{~Output parameters} \label{sub:outpars} file extensions, NetCDF variable names and namelist-based selection (see also \para\ref{sec:ww3ounf}), and the long parameter name/definition. -When the result is not overly sensitive to the contribution of the unresolved part of the spectrum (for $f ad3.out 2>&1 if [ -n "`grep error ad3.out`" ] @@ -449,12 +436,6 @@ 'W3OUNFMETAMD' ) modtest=w3ounfmetamd.o ;; 'W3METAMD' ) modtest=w3metamd.o ;; 'W3GRIDMD' ) modtest=w3gridmd.o ;; - 'wav_kind_mod' ) modtest=wav_kind_mod.o ;; - 'wav_shr_mod' ) modtest=wav_shr_mod.o ;; - 'wav_shel_inp' ) modtest=wav_shel_inp.o ;; - 'wav_comp_nuopc' ) modtest=wav_comp_nuopc.o ;; - 'wav_import_export' ) modtest=wav_import_export.o ;; - 'w3iogoncdmd' ) modtest=w3iogoncdmd.o ;; * ) modfound=no ;; esac diff --git a/model/bin/switch_Ifremer1 b/model/bin/switch_Ifremer1 old mode 100644 new mode 100755 diff --git a/model/bin/switch_Ifremer2 b/model/bin/switch_Ifremer2 old mode 100644 new mode 100755 diff --git a/model/bin/switch_Ifremer2_pdlib b/model/bin/switch_Ifremer2_pdlib old mode 100644 new mode 100755 diff --git a/model/bin/switch_NCEP_glwu b/model/bin/switch_NCEP_glwu old mode 100644 new mode 100755 diff --git a/model/bin/switch_NCEP_gwm b/model/bin/switch_NCEP_gwm old mode 100644 new mode 100755 diff --git a/model/bin/switch_NCEP_st2 b/model/bin/switch_NCEP_st2 old mode 100644 new mode 100755 diff --git a/model/bin/switch_NCEP_st4 b/model/bin/switch_NCEP_st4 old mode 100644 new mode 100755 diff --git a/model/bin/switch_NCEP_st4sbs b/model/bin/switch_NCEP_st4sbs old mode 100644 new mode 100755 diff --git a/model/bin/switch_NRL1 b/model/bin/switch_NRL1 old mode 100644 new mode 100755 diff --git a/model/bin/switch_NRL2 b/model/bin/switch_NRL2 old mode 100644 new mode 100755 diff --git a/model/bin/switch_NRL3 b/model/bin/switch_NRL3 old mode 100644 new mode 100755 diff --git a/model/bin/switch_NRL4 b/model/bin/switch_NRL4 old mode 100644 new mode 100755 diff --git a/model/bin/switch_OASACM b/model/bin/switch_OASACM old mode 100644 new mode 100755 diff --git a/model/bin/switch_OASICM b/model/bin/switch_OASICM old mode 100644 new mode 100755 diff --git a/model/bin/switch_OASOCM b/model/bin/switch_OASOCM old mode 100644 new mode 100755 diff --git a/model/bin/switch_SMCMlt b/model/bin/switch_SMCMlt old mode 100644 new mode 100755 diff --git a/model/bin/switch_UKMO b/model/bin/switch_UKMO old mode 100644 new mode 100755 diff --git a/model/bin/switch_UKMO_gbl b/model/bin/switch_UKMO_gbl old mode 100644 new mode 100755 diff --git a/model/bin/switch_UKMO_reg b/model/bin/switch_UKMO_reg old mode 100644 new mode 100755 diff --git a/model/bin/switch_UKMO_uk b/model/bin/switch_UKMO_uk old mode 100644 new mode 100755 diff --git a/model/bin/switch_USACE_1 b/model/bin/switch_USACE_1 old mode 100644 new mode 100755 diff --git a/model/bin/switch_USACE_2 b/model/bin/switch_USACE_2 old mode 100644 new mode 100755 diff --git a/model/bin/switch_UoM_nl1 b/model/bin/switch_UoM_nl1 old mode 100644 new mode 100755 diff --git a/model/bin/switch_UoM_nl3 b/model/bin/switch_UoM_nl3 old mode 100644 new mode 100755 diff --git a/model/bin/switch_UoM_nl3s b/model/bin/switch_UoM_nl3s old mode 100644 new mode 100755 diff --git a/model/bin/switch_ite_pdlib b/model/bin/switch_ite_pdlib old mode 100644 new mode 100755 diff --git a/model/bin/switch_meshcap b/model/bin/switch_meshcap deleted file mode 100644 index 7a11c569b..000000000 --- a/model/bin/switch_meshcap +++ /dev/null @@ -1 +0,0 @@ -NCO NOGRB DIST MPI OMPG OMPH PIO PR3 UQ FLX0 SEED ST4 STAB0 NL1 BT1 DB1 MLIM FLD2 TR0 BS0 RWND WNX1 WNT1 CRX1 CRT1 O0 O1 O2 O3 O4 O5 O6 O7 O14 O15 IC0 IS0 REF0 diff --git a/model/bin/switch_meshcap_pdlib b/model/bin/switch_meshcap_pdlib deleted file mode 100644 index 275127910..000000000 --- a/model/bin/switch_meshcap_pdlib +++ /dev/null @@ -1 +0,0 @@ -NCO PDLIB SCOTCH SCRIP SCRIPNC NOGRB DIST MPI PIO PR3 UQ FLX0 SEED ST4 STAB0 NL1 BT1 DB1 MLIM FLD2 TR0 BS0 RWND WNX1 WNT1 CRX1 CRT1 O0 O1 O2 O3 O4 O5 O6 O7 O14 O15 IC0 IS0 REF0 diff --git a/model/bin/switch_meshcap_pdlib_bt4 b/model/bin/switch_meshcap_pdlib_bt4 deleted file mode 100644 index c666707bd..000000000 --- a/model/bin/switch_meshcap_pdlib_bt4 +++ /dev/null @@ -1 +0,0 @@ -NCO PDLIB SCOTCH NOGRB DIST MPI PIO PR3 UQ FLX0 SEED ST4 STAB0 NL1 BT4 DB1 MLIM FLD2 TR0 BS0 RWND WNX1 WNT1 CRX1 CRT1 O0 O1 O2 O3 O4 O5 O6 O7 O14 O15 IC0 IS0 REF0 diff --git a/model/bin/switch_multi_esmf b/model/bin/switch_multi_esmf old mode 100644 new mode 100755 diff --git a/model/bin/switch_swin b/model/bin/switch_swin old mode 100644 new mode 100755 diff --git a/model/bin/switch_ugdev2 b/model/bin/switch_ugdev2 old mode 100644 new mode 100755 diff --git a/model/bin/w3_make b/model/bin/w3_make index 46035e4c5..aacc2f82c 100755 --- a/model/bin/w3_make +++ b/model/bin/w3_make @@ -201,16 +201,8 @@ if [ -n "`grep OASIS $switch_file`" ] || [ -n "`grep PDLIB $switch_file`" ] then cdf_programs="$cdf_programs ww3_shel" - if [ $ESMFMKFILE ] - then - cdf_programs="$cdf_programs ww3_shel_esmf" - fi else reg_programs="$reg_programs ww3_shel" - if [ $ESMFMKFILE ] - then - reg_programs="$reg_programs ww3_shel_esmf" - fi fi #Shared Object diff --git a/model/bin/w3_setup b/model/bin/w3_setup index 790c9c23a..fa2aa2e6b 100755 --- a/model/bin/w3_setup +++ b/model/bin/w3_setup @@ -318,6 +318,7 @@ then [ "$cmplr" == "intel" ] || [ "$cmplr" == "intel_debug" ] || \ [ "$cmplr" == "so_intel" ] || [ "$cmplr" == "so_intel_debug" ] || \ [ "$cmplr" == "datarmor_intel" ] || [ "$cmplr" == "datarmor_intel_debug" ] || \ + [ "$cmplr" == "gfortran" ] || \ [ "$cmplr" == "gnu" ] || [ "$cmplr" == "gnu_debug" ] || \ [ "$cmplr" == "hera.intel" ] || [ "$cmplr" == "orion.intel" ] || \ [ "$cmplr" == "hera.gnu" ] || [ "$cmplr" == "jet.intel" ] || \ @@ -349,6 +350,7 @@ then [ "$cmplr" == "intel" ] || [ "$cmplr" == "intel_debug" ] || \ [ "$cmplr" == "so_intel" ] || [ "$cmplr" == "so_intel_debug" ] || \ [ "$cmplr" == "datarmor_intel" ] || [ "$cmplr" == "datarmor_intel_debug" ] || \ + [ "$cmplr" == "gfortran" ] || \ [ "$cmplr" == "gnu" ] || [ "$cmplr" == "gnu_debug" ] || \ [ "$cmplr" == "hera.intel" ] || [ "$cmplr" == "orion.intel" ] || \ [ "$cmplr" == "hera.gnu" ] || [ "$cmplr" == "jet.intel" ] || \ diff --git a/model/ci/README.md b/model/ci/README.md old mode 100644 new mode 100755 diff --git a/model/ci/spack_gnu.yaml b/model/ci/spack_gnu.yaml old mode 100644 new mode 100755 index d2c16711a..5f1ca3a47 --- a/model/ci/spack_gnu.yaml +++ b/model/ci/spack_gnu.yaml @@ -13,8 +13,7 @@ spack: - g2@3.4.5 - bacio@2.4.1 - w3emc@2.9.2 - - parallelio@2.5.9+fortran~pnetcdf - - esmf@8.4.2~debug~xerces+external-parallelio + - esmf@8.1.1~pio~pnetcdf~xerces view: true concretizer: unify: when_possible diff --git a/model/ci/spack_intel.yaml b/model/ci/spack_intel.yaml old mode 100644 new mode 100755 index c571da825..ee09d8827 --- a/model/ci/spack_intel.yaml +++ b/model/ci/spack_intel.yaml @@ -5,17 +5,16 @@ spack: providers: mpi: [intel-oneapi-mpi] specs: - - netcdf-c@4.7.4~dap - - netcdf-fortran@4.5.3 - - bacio@2.4.1 - - g2@3.4.5 - metis@5.1.0~shared - parmetis@4.0.3~shared - scotch@7.0.1+mpi+metis~shared + - netcdf-c@4.7.4~dap + - netcdf-fortran@4.5.3 - jasper@2.0.32 + - g2@3.4.5 + - bacio@2.4.1 - w3emc@2.9.2 - - parallelio@2.5.9+fortran~pnetcdf - - esmf@8.4.2~debug~xerces+external-parallelio + - esmf@8.1.1~pio~pnetcdf~xerces - intel-oneapi-mpi %intel view: true concretizer: diff --git a/model/esmf/Makefile b/model/esmf/Makefile old mode 100644 new mode 100755 index 9f5862350..d09482bc5 --- a/model/esmf/Makefile +++ b/model/esmf/Makefile @@ -100,9 +100,6 @@ ww3_nems: env setup gout switch ww3_nemslibonly: env setup switch $(WW3_BINDIR)/w3_make ww3_multi_esmf -ww3_nuopclibonly: env setup switch - $(WW3_BINDIR)/w3_make ww3_shel_esmf - ww3_multi_esmf: esmApp.o $(DEP_LINK_OBJS) $(ESMF_F90LINKER) $(ESMF_F90LINKOPTS) -o $(EXE) $^ \ $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) $(ESMF_F90ESMFLINKLIBS) diff --git a/model/esmf/README b/model/esmf/README old mode 100644 new mode 100755 diff --git a/model/esmf/concomp.F90 b/model/esmf/concomp.F90 old mode 100644 new mode 100755 diff --git a/model/esmf/dum.F90 b/model/esmf/dum.F90 old mode 100644 new mode 100755 diff --git a/model/esmf/esm.F90 b/model/esmf/esm.F90 old mode 100644 new mode 100755 diff --git a/model/esmf/esmApp.F90 b/model/esmf/esmApp.F90 old mode 100644 new mode 100755 diff --git a/model/esmf/macros.h b/model/esmf/macros.h old mode 100644 new mode 100755 diff --git a/model/esmf/mdl.F90 b/model/esmf/mdl.F90 old mode 100644 new mode 100755 diff --git a/model/esmf/switch b/model/esmf/switch old mode 100644 new mode 100755 diff --git a/model/esmf/utl.F90 b/model/esmf/utl.F90 old mode 100644 new mode 100755 diff --git a/model/inp/gx_outf.inp b/model/inp/gx_outf.inp old mode 100644 new mode 100755 diff --git a/model/inp/gx_outp.inp b/model/inp/gx_outp.inp old mode 100644 new mode 100755 diff --git a/model/inp/ounfmeta_legacy.inp b/model/inp/ounfmeta_legacy.inp old mode 100644 new mode 100755 diff --git a/model/inp/track_i.ww3 b/model/inp/track_i.ww3 old mode 100644 new mode 100755 diff --git a/model/inp/ww3_bounc.inp b/model/inp/ww3_bounc.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_bound.inp b/model/inp/ww3_bound.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_gint.inp b/model/inp/ww3_gint.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_grib.inp b/model/inp/ww3_grib.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_grid.inp b/model/inp/ww3_grid.inp old mode 100644 new mode 100755 index ef4812211..b802c6717 --- a/model/inp/ww3_grid.inp +++ b/model/inp/ww3_grid.inp @@ -102,18 +102,6 @@ $ KDCONV : Factor before kd in Eq. (n.nn). $ KDMIN, SNLCS1, SNLCS2, SNLCS3 : $ Minimum kd, and constants c1-3 $ in depth scaling function. -$ IQTYPE : Type of depth treatment -$ -2 : Deep water GQM with scaling -$ 1 : Deep water DIA -$ 2 : Deep water DIA with scaling -$ 3 : Shallow water DIA -$ TAILNL : Parametric tail power. -$ GQMNF1 : number of points along the locus -$ GQMNT1 : idem -$ GQMNQ_OM2 : idem -$ GQMTHRSAT : threshold on saturation for SNL calculation -$ GQMTHRCOU : threshold for filter on coupling coefficient -$ GQAMP1, GQAMP2, GQAMP3, GQAMP4 : amplification factor $ Exact interactions : Namelist SNL2 $ IQTYPE : Type of depth treatment $ 1 : Deep water @@ -317,25 +305,25 @@ $ limitation and the GSE alleviation. $ $ Unstructured grids ------------------------------------------------ $ $ UNST parameters : Namelist UNST -$ UGBCCFL : Turns on/off (TRUE/FALSE) the computation of the CFL number on the physical domain boundary. +$ UGBCCFL : Turns on/off (TRUE/FALSE) the computation of the CFL number on the physical domain boundary. $ If FALSE the explicit scheme can be much faster though stability is not guaranteed $ (default TRUE) $ UGOBCAUTO : TRUE: OBC points are taken from type 15 elements (default) $ FALSE: OBC points must be listed in ww3_grid.inp $ UGOBCDEPTH : Threshold ( < 0) depth (default -10) for OBC points if UGOBCAUTO is TRUE -$ UGOBCFILE : File name of file for reading boudary (default 'unset') +$ UGOBCFILE : File name of file for reading boudary (default 'unset') $ -$ The following are TRUE/FALSE variables and only one can be TRUE. -$ By default, EXPFSN is TRUE and must be set to false to activate another option +$ The following are TRUE/FALSE variables and only one can be TRUE. +$ By default, EXPFSN is TRUE and must be set to false to activate another option $ EXPFSN : Activation of N scheme (default option) $ EXPFSPSI : Activation of PSI scheme $ EXPFSFCT : Activation of FCT scheme $ IMPFSN : Activation of N implicit scheme $ EXPTOTAL : Activation of Block explicit N scheme solver $ IMPTOTAL : Activation of fully implicit scheme, non splitting -$ +$ $ The following TRUE/FALSE variables are only for IMPTOTAL=TRUE -$ IMPREFRACTION : Turn on implicit freq. shift (default FALSE) +$ IMPREFRACTION : Turn on implicit freq. shift (default FALSE) $ IMPFREQSHIFT : Turn on implicit freq. shift terms (default FALSE) $ IMPSOURCE : Turn on implicit source terms (default FALSE) $ @@ -344,17 +332,17 @@ $ JGS_TERMINATE_DIFFERENCE : Terminate based on the t $ JGS_TERMINATE_NORM : Terminate based on the norm of the solution (TRUE/FALSE, default FALSE) $ JGS_USE_JACOBI : Use Jacobi solver family (TRUE/FALSE, default TRUE) $ JGS_BLOCK_GAUSS_SEIDEL : Use Block Gauss Seidel method for imptotal instead of the conservative jacobi iterator. (TRUE/FALSE, default TRUE) -$ JGS_MAXITER : Max. Number of solver iterations for JGS_TERMINATE_MAXITER (integer, default 100) -$ JGS_PMIN : % of grid points that do not need to converge during solver iteration (real, default 1) +$ JGS_MAXITER : Max. Number of solver iterations for JGS_TERMINATE_MAXITER (integer, default 100) +$ JGS_PMIN : % of grid points that do not need to converge during solver iteration (real, default 1) $ JGS_DIFF_THR : Implicit solver threshold for JGS_TERMINATE_DIFFERENCE (real, default 1.0e-10) $ JGS_NORM_THR : Norm of the solution for JGS_TERMINATE_NORM (real, default 1.0e-20) $ JGS_LIMITER : TRUE: Use total (quasi-steady: limits whole equation) instead of local limiter (un-steady: limits only source terms) -$ FALSE: default +$ FALSE: default $ JGS_LIMITER_FUNC : 1 - old limiter (default) $ 2 - alternatnive limiter -$ SETUP_APPLY_WLV : Compute wave setup (TRUE/FALSE, default TRUE) +$ SETUP_APPLY_WLV : Compute wave setup (TRUE/FALSE, default TRUE) $ SOLVERTHR_SETUP : Solver threshold for setup computations (default 1E-6) -$ CRIT_DEP_SETUP : Critical depth for setup computations (default 0.1) +$ CRIT_DEP_SETUP : Critical depth for setup computations (default 0.1) $ $ SMC grid propagation : Namelist PSMC and default values @@ -446,33 +434,6 @@ $ provides 3 partitions of both x & y component, $ with a reasonable accuracy for using in $ a climate model. $ -$ Langmuir turbulence parameterization ------------------------------- $ -$ The LMPN namelist group configures the Langmuir Mixing -$ Parameterization used within the context of climate modeling and -$ when WW3 is coupled to an active ocean model (.e.g., POP2, MOM6). -$ The LMPENABLED flag turns on the parameterization computations. -$ The SDTAIL flag enables the spectral tail contribution. HSLMODE -$ parameter determines the surface layer depth (HSL). -$ -$ Input parameters : Namelist LMPN -$ LMPENABLED : Logical controlling Langmuir -$ related computations. -$ T : Activates calculations -$ F : Calculations off (default) -$ SDTAIL : Logical controlling addition of -$ tail contribution. -$ T : Tail added to Stokes -$ drift (LMPENABLED=T also). -$ F : No tail added (default) -$ HSLMODE : Integer indicating surface layer -$ depth (HSL) type. -$ 0 : Uniform HSL=10m (default) -$ 1 : HSL from coupler -$ -$ For more info on the Langmuir parameterization, see: -$ Li, Qing, et al. "Langmuir mixing effects on global climate: -$ WAVEWATCH III in CESM." Ocean Modelling 103 (2016): 145-160. -$ $ Miscellaneous ------------------------------------------------------ $ $ Misc. parameters : Namelist MISC $ CICE0 : Ice concentration cut-off. diff --git a/model/inp/ww3_gspl.inp b/model/inp/ww3_gspl.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_multi.inp b/model/inp/ww3_multi.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_ounf.inp b/model/inp/ww3_ounf.inp old mode 100644 new mode 100755 index 8505a4233..7bde30754 --- a/model/inp/ww3_ounf.inp +++ b/model/inp/ww3_ounf.inp @@ -15,7 +15,7 @@ $ $ DPT CUR WND AST WLV ICE IBG TAU RHO D50 IC1 IC5 HS LM T02 T0M1 T01 FP $ DIR SPR DP HIG EF TH1M STH1M TH2M STH2M WN PHS PTP PLP PDIR PSPR PWS PDP $ PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR UST CHA CGE FAW TAW TWA WCC -$ WCF WCH WCM SXY TWO BHD FOC TUS USS USSH P2S USF P2L TWI FIC ABR UBR BED +$ WCF WCH WCM SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC ABR UBR BED $ FBB TBB MSS MSC DTD FC CFX CFD CFK U1 U2 WNM TOC $ N diff --git a/model/inp/ww3_ounp.inp b/model/inp/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_outf.inp b/model/inp/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_outp.inp b/model/inp/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_prep.inp b/model/inp/ww3_prep.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_prnc.inp b/model/inp/ww3_prnc.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_prtide.inp b/model/inp/ww3_prtide.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_shel.inp b/model/inp/ww3_shel.inp old mode 100644 new mode 100755 index cd64c0c66..8eca9b58a --- a/model/inp/ww3_shel.inp +++ b/model/inp/ww3_shel.inp @@ -139,7 +139,6 @@ $ T T 2 15 HMAXD SDMH St Dev of MXC (STE) $ T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) $ F T 2 17 WBT WBT Dominant wave breaking probability bT $ F F 2 18 FP0 TP Peak period (from peak freq) -$ F F 2 19 WNMEAN WNM Mean wavenumber $ ------------------------------------------------- $ 3 Spectral Parameters (first 5) $ ------------------------------------------------- @@ -191,7 +190,7 @@ $ F F 6 2 TAUO[X,Y] TWO Wave to ocean momentum flux $ F F 6 3 BHD BHD Bernoulli head (J term) $ F F 6 4 PHIOC FOC Wave to ocean energy flux $ F F 6 5 TUS[X,Y] TUS Stokes transport -$ F F 6 6 USS[X,Y] USS Surface layer Stokes drift +$ F F 6 6 USS[X,Y] USS Surface Stokes drift $ F F 6 7 [PR,TP]MS P2S Second-order sum pressure $ F F 6 8 US3D USF Spectrum of surface Stokes drift $ F F 6 9 P2SMS P2L Micro seism source term @@ -199,7 +198,6 @@ $ F F 6 10 TAUICE TWI Wave to sea ice stress $ F F 6 11 PHICE FIC Wave to sea ice energy flux $ F F 6 12 USSP USP Partitioned surface Stokes drift $ F F 6 13 TAUOC[X,Y] TOC Total momentum to the ocean -$ F F 6 14 USSH[X,Y] USSH Surface layer averaged Stokes drift $ ------------------------------------------------- $ 7 Wave-bottom layer $ ------------------------------------------------- @@ -213,10 +211,10 @@ $ 8 Spectrum parameters $ ------------------------------------------------- $ F F 8 1 MSS[X,Y] MSS Mean square slopes $ F F 8 2 MSC[X,Y] MSC Spectral level at high frequency tail -! F F 8 3 MSSD MSD Slope direction -! F F 8 4 MSCD MCD Tail slope direction -! F F 8 5 QP QP Goda peakedness parameter -! F F 8 6 QKK QKK Wavenumber peakedness +$ F F 8 3 WL02[X,Y] WL02 East/X North/Y mean wavelength compon +$ F F 8 4 ALPXT AXT Correl sea surface gradients (x,t) +$ F F 8 5 ALPYT AYT Correl sea surface gradients (y,t) +$ F F 8 6 ALPXY AXY Correl sea surface gradients (x,y) $ ------------------------------------------------- $ 9 Numerical diagnostics $ ------------------------------------------------- @@ -259,8 +257,8 @@ $ UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS T T T T T T T T T T T $ (6) Wave-Ocean layer T -$ SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC USP TOC USSH - T T T T T T T F F F F T T T +$ SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC USP + T T T T T T T F F F F T $ (7) Wave-bottom layer T $ ABR UBR BED FBB TBB diff --git a/model/inp/ww3_strt.inp b/model/inp/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_systrk.inp b/model/inp/ww3_systrk.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_trck.inp b/model/inp/ww3_trck.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_trnc.inp b/model/inp/ww3_trnc.inp old mode 100644 new mode 100755 diff --git a/model/inp/ww3_uprstr.inp b/model/inp/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/model/nml/namelists.nml b/model/nml/namelists.nml old mode 100644 new mode 100755 index 390fdb874..7b373c71e --- a/model/nml/namelists.nml +++ b/model/nml/namelists.nml @@ -81,16 +81,6 @@ $ KDCONV : Factor before kd in Eq. (n.nn). $ KDMIN, SNLCS1, SNLCS2, SNLCS3 : $ Minimum kd, and constants c1-3 $ in depth scaling function. -$ IQTYPE : Type of depth treatment -$ -2 : Deep water GQM with scaling -$ 1 : Deep water DIA -$ 2 : Deep water DIA with scaling -$ 3 : Shallow water DIA -$ TAILNL : Parametric tail power. -$ GQMNF1, GQMNT1, GQMNQ_OM2 : Gaussian quadrature resolution -$ GQMTHRSAT : Threshold on saturation for SNL calculation -$ GQMTHRCOU : Threshold for filter on coupling coefficient -$ GQAMP1, GQAMP2, GQAMP3, GQAMP4 : Amplification factors $ Exact interactions : Namelist SNL2 $ IQTYPE : Type of depth treatment $ 1 : Deep water diff --git a/model/nml/ww3_bounc.nml b/model/nml/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/model/nml/ww3_bound.nml b/model/nml/ww3_bound.nml old mode 100644 new mode 100755 diff --git a/model/nml/ww3_grid.nml b/model/nml/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/model/nml/ww3_multi.nml b/model/nml/ww3_multi.nml old mode 100644 new mode 100755 index 9836884c1..6719a3510 --- a/model/nml/ww3_multi.nml +++ b/model/nml/ww3_multi.nml @@ -195,13 +195,13 @@ ! ! * the detailed list of field names is given in model/nml/ww3_shel.nml : ! DPT CUR WND AST WLV ICE IBG TAU RHO D50 IC1 IC5 -! HS LM T02 T0M1 T01 FP DIR SPR DP HIG MXE MXES MXH MXHC SDMH SDMHC WBT TP WNM +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG ! EF TH1M STH1M TH2M STH2M WN ! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR ! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS ! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC USP TOC ! ABR UBR BED FBB TBB -! MSS MSC MSD MCD QP QKK +! MSS MSC WL02 AXT AYT AXY ! DTD FC CFX CFD CFK ! U1 U2 ! diff --git a/model/nml/ww3_ounf.nml b/model/nml/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/model/nml/ww3_ounp.nml b/model/nml/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/model/nml/ww3_prnc.nml b/model/nml/ww3_prnc.nml old mode 100644 new mode 100755 diff --git a/model/nml/ww3_shel.nml b/model/nml/ww3_shel.nml old mode 100644 new mode 100755 index f6700ca8a..528b35c56 --- a/model/nml/ww3_shel.nml +++ b/model/nml/ww3_shel.nml @@ -129,7 +129,6 @@ ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Dominant wave breaking probability bT ! F F 2 18 FP0 TP Peak period (from peak freq) -! F F 2 19 WNMEAN WNM Mean wavenumber ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -202,10 +201,10 @@ ! ------------------------------------------------- ! F F 8 1 MSS[X,Y] MSS Mean square slopes ! F F 8 2 MSC[X,Y] MSC Spectral level at high frequency tail -! F F 8 3 MSSD MSD Slope direction -! F F 8 4 MSCD MCD Tail slope direction -! F F 8 5 QP QP Goda peakedness parameter -! F F 8 6 QKK QKK Wavenumber peakedness +! F F 8 3 WL02[X,Y] WL02 East/X North/Y mean wavelength compon +! F F 8 4 ALPXT AXT Correl sea surface gradients (x,t) +! F F 8 5 ALPYT AYT Correl sea surface gradients (y,t) +! F F 8 6 ALPXY AXY Correl sea surface gradients (x,y) ! ------------------------------------------------- ! 9 Numerical diagnostics ! ------------------------------------------------- diff --git a/model/nml/ww3_trnc.nml b/model/nml/ww3_trnc.nml old mode 100644 new mode 100755 diff --git a/model/nml/ww3_uprstr.nml b/model/nml/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/model/src/CMakeLists.txt b/model/src/CMakeLists.txt old mode 100644 new mode 100755 index a399b00e8..fb64f9fe4 --- a/model/src/CMakeLists.txt +++ b/model/src/CMakeLists.txt @@ -1,3 +1,4 @@ + # Open switch file file(STRINGS ${CMAKE_BINARY_DIR}/switch switch_strings) separate_arguments(switches UNIX_COMMAND ${switch_strings}) @@ -65,26 +66,11 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_C_ARCHIVE_FINISH " -c ") endif() -elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(IntelLLVM)$") - set(compile_flags -no-fma -g -traceback -i4 -real-size 32 -fp-model precise -assume byterecl -fno-alias) - set(compile_flags_release -O3) - # SHELL: prefix fixes CMake attempting to de-duplicate the repeated uses of 'all' in -warn, -debug, -check - # See https://cmake.org/cmake/help/latest/command/target_compile_options.html#option-de-duplication - set(compile_flags_debug -O0 "SHELL:-debug all" "SHELL:-warn all" "SHELL:-check all" -check noarg_temp_created -fp-stack-check -heap-arrays -traceback -fpe0) - - if(APPLE) - # The linker on macOS does not include `common symbols` (usually module variables without a default value) by default - # Passing the -c flag includes them and fixes an error with undefined symbols - # Only ifort marks these symbols as common, compared to GCC - set(CMAKE_Fortran_ARCHIVE_FINISH " -c ") - set(CMAKE_C_ARCHIVE_FINISH " -c ") - endif() - elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(compile_flags -g -fno-second-underscore -ffree-line-length-none) set(compile_flags_release -O3) set(compile_flags_debug -Wall -fcheck=all -ffpe-trap=invalid,zero,overflow -frecursive -fbacktrace) - + if(${CMAKE_Fortran_COMPILER_VERSION} VERSION_GREATER_EQUAL 10) target_compile_options(ww3_lib PUBLIC -fallow-argument-mismatch) endif() @@ -93,7 +79,7 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "PGI") set(compile_flags -g -i4 -r4 -Kieee) set(compile_flags_release -O3) set(compile_flags_debug -O0 -Mbounds -Mchkfpstk -Mchkstk -Mdalign -Mdclchk -Mdepchk -Miomutex -Ktrap=fp -Mrecursive -traceback) - + if(${CMAKE_Fortran_COMPILER_VERSION} VERSION_GREATER_EQUAL 10) target_compile_options(ww3_lib PUBLIC -fallow-argument-mismatch -fallow-invalid-boz) endif() @@ -105,13 +91,16 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Cray") set(compile_flags_debug -O0 -Rbcps -Ktrap=fp) endif() +# COAWST include mct params info +set( compile_flags ${compile_flags} -I$ENV{MCT_PARAMS_DIR} -I$ENV{MCT_INCDIR} ) + target_compile_options(ww3_lib PUBLIC "$<$:${compile_flags}>") target_compile_options(ww3_lib PUBLIC "$<$,$>:${compile_flags_debug}>") target_compile_options(ww3_lib PUBLIC "$<$,$>:${compile_flags_release}>") # Executables to always build set(programs ww3_strt ww3_grid ww3_bound ww3_outf ww3_outp ww3_trck ww3_grib - ww3_gint gx_outf gx_outp ww3_uprstr ww3_shel ww3_prep ww3_gspl ww3_multi ww3_systrk) + ww3_gint gx_outf gx_outp ww3_uprstr ww3_prep ww3_gspl ww3_multi ww3_systrk ww3_shel) # Executables to build if NetCDF is found set(netcdf_programs ww3_ounf ww3_ounp ww3_bounc ww3_trnc ww3_prnc) @@ -140,25 +129,21 @@ if(NetCDF_Fortran_FOUND) list(APPEND programs ${netcdf_programs}) endif() -if(UFS_CAP) +# COAWST make ww3_shel last +#jcw list(APPEND programs ww3_shel) + +if(MULTI_ESMF) # Don't search for ESMF if target already exists (when build WW3 as UFS submodule) if (NOT TARGET esmf) find_package(ESMF MODULE REQUIRED) endif() - - if(UFS_CAP STREQUAL "MULTI_ESMF") - set(cap_src ${esmf_multi_cap_src}) - elseif(UFS_CAP STREQUAL "NUOPC_MESH") - set(cap_src ${nuopc_mesh_cap_src}) - endif() - - target_sources(ww3_lib PRIVATE ${cap_src}) + + target_sources(ww3_lib PRIVATE wmesmfmd.F90) target_link_libraries(ww3_lib PUBLIC esmf) + set_target_properties(ww3_lib PROPERTIES OUTPUT_NAME "ww3_multi_esmf") # Don't build executables when building WW3 ESMF library - if (NOT BUILD_TOOLS) - set(programs "") - endif() -endif() + set(programs "") +endif() set_property(SOURCE w3initmd.F90 APPEND @@ -176,11 +161,6 @@ if("MPI" IN_LIST switches) target_link_libraries(ww3_lib PUBLIC MPI::MPI_Fortran) endif() -if("PIO" IN_LIST switches) - target_sources(ww3_lib PRIVATE ${pio_src}) - target_link_libraries(ww3_lib PUBLIC PIO::PIO_Fortran) -endif() - # Handle PDLIB, SCRIP, SCRIPNC build files directly instead of through configuration file if("PDLIB" IN_LIST switches) if("SCOTCH" IN_LIST switches) @@ -228,6 +208,9 @@ foreach(program ${programs}) target_link_libraries(${program} PRIVATE ww3_lib) endforeach() +#jcw + target_link_libraries(ww3_lib PUBLIC $ENV{MCT_PARAMS_DIR}/mct_coupler_params.o -L$ENV{MCT_LIBDIR} -lmct -lmpeu) + install( TARGETS ${programs} ww3_lib EXPORT WW3Exports @@ -237,7 +220,7 @@ install( install(FILES ${CMAKE_BINARY_DIR}/switch DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod DESTINATION ${CMAKE_INSTALL_PREFIX}) - + export(EXPORT WW3Exports NAMESPACE WW3:: diff --git a/model/src/PDLIB/yowdatapool.F90 b/model/src/PDLIB/yowdatapool.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowelementpool.F90 b/model/src/PDLIB/yowelementpool.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowerr.F90 b/model/src/PDLIB/yowerr.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowexchangeModule.F90 b/model/src/PDLIB/yowexchangeModule.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowfunction.F90 b/model/src/PDLIB/yowfunction.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yownodepool.F90 b/model/src/PDLIB/yownodepool.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowpd.F90 b/model/src/PDLIB/yowpd.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowpdlibmain.F90 b/model/src/PDLIB/yowpdlibmain.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowrankModule.F90 b/model/src/PDLIB/yowrankModule.F90 old mode 100644 new mode 100755 diff --git a/model/src/PDLIB/yowsidepool.F90 b/model/src/PDLIB/yowsidepool.F90 old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/SCRIP.mk b/model/src/SCRIP/SCRIP.mk old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/SCRIP_NC.mk b/model/src/SCRIP/SCRIP_NC.mk old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_constants.f b/model/src/SCRIP/scrip_constants.f old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_errormod.f90 b/model/src/SCRIP/scrip_errormod.f90 old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_grids.f b/model/src/SCRIP/scrip_grids.f old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_interface.F90 b/model/src/SCRIP/scrip_interface.F90 old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_iounitsmod.f90 b/model/src/SCRIP/scrip_iounitsmod.f90 old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_kindsmod.f90 b/model/src/SCRIP/scrip_kindsmod.f90 old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_netcdfmod.f90 b/model/src/SCRIP/scrip_netcdfmod.f90 old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_remap_conservative.f b/model/src/SCRIP/scrip_remap_conservative.f old mode 100644 new mode 100755 index 4bbc748c8..6e20f8608 --- a/model/src/SCRIP/scrip_remap_conservative.f +++ b/model/src/SCRIP/scrip_remap_conservative.f @@ -252,6 +252,11 @@ subroutine remap_conserv(l_master, l_test) ! !----------------------------------------------------------------------- +#ifdef W3_SCRIPMPI + USE WMMDATMD, ONLY: MPI_COMM_GRD + USE W3ODATMD, ONLY: IAPROC, NTPROC + INCLUDE "mpif.h" +#endif logical(SCRIP_Logical), intent(in) :: l_master ! Am I the master ! processor (do I/O)? logical(SCRIP_Logical), intent(in) :: l_test ! Whether to @@ -262,11 +267,21 @@ subroutine remap_conserv(l_master, l_test) ! local variables ! !----------------------------------------------------------------------- +#ifdef W3_SCRIPMPI + integer (SCRIP_i4) :: IERR_MPI, IPROC, ratio + integer (SCRIP_i4) :: j, ij, add1, add2, got_weight + integer (SCRIP_i4) :: nlink, min_link, max_link + integer (SCRIP_i4), dimension(MPI_STATUS_SIZE) :: status + integer (SCRIP_i4), dimension(:), allocatable :: Numlinks + integer (SCRIP_i4), dimension(:), allocatable :: Asendi + integer (SCRIP_i4), dimension(:), allocatable :: Arecv1 + integer (SCRIP_i4), dimension(:), allocatable :: Arecv2 +#endif + integer (SCRIP_i4) :: grid1_str, grid1_end, grid2_str, grid2_end integer (SCRIP_i4), parameter :: & phi_or_theta = 2 ! integrate w.r.t. phi (1) or theta (2) - integer (SCRIP_i4) :: & i, inext, ! & n, nwgt, @@ -301,6 +316,12 @@ subroutine remap_conserv(l_master, l_test) ! and true area & ref_area ! Area of cell as computed by direct ! integration around its boundaries +#ifdef W3_SCRIPMPI + real (SCRIP_r8), dimension(:), allocatable :: Asend + real (SCRIP_r8), dimension(:), allocatable :: Arecvw + real (SCRIP_r8), dimension(:), allocatable :: Arecv + real (SCRIP_r8), dimension(:,:), allocatable :: Arecvw2d +#endif ! call OMP_SET_DYNAMIC(.FALSE.) @@ -333,11 +354,34 @@ subroutine remap_conserv(l_master, l_test) call timer_start(1) + + +#ifdef W3_SCRIPMPI +! +! To do this in mpi, we will just break up the sweep loops into chunks. Then +! gather all of the data at end of each loop so that each proc has a full set of +! data. First we want to determine start and end chunks for this processor. +! +! Revert back to 0 based processor number. + IPROC=IAPROC-1 + IF (NTPROC.eq.1) THEN + grid1_str=1 + grid1_end=grid1_size + ELSE + ratio=INT(grid1_size/NTPROC) + grid1_str=(IPROC*ratio)+1 + grid1_end=grid1_str+ratio-1 + IF (IPROC+1.eq.NTPROC) grid1_end=grid1_size + END IF +#else + grid1_str=1 + grid1_end=grid1_size +#endif + C$OMP PARALLEL DEFAULT(SHARED) PRIVATE(grid1_add) NUM_THREADS(nthreads) C$OMP DO SCHEDULE(DYNAMIC) - - do grid1_add = 1,grid1_size + do grid1_add = grid1_str,grid1_end if (mod(grid1_add,progint) .eq. 0 .and. is_master) then print *, grid1_add,' of ',grid1_size,' cells processed ...' @@ -351,6 +395,111 @@ subroutine remap_conserv(l_master, l_test) C$OMP END PARALLEL + +#ifdef W3_SCRIPMPI + IF (NTPROC.gt.1) THEN +! +! Here we need to gather all the data processed and +! send to each proc so they know the full data set. +! +! grid1 integrate +! + allocate (Asend(grid1_size)) + allocate (Arecv(grid1_size)) +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid1_frac(grid1_size) +! zero it out. + DO grid1_add=1,grid1_size + Asend(grid1_add)=zero + Arecv(grid1_add)=zero + END DO +! fill the send for this tile. + DO grid1_add=grid1_str,grid1_end + Asend(grid1_add)=grid1_frac(grid1_add) + END DO + call mpi_allreduce(Asend, Arecv, grid1_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! & MPI_SUM, MPI_COMM_MWAVE, IERR_MPI) +! & MPI_SUM, MPI_COMM_WAVE, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid1_add=1,grid1_size + grid1_frac(grid1_add)=Arecv(grid1_add) + END DO +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid1_area(grid1_size) +! zero it out. + DO grid1_add=1,grid1_size + Asend(grid1_add)=zero + Arecv(grid1_add)=zero + END DO +! fill the send for this tile. + DO grid1_add=grid1_str,grid1_end + Asend(grid1_add)=grid1_area(grid1_add) + END DO + call mpi_allreduce(Asend, Arecv, grid1_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid1_add=1,grid1_size + grid1_area(grid1_add)=Arecv(grid1_add) + END DO +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid1_centroid_lat(grid1_size) +! zero it out. + DO grid1_add=1,grid1_size + Asend(grid1_add)=zero + Arecv(grid1_add)=zero + END DO +! fill the send for this tile. + DO grid1_add=grid1_str,grid1_end + Asend(grid1_add)=grid1_centroid_lat(grid1_add) + END DO + call mpi_allreduce(Asend, Arecv, grid1_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid1_add=1,grid1_size + grid1_centroid_lat(grid1_add)=Arecv(grid1_add) + END DO +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid1_centroid_lon(grid1_size) +! zero it out. + DO grid1_add=1,grid1_size + Asend(grid1_add)=zero + Arecv(grid1_add)=zero + END DO +! fill the send for this tile. + DO grid1_add=grid1_str,grid1_end + Asend(grid1_add)=grid1_centroid_lon(grid1_add) + END DO + call mpi_allreduce(Asend, Arecv, grid1_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid1_add=1,grid1_size + grid1_centroid_lon(grid1_add)=Arecv(grid1_add) + END DO + deallocate(Asend, Arecv) +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + allocate (Asend(grid2_size)) + allocate (Arecv(grid2_size)) +! Work on grid2_frac(grid2_size) +! zero it out. + DO grid2_add=1,grid2_size + Asend(grid2_add)=zero + Arecv(grid2_add)=zero + END DO +! fill the send for this tile. + DO grid2_add=1,grid2_size + Asend(grid2_add)=grid2_frac(grid2_add) + END DO + call mpi_allreduce(Asend, Arecv, grid2_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid2_add=1,grid2_size + grid2_frac(grid2_add)=Arecv(grid2_add) + END DO + deallocate(Asend, Arecv) + END IF +#endif + !----------------------------------------------------------------------- ! ! integrate around each cell on grid2 @@ -376,11 +525,29 @@ subroutine remap_conserv(l_master, l_test) call timer_start(2) +#ifdef W3_SCRIPMPI +! +! To do this in mpi, we will just break up the sweep loops into chunks. Then +! gather all of the data at end of each loop so that each proc has a full set of +! data. First we want to determine start and end chunks for this processor. +! + IF (NTPROC.eq.1) THEN + grid2_str=1 + grid2_end=grid2_size + ELSE + ratio=INT(grid2_size/NTPROC) + grid2_str=(IPROC*ratio)+1 + grid2_end=grid2_str+ratio-1 + IF (IPROC+1.eq.NTPROC) grid2_end=grid2_size + END IF +#else + grid2_str=1 + grid2_end=grid2_size +#endif C$OMP PARALLEL DEFAULT(SHARED) PRIVATE(grid2_add) NUM_THREADS(nthreads) C$OMP DO SCHEDULE(DYNAMIC) - - do grid2_add = 1,grid2_size + do grid2_add = grid2_str,grid2_end if (mod(grid2_add,progint) .eq. 0 .and. is_master) then print *, grid2_add,' of ',grid2_size,' cells processed ...' @@ -396,6 +563,367 @@ subroutine remap_conserv(l_master, l_test) call timer_stop(2) + +#ifdef W3_SCRIPMPI + IF (NTPROC.gt.1) THEN +! +! Here we need to gather all the data processed and +! send to each proc so they know the full data set. +! +! grid2 integrate +! + allocate (Asend(grid2_size)) + allocate (Arecv(grid2_size)) +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid2_frac(grid2_size) +! zero it out. + DO grid2_add=1,grid2_size + Asend(grid2_add)=zero + Arecv(grid2_add)=zero + END DO +! fill the send for this tile. + DO grid2_add=grid2_str,grid2_end + Asend(grid2_add)=grid2_frac(grid2_add) + END DO + call mpi_allreduce(Asend, Arecv, grid2_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid2_add=1,grid2_size + grid2_frac(grid2_add)=Arecv(grid2_add) + END DO +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid2_area(grid2_size) +! zero it out. + DO grid2_add=1,grid2_size + Asend(grid2_add)=zero + Arecv(grid2_add)=zero + END DO +! fill the send for this tile. + DO grid2_add=grid2_str,grid2_end + Asend(grid2_add)=grid2_area(grid2_add) + END DO + call mpi_allreduce(Asend, Arecv, grid2_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid2_add=1,grid2_size + grid2_area(grid2_add)=Arecv(grid2_add) + END DO +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid2_centroid_lat(grid2_size) +! zero it out. + DO grid2_add=1,grid2_size + Asend(grid2_add)=zero + Arecv(grid2_add)=zero + END DO +! fill the send for this tile. + DO grid2_add=grid2_str,grid2_end + Asend(grid2_add)=grid2_centroid_lat(grid2_add) + END DO + call mpi_allreduce(Asend, Arecv, grid2_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid2_add=1,grid2_size + grid2_centroid_lat(grid2_add)=Arecv(grid2_add) + END DO +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Work on grid2_centroid_lon(grid2_size) +! zero it out. + DO grid2_add=1,grid2_size + Asend(grid2_add)=zero + Arecv(grid2_add)=zero + END DO +! fill the send for this tile. + DO grid2_add=grid2_str,grid2_end + Asend(grid2_add)=grid2_centroid_lon(grid2_add) + END DO + call mpi_allreduce(Asend, Arecv, grid2_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid2_add=1,grid2_size + grid2_centroid_lon(grid2_add)=Arecv(grid2_add) + END DO + deallocate(Asend, Arecv) +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + allocate (Asend(grid1_size)) + allocate (Arecv(grid1_size)) +! Work on grid1_frac(grid1_size) +! zero it out. + DO grid1_add=1,grid1_size + Asend(grid1_add)=zero + Arecv(grid1_add)=zero + END DO +! fill the send for this tile. + DO grid1_add=1,grid1_size + Asend(grid1_add)=grid1_frac(grid1_add) + END DO + call mpi_allreduce(Asend, Arecv, grid1_size, MPI_DOUBLE, & + & MPI_SUM, MPI_COMM_GRD, IERR_MPI) +! fill the working array as a sum from all nodes. + DO grid1_add=1,grid1_size + grid1_frac(grid1_add)=Arecv(grid1_add) + END DO + deallocate(Asend, Arecv) +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Both sweeps are now done. +! Here we need to gather all the data that was computed in +! store_link_cnsrv. Then we allow the Master node to +! compute the rest after these steps. +! +! gather total number of links that were computed on each processor. +! + allocate(Numlinks(NTPROC)) + call mpi_gather(num_links_map1, 1, MPI_INT, Numlinks, 1, & + & MPI_INT, 0, MPI_COMM_GRD, IERR_MPI) +! +! Now gather all the weights from other nodes to make one combined set. +! + IF (IPROC.ne.0) THEN + allocate (Asendi(num_links_map1)) + Asendi=0 +! +! Send grid1 add map1. + DO i=1,num_links_map1 + Asendi(i)=grid1_add_map1(i) + END DO + call mpi_send(Asendi, num_links_map1, MPI_INT, 0, & + & 10, MPI_COMM_GRD, IERR_MPI) +! +! Send grid2 add map1. + DO i=1,num_links_map1 + Asendi(i)=grid2_add_map1(i) + END DO + call mpi_send(Asendi, num_links_map1, MPI_INT, 0, & + & 20, MPI_COMM_GRD, IERR_MPI) + deallocate (Asendi) +! +! Send wts map1. + allocate (Asend(num_links_map1*num_wts)) + Asend=0 + ij=0 + DO i=1,num_links_map1 + DO j=1,num_wts + ij=ij+1 + Asend(ij)=wts_map1(j,i) + END DO + END DO + call mpi_send(Asend, num_links_map1*num_wts, MPI_DOUBLE, 0, & + & 30, MPI_COMM_GRD, IERR_MPI) + deallocate (Asend) + ELSE ! we are on the Master + DO i=2,NTPROC + allocate (Arecv1(Numlinks(i))) !grid1_add_map1 + allocate (Arecv2(Numlinks(i))) !grid2_add_map1 + allocate (Arecvw(num_wts*Numlinks(i))) !wts_map1 + allocate (Arecvw2d(num_wts,Numlinks(i))) !wts_map1 + Arecv1=0 + Arecv2=0 + Arecvw=zero + Arecvw2d=zero +! +! Receiving grd1 add map1 (grid1 area). +! + call mpi_recv(Arecv1, Numlinks(i), MPI_INT, i-1, 10, & + & MPI_COMM_GRD, status, IERR_MPI) +! +! Receiving grid2 add map1 (grid2 area). +! + call mpi_recv(Arecv2, Numlinks(i), MPI_INT, i-1, 20, & + & MPI_COMM_GRD, status, IERR_MPI) +! +! Receiving weights map1 +! + call mpi_recv(Arecvw, Numlinks(i)*num_wts, MPI_DOUBLE,i-1, & + & 30, MPI_COMM_GRD, status, IERR_MPI) +! restructure wts to be (1:num_wts,numlinks) + ij=0 + DO nlink=1,Numlinks(i) + DO j=1,num_wts + ij=ij+1 + Arecvw2d(j,nlink)=Arecvw(ij) + END DO + END DO +!----------------------------------------------------------------------- +! +! if the link already exists, add the weight to the current weight +! arrays +! This is taken from subroutine store_link_cnsrv. +!----------------------------------------------------------------------- + DO nlink=1,Numlinks(i) + add1=Arecv1(nlink) + add2=Arecv2(nlink) + got_weight=0 +! + min_link = min(link_add1(1,add1),link_add2(1,add2)) + max_link = max(link_add1(2,add1),link_add2(2,add2)) + if (min_link == 0) then + min_link = 1 + max_link = 0 + endif + do j=min_link,max_link + if (add1 == grid1_add_map1(j)) then + if (add2 == grid2_add_map1(j)) then + wts_map1(:,j)=wts_map1(:,j)+ & + & Arecvw2d(1:num_wts,nlink) + got_weight=1 + endif + endif + end do +!----------------------------------------------------------------------- +! +! if the link does not yet exist, increment number of links and +! check to see if remap arrays need to be increased to accomodate +! the new link. then store the link. +! +!----------------------------------------------------------------------- + if (got_weight.eq.0) then + num_links_map1 = num_links_map1 + 1 + if (num_links_map1 > max_links_map1) & + & call resize_remap_vars(1,resize_increment) + grid1_add_map1(num_links_map1) = add1 + grid2_add_map1(num_links_map1) = add2 + wts_map1 (:,num_links_map1) = Arecvw2d(1:num_wts,nlink) + END IF + + if (link_add1(1,add1)==0) link_add1(1,add1)=num_links_map1 + if (link_add2(1,add2)==0) link_add2(1,add2)=num_links_map1 + link_add1(2,add1) = num_links_map1 + link_add2(2,add2) = num_links_map1 + + END DO + deallocate (Arecv1, Arecv2, Arecvw, Arecvw2d) + END DO + END IF +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! +! Now distribute: num_links_map1, grid1_add_map1, grid2_add_map1, +! wts_map1, link_add1, link_add2, max_links_map1 +! +! send num_links_map1 +! + call mpi_bcast(num_links_map1, 1, MPI_INT, & + & 0, MPI_COMM_GRD, IERR_MPI) +! force this + max_links_map1=num_links_map1 +! +! here we do what is in resize_remap_vars and just make the +! sizes of grid1_add_map1, grid2_add_map1, and wts_map1 to be +! the same size as on the 0 node. +! + IF (IPROC.ne.0) THEN + deallocate (grid1_add_map1, grid2_add_map1, wts_map1) + allocate ( grid1_add_map1(num_links_map1), & + & grid2_add_map1(num_links_map1), & + & wts_map1(num_wts,num_links_map1)) + END IF + IF (IPROC.eq.0) THEN +! +! Only save the valid parts of grid1_add_map1, grid2_add_map1, wts_map1 +! + allocate (Asendi(num_links_map1)) +! + DO i=1,num_links_map1 + Asendi(i)=grid1_add_map1(i) + END DO + deallocate (grid1_add_map1) + allocate ( grid1_add_map1(num_links_map1) ) + DO i=1,num_links_map1 + grid1_add_map1(i)=Asendi(i) + END DO +! + DO i=1,num_links_map1 + Asendi(i)=grid2_add_map1(i) + END DO + deallocate (grid2_add_map1) + allocate ( grid2_add_map1(num_links_map1) ) + DO i=1,num_links_map1 + grid2_add_map1(i)=Asendi(i) + END DO + deallocate (Asendi) +! + allocate (Arecvw2d(num_wts,num_links_map1)) !wts_map1 + DO i=1,num_links_map1 + DO j=1,num_wts + Arecvw2d(j,i)=wts_map1(j,i) + END DO + END DO + deallocate (wts_map1) + allocate ( wts_map1(num_wts,num_links_map1) ) + DO i=1,num_links_map1 + DO j=1,num_wts + wts_map1(j,i)=Arecvw2d(j,i) + END DO + END DO + deallocate (Arecvw2d) + END IF +! +! send grid1_add_map1 +! + allocate (Asendi(num_links_map1)) + Asendi=0 + IF (IPROC.eq.0) THEN + DO i=1,num_links_map1 + Asendi(i)=grid1_add_map1(i) + END DO + END IF + call mpi_bcast(Asendi, num_links_map1, MPI_INT, & + & 0, MPI_COMM_GRD, IERR_MPI) + IF (IPROC.ne.0) THEN + DO i=1,num_links_map1 + grid1_add_map1(i)=Asendi(i) + END DO + END IF +! +! send grid2_add_map1 +! + Asendi=0 + IF (IPROC.eq.0) THEN + DO i=1,num_links_map1 + Asendi(i)=grid2_add_map1(i) + END DO + END IF + call mpi_bcast(Asendi, num_links_map1, MPI_INT, & + & 0, MPI_COMM_GRD, IERR_MPI) + IF (IPROC.ne.0) THEN + DO i=1,num_links_map1 + grid2_add_map1(i)=Asendi(i) + END DO + END IF + deallocate (Asendi) +! +! send wts_map1 +! + allocate (Asend(num_links_map1*num_wts)) + Asend=zero +! + ij=0 + IF (IPROC.eq.0) THEN + DO i=1,num_links_map1 + DO j=1,num_wts + ij=ij+1 + Asend(ij)=wts_map1(j,i) + END DO + END DO + END IF + ij=num_links_map1*num_wts + call mpi_bcast(Asend, ij, MPI_DOUBLE, & + & 0, MPI_COMM_GRD, IERR_MPI) + IF (IPROC.ne.0) THEN + wts_map1=zero + ij=0 + DO i=1,num_links_map1 + DO j=1,num_wts + ij=ij+1 + wts_map1(j,i)=Asend(ij) + END DO + END DO + END IF + deallocate (Asend) + deallocate(Numlinks) + END IF +#endif !----------------------------------------------------------------------- ! ! correct for situations where N/S pole not explicitly included in diff --git a/model/src/SCRIP/scrip_remap_read.f b/model/src/SCRIP/scrip_remap_read.f old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_remap_vars.f b/model/src/SCRIP/scrip_remap_vars.f old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_remap_write.f b/model/src/SCRIP/scrip_remap_write.f old mode 100644 new mode 100755 diff --git a/model/src/SCRIP/scrip_timers.f b/model/src/SCRIP/scrip_timers.f old mode 100644 new mode 100755 diff --git a/model/src/cmake/check_switches.cmake b/model/src/cmake/check_switches.cmake old mode 100644 new mode 100755 index d09a91c5e..563d529e2 --- a/model/src/cmake/check_switches.cmake +++ b/model/src/cmake/check_switches.cmake @@ -52,7 +52,7 @@ function(check_switches switches switch_files) message(FATAL_ERROR "Switch '${valid_opt}' requires '${required_switch}' to be set") endif() elseif(json_type STREQUAL "ARRAY") - string(JSON n_requires_any LENGTH ${category} valid-options ${j_options} requires ${i_requires}) + string(JSON n_requires_any LENGTH ${vategory} valid-options ${j_options} requries ${i_requires}) math(EXPR n_requires_any "${n_requires_any} - 1") # Loop over array and check that one of the switches is present @@ -70,7 +70,7 @@ function(check_switches switches switch_files) if(NOT found) message(FATAL_ERROR "Switch ${valid_opt} requires one of ${possible_values} to be set") endif() - + endif() endforeach() endif() @@ -98,7 +98,7 @@ function(check_switches switches switch_files) elseif(num_switches STREQUAL "upto2" AND n_switches_in_category GREATER 2) message(FATAL_ERROR "Too many ${category_name} switches found (max 2)") endif() - + endforeach() set(${switch_files} ${files} PARENT_SCOPE) diff --git a/model/src/cmake/src_list.cmake b/model/src/cmake/src_list.cmake old mode 100644 new mode 100755 index eaa5c26d7..870184b3e --- a/model/src/cmake/src_list.cmake +++ b/model/src/cmake/src_list.cmake @@ -3,6 +3,7 @@ set(c_src w3getmem.c) # Core files always built set(ftn_src constants.F90 + cwstwvcp.F90 w3adatmd.F90 w3arrymd.F90 w3bullmd.F90 @@ -55,27 +56,6 @@ set(ftn_src wmupdtmd.F90 wmwavemd.F90 w3tidemd.F90 - wav_shr_flags.F90 - ) - -set(pio_src - wav_history_mod.F90 - wav_pio_mod.F90 - wav_restart_mod.F90 - ${PROJECT_SOURCE_DIR}/../CDEPS-interface/ufs/cdeps_share/shr_is_restart_fh_mod.F90 - wav_shr_mod.F90 - wav_kind_mod.F90 - wav_import_export.F90 - ) - -set(nuopc_mesh_cap_src - wav_shel_inp.F90 - wav_comp_nuopc.F90 - wav_wrapper_mod.F90 - ) - -set(esmf_multi_cap_src - wmesmfmd.F90 ) # Built when PDLIB is enabled @@ -102,7 +82,7 @@ set(scrip_src ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_interface.F90 ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_iounitsmod.f90 ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_kindsmod.f90 - ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_remap_conservative.f + ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_remap_conservative.F ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_remap_vars.f ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_timers.f ) @@ -113,3 +93,5 @@ set(scripnc_src ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_remap_write.f ${CMAKE_CURRENT_SOURCE_DIR}/SCRIP/scrip_remap_read.f ) + + diff --git a/model/src/cmake/switches.json b/model/src/cmake/switches.json old mode 100644 new mode 100755 index fdb556c23..7b0b9601a --- a/model/src/cmake/switches.json +++ b/model/src/cmake/switches.json @@ -43,6 +43,16 @@ } ] }, + { + "name": "scripmpi", + "num_switches": "upto2", + "description": "", + "valid-options": [ + { + "name": "SCRIPMPI" + } + ] + }, { "name": "shared", "num_switches": "one", @@ -264,7 +274,7 @@ }, { "name": "STAB3", - "requires_any": ["ST3", "ST4"] + "requires": ["ST3", "ST4"] } ] }, @@ -745,17 +755,6 @@ } ] }, - { - "name": "pio", - "num_switches": "upto1", - "description": "use pio library", - "valid-options":[ - { - "name": "PIO", - "requires": ["MPI"] - } - ] - }, { "name": "pdlib", "num_switches": "upto1", @@ -767,16 +766,16 @@ } ] }, - { - "name": "ddlib", + { + "name": "ddlib", "num_switches": "upto1", "description": "domain decomposition library", "valid-options": [ - { + { "name": "METIS", "requires": ["PDLIB"] - }, - { + }, + { "name": "SCOTCH", "requires": ["PDLIB"] } @@ -824,15 +823,5 @@ "name": "B4B" } ] - }, - { - "name": "ascii", - "num_switches": "upto1", - "description": "ASCII output for binary .ww3 file", - "valid-options": [ - { - "name": "ASCII" - } - ] } ] diff --git a/model/src/constants.F90 b/model/src/constants.F90 old mode 100644 new mode 100755 diff --git a/model/src/ctest.F90 b/model/src/ctest.F90 old mode 100644 new mode 100755 diff --git a/model/src/gx_outf.F90 b/model/src/gx_outf.F90 old mode 100644 new mode 100755 index c8ab00e38..4c25b4425 --- a/model/src/gx_outf.F90 +++ b/model/src/gx_outf.F90 @@ -1,37 +1,5 @@ -!> @file -!> @brief Generate GrADS input files from raw WAVEWATCH data file. -!> -!> @author H. L. Tolman -!> @author A. Chawla -!> @author J.H.G.M. Alves -!> @date 22-Mar-2021 -!> #include "w3macros.h" - !/ ------------------------------------------------------------------- / -!> -!> @brief Generate GrADS input files from raw WAVEWATCH data file. -!> -!> @details -!> Data is read from the grid output file out_grd.ww3 (raw data) -!> and from the file gx_outf.inp ( NDSI, output requests ). -!> Model definition and raw data files are read using WAVEWATCH III -!> subroutines. -!> -!> Output files are ww3.ctl and ww3.grads. The output files -!> contains a land-sea map, followed by requested fields. See the -!> control file for the names of the fields. -!> -!> @author H. L. Tolman -!> @author A. Chawla -!> @author J.H.G.M. Alves -!> @date 22-Mar-2021 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> PROGRAM GXOUTF !/ !/ +-----------------------------------+ @@ -772,16 +740,6 @@ PROGRAM GXOUTF !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Perform actual output for GrADS postprocessing. - !> - !> @param[in] NX Grid dimensions. - !> @param[in] NY Grid dimensions. - !> @param[in] NSEA Number of sea points. - !> - !> @author H. L. Tolman - !> @date 22-Mar-2021 - !> SUBROUTINE GXEXGO ( NX, NY, NSEA ) !/ !/ +-----------------------------------+ diff --git a/model/src/gx_outp.F90 b/model/src/gx_outp.F90 old mode 100644 new mode 100755 index d34fdbaa7..63b525485 --- a/model/src/gx_outp.F90 +++ b/model/src/gx_outp.F90 @@ -1,27 +1,5 @@ -!> @file -!> @brief Post-processing of point output for GrADS post-processing. -!> -!> @author H. L. Tolman -!> @author J.H. Alves -!> @author F. Ardhuin -!> @date 27-Aug-2015 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief Post-processing of point output for GrADS post-processing. -!> -!> @author H. L. Tolman -!> @author J.H. Alves -!> @author F. Ardhuin -!> @date 27-Aug-2015 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> PROGRAM GXOUTP !/ !/ +-----------------------------------+ @@ -561,12 +539,6 @@ PROGRAM GXOUTP !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Perform actual point output. - !> - !> @author H. L. Tolman - !> @date 16-Jul-2012 - !> SUBROUTINE GXEXPO !/ !/ +-----------------------------------+ diff --git a/model/src/mod_constants.f90 b/model/src/mod_constants.f90 old mode 100644 new mode 100755 diff --git a/model/src/mod_fileio.f90 b/model/src/mod_fileio.f90 old mode 100644 new mode 100755 diff --git a/model/src/mod_xnl4v5.f90 b/model/src/mod_xnl4v5.f90 old mode 100644 new mode 100755 diff --git a/model/src/pdlib_field_vec.F90 b/model/src/pdlib_field_vec.F90 old mode 100644 new mode 100755 diff --git a/model/src/serv_xnl4v5.f90 b/model/src/serv_xnl4v5.f90 old mode 100644 new mode 100755 diff --git a/model/src/w3adatmd.F90 b/model/src/w3adatmd.F90 old mode 100644 new mode 100755 index 7e09ca02a..9ba31df4f --- a/model/src/w3adatmd.F90 +++ b/model/src/w3adatmd.F90 @@ -174,8 +174,6 @@ MODULE W3ADATMD ! US3D R.A. Public 3D Stokes drift. ! USSP R.A. Public Partitioned Surface Stokes drift ! - ! USSHX/Y R.A. Public Surface layer averaged Stokes drift. - ! ! ABA R.A. Public Near-bottom rms wave ex. amplitude. ! ABD R.A. Public Corresponding direction. ! UBA R.A. Public Near-bottom rms wave velocity. @@ -189,7 +187,6 @@ MODULE W3ADATMD ! MSSD R.A. Public Direction of MSSX ! MSCD R.A. Public Direction of MSCX ! QP R.A. Public Goda peakedness parameter. - ! QKK R.A. Public Spectral bandwidth (De Carlo et al. 2023) ! ! DTDYN R.A. Public Mean dynamic time step (raw). ! FCUT R.A. Public Cut-off frequency for tail. @@ -400,6 +397,9 @@ MODULE W3ADATMD ! REAL, POINTER :: DW(:), UA(:), UD(:), U10(:), U10D(:),& AS(:), CX(:), CY(:), TAUA(:), TAUADIR(:) +#ifdef W3_CURSP + REAL, POINTER :: CXTH(:,:), CYTH(:,:) +#endif ! ! Output fields group 2) ! @@ -456,6 +456,15 @@ MODULE W3ADATMD USSY(:), TAUOCX(:), TAUOCY(:), & PRMS(:), TPMS(:), PHICE(:), & TAUICE(:,:) +#ifdef W3_COAWST_MODEL + REAL, POINTER :: USS_COAWST(:,:), VSS_COAWST(:,:), & + KSS_COAWST(:,:) + REAL, POINTER :: PHIBRKX(:), PHIBRKY(:), QB(:) + REAL, POINTER :: XPHIBRKX(:), XPHIBRKY(:) + REAL, POINTER :: PHICAPX(:), PHICAPY(:) + REAL, POINTER :: XPHICAPX(:), XPHICAPY(:) + REAL, POINTER :: WLP(:) +#endif REAL, POINTER :: P2SMS(:,:), US3D(:,:), USSP(:,:) REAL, POINTER :: XSXX(:), XSYY(:), XSXY(:), XTAUOX(:),& XTAUOY(:), XBHD(:), XPHIOC(:), & @@ -464,7 +473,6 @@ MODULE W3ADATMD XPRMS(:), XTPMS(:), XPHICE(:), & XTAUICE(:,:) REAL, POINTER :: XP2SMS(:,:), XUS3D(:,:), XUSSP(:,:) - REAL, POINTER :: XUSSHX(:), XUSSHY(:) ! ! Output fields group 7) ! @@ -478,9 +486,9 @@ MODULE W3ADATMD ! Output fields group 8) ! REAL, POINTER :: MSSX(:), MSSY(:), MSSD(:), & - MSCX(:), MSCY(:), MSCD(:), QKK(:) + MSCX(:), MSCY(:), MSCD(:) REAL, POINTER :: XMSSX(:), XMSSY(:), XMSSD(:), & - XMSCX(:), XMSCY(:), XMSCD(:), XQKK(:) + XMSCX(:), XMSCY(:), XMSCD(:) ! ! Output fields group 9) ! @@ -493,13 +501,15 @@ MODULE W3ADATMD ! REAL, POINTER :: USERO(:,:) REAL, POINTER :: XUSERO(:,:) - ! Output fileds for Langmuir mixing parameterization - REAL, POINTER :: USSHX(:), USSHY(:) ! ! Spatial derivatives ! REAL, POINTER :: DDDX(:,:), DDDY(:,:), DCXDX(:,:), & DCYDX(:,:), DCXDY(:,:), DCYDY(:,:) +#ifdef W3_CURSP + REAL, POINTER :: DCXDXTH(:,:,:), DCYDXTH(:,:,:), & + DCXDYTH(:,:,:), DCYDYTH(:,:,:) +#endif REAL, POINTER :: DCDX(:,:,:), DCDY(:,:,:) #ifdef W3_SMC REAL, POINTER :: DHDX(:), DHDY(:), DHLMT(:,:) @@ -564,6 +574,9 @@ MODULE W3ADATMD REAL, POINTER :: SPPNT(:,:,:) ! INTEGER :: ITIME, IPASS, IDLAST, NSEALM +#ifdef W3_COAWST_MODEL + INTEGER :: ITIME_COAWST +#endif REAL, POINTER :: ALPHA(:,:) LOGICAL :: AINIT, AINIT2, FL_ALL, FLCOLD, FLIWND ! @@ -575,8 +588,6 @@ MODULE W3ADATMD !/ !/ Data aliases for structure WADAT(S) !/ - REAL, POINTER :: USSHX(:), USSHY(:) - ! REAL, POINTER :: CG(:,:), WN(:,:) REAL, POINTER :: IC3WN_R(:,:), IC3WN_I(:,:), IC3CG(:,:) ! @@ -588,6 +599,9 @@ MODULE W3ADATMD ! REAL, POINTER :: DW(:), UA(:), UD(:), U10(:), U10D(:),& AS(:), CX(:), CY(:), TAUA(:), TAUADIR(:) +#ifdef W3_CURSP + REAL, POINTER :: CXTH(:,:), CYTH(:,:) +#endif ! REAL, POINTER :: HS(:), WLM(:), T02(:), T0M1(:), & T01 (:), FP0(:), THM(:), THS(:), & @@ -614,13 +628,20 @@ MODULE W3ADATMD TUSX(:), TUSY(:), USSX(:), USSY(:), & TAUOCX(:), TAUOCY(:), PRMS(:), & TPMS(:), PHICE(:), TAUICE(:,:) +#ifdef W3_COAWST_MODEL + REAL, POINTER :: USS_COAWST(:,:), VSS_COAWST(:,:), & + KSS_COAWST(:,:) + REAL, POINTER :: PHIBRKX(:), PHIBRKY(:), QB(:) + REAL, POINTER :: PHICAPX(:), PHICAPY(:) + REAL, POINTER :: WLP(:) +#endif REAL, POINTER :: P2SMS(:,:), US3D(:,:), USSP(:,:) ! REAL, POINTER :: ABA(:), ABD(:), UBA(:), UBD(:), & BEDFORMS(:,:), PHIBBL(:), TAUBBL(:,:) ! REAL, POINTER :: MSSX(:), MSSY(:), MSSD(:), & - MSCX(:), MSCY(:), MSCD(:), QKK(:) + MSCX(:), MSCY(:), MSCD(:) ! REAL, POINTER :: DTDYN(:), FCUT(:), CFLXYMAX(:), & CFLTHMAX(:), CFLKMAX(:) @@ -631,6 +652,10 @@ MODULE W3ADATMD ! REAL, POINTER :: DDDX(:,:), DDDY(:,:), DCXDX(:,:), & DCYDX(:,:), DCXDY(:,:), DCYDY(:,:) +#ifdef W3_CURSP + REAL, POINTER :: DCXDXTH(:,:,:), DCYDXTH(:,:,:), & + DCXDYTH(:,:,:), DCYDYTH(:,:,:) +#endif REAL, POINTER :: DCDX(:,:,:), DCDY(:,:,:) #ifdef W3_SMC REAL, POINTER :: DHDX(:), DHDY(:), DHLMT(:,:) @@ -689,6 +714,9 @@ MODULE W3ADATMD REAL, POINTER :: SPPNT(:,:,:) ! INTEGER, POINTER :: ITIME, IPASS, IDLAST, NSEALM +#ifdef W3_COAWST_MODEL + INTEGER,POINTER :: ITIME_COAWST +#endif REAL, POINTER :: ALPHA(:,:) LOGICAL, POINTER :: AINIT, AINIT2, FL_ALL, FLCOLD, FLIWND !/ @@ -800,6 +828,9 @@ SUBROUTINE W3NAUX ( NDSE, NDST ) ! DO I=1, NGRIDS WADATS(I)%ITIME = 0 +#ifdef W3_COAWST_MODEL + WADATS(I)%ITIME_COAWST = 0 +#endif WADATS(I)%IPASS = 0 WADATS(I)%IDLAST = 0 WADATS(I)%NSEALM = 0 @@ -1015,6 +1046,15 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) CHECK_ALLOC_STATUS ( ISTAT ) WADATS(IMOD)%CX(:)=0. WADATS(IMOD)%CY(:)=0. + +#ifdef W3_CURSP + ALLOCATE ( WADATS(IMOD)%CXTH(0:NSEA,NK) , WADATS(IMOD)%CYTH(0:NSEA,NK) , & + STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + WADATS(IMOD)%CXTH(:,:)=0. + WADATS(IMOD)%CYTH(:,:)=0. +#endif + ! ALLOCATE ( WADATS(IMOD)%UA(0:NSEA) , WADATS(IMOD)%UD(0:NSEA) , & WADATS(IMOD)%U10(NSEA) , WADATS(IMOD)%U10D(NSEA) , & @@ -1057,10 +1097,16 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) WADATS(IMOD)%WNMEAN(NSEALM), & STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) - +#ifdef W3_COAWST_MODEL + ALLOCATE ( WADATS(IMOD)%WLP (NSEALM)) + CHECK_ALLOC_STATUS ( ISTAT ) +#endif ! WADATS(IMOD)%HS = UNDEF WADATS(IMOD)%WLM = UNDEF +#ifdef W3_COAWST_MODEL + WADATS(IMOD)%WLP = UNDEF +#endif WADATS(IMOD)%T02 = UNDEF WADATS(IMOD)%T0M1 = UNDEF WADATS(IMOD)%T01 = UNDEF @@ -1201,14 +1247,22 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) WADATS(IMOD)%TUSY (NSEALM) , & WADATS(IMOD)%USSX (NSEALM) , & WADATS(IMOD)%USSY (NSEALM) , & +#ifdef W3_COAWST_MODEL + WADATS(IMOD)%USS_COAWST (NSEALM,NK) , & + WADATS(IMOD)%VSS_COAWST (NSEALM,NK) , & + WADATS(IMOD)%KSS_COAWST (NSEALM,NK) , & + WADATS(IMOD)%PHIBRKX (NSEALM) , & + WADATS(IMOD)%PHIBRKY (NSEALM) , & + WADATS(IMOD)%QB (NSEALM) , & + WADATS(IMOD)%PHICAPX (NSEALM) , & + WADATS(IMOD)%PHICAPY (NSEALM) , & +#endif WADATS(IMOD)%TAUOCX(NSEALM) , & WADATS(IMOD)%TAUOCY(NSEALM) , & WADATS(IMOD)%PRMS (NSEALM) , & WADATS(IMOD)%TPMS (NSEALM) , & WADATS(IMOD)%PHICE (NSEALM) , & WADATS(IMOD)%TAUICE(NSEALM,2), & - WADATS(IMOD)%USSHX(NSEALM), & - WADATS(IMOD)%USSHY(NSEALM), & STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) ! @@ -1239,14 +1293,22 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) WADATS(IMOD)%TUSY = UNDEF WADATS(IMOD)%USSX = UNDEF WADATS(IMOD)%USSY = UNDEF +#ifdef W3_COAWST_MODEL + WADATS(IMOD)%USS_COAWST = UNDEF + WADATS(IMOD)%VSS_COAWST = UNDEF + WADATS(IMOD)%KSS_COAWST = UNDEF + WADATS(IMOD)%PHIBRKX = UNDEF + WADATS(IMOD)%PHIBRKY = UNDEF + WADATS(IMOD)%QB = UNDEF + WADATS(IMOD)%PHICAPX = UNDEF + WADATS(IMOD)%PHICAPY = UNDEF +#endif WADATS(IMOD)%TAUOCX = UNDEF WADATS(IMOD)%TAUOCY = UNDEF WADATS(IMOD)%PRMS = UNDEF WADATS(IMOD)%TPMS = UNDEF WADATS(IMOD)%PHICE = UNDEF WADATS(IMOD)%TAUICE = UNDEF - WADATS(IMOD)%USSHX = UNDEF - WADATS(IMOD)%USSHY = UNDEF IF ( P2MSF(1).GT.0 ) WADATS(IMOD)%P2SMS = UNDEF IF ( US3DF(1).GT.0 ) WADATS(IMOD)%US3D = UNDEF IF ( USSPF(1).GT.0 ) WADATS(IMOD)%USSP = UNDEF @@ -1277,7 +1339,7 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) ALLOCATE ( WADATS(IMOD)%MSSX(NSEALM), WADATS(IMOD)%MSSY(NSEALM), & WADATS(IMOD)%MSCX(NSEALM), WADATS(IMOD)%MSCY(NSEALM), & WADATS(IMOD)%MSSD(NSEALM), WADATS(IMOD)%MSCD(NSEALM), & - WADATS(IMOD)%QKK(NSEALM), STAT=ISTAT ) + STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) ! WADATS(IMOD)%MSSX = UNDEF @@ -1286,7 +1348,6 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) WADATS(IMOD)%MSCX = UNDEF WADATS(IMOD)%MSCY = UNDEF WADATS(IMOD)%MSCD = UNDEF - WADATS(IMOD)%QKK = UNDEF call print_memcheck(memunit, 'memcheck_____:'//' W3DIMA 8') ! ! 9) Numerical diagnostics @@ -1385,6 +1446,12 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) WADATS(IMOD)%DCYDX(NY,NX) , & WADATS(IMOD)%DCXDY(NY,NX) , & WADATS(IMOD)%DCYDY(NY,NX) , STAT=ISTAT ) +#ifdef W3_CURSP + ALLOCATE ( WADATS(IMOD)%DCXDXTH(NY,NX,NK),& + WADATS(IMOD)%DCYDXTH(NY,NX,NK) , & + WADATS(IMOD)%DCXDYTH(NY,NX,NK) , & + WADATS(IMOD)%DCYDYTH(NY,NX,NK) , STAT=ISTAT ) +#endif ELSE ALLOCATE ( WADATS(IMOD)%DDDX(1,NSEAL) , & WADATS(IMOD)%DDDY(1,NSEAL) , & @@ -1395,6 +1462,13 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) WADATS(IMOD)%DCXDY(1,NSEAL) , & WADATS(IMOD)%DCYDY(1,NSEAL) , & STAT=ISTAT ) +#ifdef W3_CURSP + ALLOCATE ( WADATS(IMOD)%DCXDXTH(1,NSEAL,NK), & + WADATS(IMOD)%DCYDXTH(1,NSEAL,NK) , & + WADATS(IMOD)%DCXDYTH(1,NSEAL,NK) , & + WADATS(IMOD)%DCYDYTH(1,NSEAL,NK) , & + STAT=ISTAT ) +#endif ENDIF CHECK_ALLOC_STATUS ( ISTAT ) WADATS(IMOD)%DDDX = 0. @@ -1405,6 +1479,12 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) WADATS(IMOD)%DCYDX = 0. WADATS(IMOD)%DCXDY = 0. WADATS(IMOD)%DCYDY = 0. +#ifdef W3_CURSP + WADATS(IMOD)%DCXDXTH = 0. + WADATS(IMOD)%DCYDXTH = 0. + WADATS(IMOD)%DCXDYTH = 0. + WADATS(IMOD)%DCYDYTH = 0. +#endif ! #ifdef W3_SMC ALLOCATE ( WADATS(IMOD)%DHDX(NSEA) , & @@ -2158,21 +2238,17 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) ALLOCATE ( WADATS(IMOD)%XTAUOCY(NXXX), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) ELSE - ALLOCATE ( WADATS(IMOD)%XTAUOCX(1), STAT=ISTAT ) - CHECK_ALLOC_STATUS ( ISTAT ) - ALLOCATE ( WADATS(IMOD)%XTAUOCY(1), STAT=ISTAT ) - CHECK_ALLOC_STATUS ( ISTAT ) - END IF - IF ( OUTFLAGS( 6, 14) ) THEN - ALLOCATE ( WADATS(IMOD)%XUSSHX(NXXX), STAT=ISTAT ) +#ifdef W3_COAWST_MODEL + ALLOCATE ( WADATS(IMOD)%XTAUOCX(NXXX), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) - ALLOCATE ( WADATS(IMOD)%XUSSHY(NXXX), STAT=ISTAT ) + ALLOCATE ( WADATS(IMOD)%XTAUOCY(NXXX), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) - ELSE - ALLOCATE ( WADATS(IMOD)%XUSSHX(1), STAT=ISTAT ) +#else + ALLOCATE ( WADATS(IMOD)%XTAUOCX(1), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) - ALLOCATE ( WADATS(IMOD)%XUSSHY(1), STAT=ISTAT ) + ALLOCATE ( WADATS(IMOD)%XTAUOCY(1), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) +#endif END IF ! WADATS(IMOD)%XSXX = UNDEF @@ -2195,8 +2271,6 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) WADATS(IMOD)%XUSSP = UNDEF WADATS(IMOD)%XTAUOCX = UNDEF WADATS(IMOD)%XTAUOCY = UNDEF - WADATS(IMOD)%XUSSHX = UNDEF - WADATS(IMOD)%XUSSHY = UNDEF ! IF ( OUTFLAGS( 7, 1) ) THEN ALLOCATE ( WADATS(IMOD)%XABA(NXXX), STAT=ISTAT ) @@ -2234,8 +2308,13 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) ALLOCATE ( WADATS(IMOD)%XPHIBBL(NXXX), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) ELSE +#ifdef W3_COAWST_MODEL + ALLOCATE ( WADATS(IMOD)%XPHIBBL(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) +#else ALLOCATE ( WADATS(IMOD)%XPHIBBL(1), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) +#endif END IF ! IF ( OUTFLAGS( 7, 5) ) THEN @@ -2245,6 +2324,16 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) ALLOCATE ( WADATS(IMOD)%XTAUBBL(1,2), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) END IF +#ifdef W3_COAWST_MODEL + ALLOCATE ( WADATS(IMOD)%XPHIBRKX(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + ALLOCATE ( WADATS(IMOD)%XPHIBRKY(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + ALLOCATE ( WADATS(IMOD)%XPHICAPX(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + ALLOCATE ( WADATS(IMOD)%XPHICAPY(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) +#endif ! WADATS(IMOD)%XABA = UNDEF WADATS(IMOD)%XABD = UNDEF @@ -2253,6 +2342,12 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) WADATS(IMOD)%XBEDFORMS = UNDEF WADATS(IMOD)%XPHIBBL = UNDEF WADATS(IMOD)%XTAUBBL = UNDEF +#ifdef W3_COAWST_MODEL + WADATS(IMOD)%XPHIBRKX = UNDEF + WADATS(IMOD)%XPHIBRKY = UNDEF + WADATS(IMOD)%XPHICAPX = UNDEF + WADATS(IMOD)%XPHICAPY = UNDEF +#endif ! IF ( OUTFLAGS( 8, 1) ) THEN ALLOCATE ( WADATS(IMOD)%XMSSX(NXXX), STAT=ISTAT ) @@ -2300,12 +2395,6 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) ALLOCATE ( WADATS(IMOD)%XQP(1) ) END IF ! - IF ( OUTFLAGS( 8, 6) ) THEN - ALLOCATE ( WADATS(IMOD)%XQKK(NXXX) ) - ELSE - ALLOCATE ( WADATS(IMOD)%XQKK(1) ) - END IF - ! WADATS(IMOD)%XMSSX = UNDEF WADATS(IMOD)%XMSSY = UNDEF WADATS(IMOD)%XMSSD = UNDEF @@ -2313,7 +2402,6 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) WADATS(IMOD)%XMSCY = UNDEF WADATS(IMOD)%XMSCD = UNDEF WADATS(IMOD)%XQP(1) = UNDEF - WADATS(IMOD)%XQKK = UNDEF ! IF ( OUTFLAGS( 9, 1) ) THEN ALLOCATE ( WADATS(IMOD)%XDTDYN(NXXX), STAT=ISTAT ) @@ -2752,6 +2840,9 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST ) ! 3. Set pointers ! ITIME => WADATS(IMOD)%ITIME +#ifdef W3_COAWST_MODEL + ITIME_COAWST => WADATS(IMOD)%ITIME_COAWST +#endif IPASS => WADATS(IMOD)%IPASS IDLAST => WADATS(IMOD)%IDLAST NSEALM => WADATS(IMOD)%NSEALM @@ -2835,11 +2926,18 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST ) AS => WADATS(IMOD)%AS CX => WADATS(IMOD)%CX CY => WADATS(IMOD)%CY +#ifdef W3_CURSP + CXTH => WADATS(IMOD)%CXTH + CYTH => WADATS(IMOD)%CYTH +#endif TAUA => WADATS(IMOD)%TAUA TAUADIR=> WADATS(IMOD)%TAUADIR ! HS => WADATS(IMOD)%HS WLM => WADATS(IMOD)%WLM +#ifdef W3_COAWST_MODEL + WLP => WADATS(IMOD)%WLP +#endif T02 => WADATS(IMOD)%T02 T0M1 => WADATS(IMOD)%T0M1 T01 => WADATS(IMOD)%T01 @@ -2903,6 +3001,16 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST ) TUSY => WADATS(IMOD)%TUSY USSX => WADATS(IMOD)%USSX USSY => WADATS(IMOD)%USSY +#ifdef W3_COAWST_MODEL + USS_COAWST => WADATS(IMOD)%USS_COAWST + VSS_COAWST => WADATS(IMOD)%VSS_COAWST + KSS_COAWST => WADATS(IMOD)%KSS_COAWST + PHIBRKX => WADATS(IMOD)%PHIBRKX + PHIBRKY => WADATS(IMOD)%PHIBRKY + QB => WADATS(IMOD)%QB + PHICAPX => WADATS(IMOD)%PHICAPX + PHICAPY => WADATS(IMOD)%PHICAPY +#endif PRMS => WADATS(IMOD)%PRMS TPMS => WADATS(IMOD)%TPMS P2SMS => WADATS(IMOD)%P2SMS @@ -2927,7 +3035,6 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST ) MSCX => WADATS(IMOD)%MSCX MSCY => WADATS(IMOD)%MSCY MSCD => WADATS(IMOD)%MSCD - QKK => WADATS(IMOD)%QKK ! DTDYN => WADATS(IMOD)%DTDYN FCUT => WADATS(IMOD)%FCUT @@ -2938,8 +3045,6 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST ) USERO => WADATS(IMOD)%USERO ! WN => WADATS(IMOD)%WN - USSHX => WADATS(IMOD)%USSHX - USSHY => WADATS(IMOD)%USSHY #ifdef W3_IC3 IC3WN_R=> WADATS(IMOD)%IC3WN_R IC3WN_I=> WADATS(IMOD)%IC3WN_I @@ -2963,6 +3068,12 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST ) DCYDX => WADATS(IMOD)%DCYDX DCXDY => WADATS(IMOD)%DCXDY DCYDY => WADATS(IMOD)%DCYDY +#ifdef W3_CURSP + DCXDXTH => WADATS(IMOD)%DCXDXTH + DCYDXTH => WADATS(IMOD)%DCYDXTH + DCXDYTH => WADATS(IMOD)%DCXDYTH + DCYDYTH => WADATS(IMOD)%DCYDYTH +#endif ! #ifdef W3_SMC DHDX => WADATS(IMOD)%DHDX @@ -3180,6 +3291,15 @@ SUBROUTINE W3XETA ( IMOD, NDSE, NDST ) ! IF ( AINIT2 ) THEN ! +#ifdef W3_COAWST_MODEL + TAUOCX => WADATS(IMOD)%XTAUOCX + TAUOCY => WADATS(IMOD)%XTAUOCY + PHIBRKX => WADATS(IMOD)%XPHIBRKX + PHIBRKY => WADATS(IMOD)%XPHIBRKY + PHICAPX => WADATS(IMOD)%XPHICAPX + PHICAPY => WADATS(IMOD)%XPHICAPY + PHIBBL => WADATS(IMOD)%XPHIBBL +#endif HS => WADATS(IMOD)%XHS WLM => WADATS(IMOD)%XWLM T02 => WADATS(IMOD)%XT02 @@ -3268,7 +3388,6 @@ SUBROUTINE W3XETA ( IMOD, NDSE, NDST ) MSCX => WADATS(IMOD)%XMSCX MSCY => WADATS(IMOD)%XMSCY MSCD => WADATS(IMOD)%XMSCD - QKK => WADATS(IMOD)%XQKK ! DTDYN => WADATS(IMOD)%XDTDYN FCUT => WADATS(IMOD)%XFCUT @@ -3278,9 +3397,6 @@ SUBROUTINE W3XETA ( IMOD, NDSE, NDST ) ! USERO => WADATS(IMOD)%XUSERO ! - USSHX => WADATS(IMOD)%XUSSHX - USSHY => WADATS(IMOD)%XUSSHY - ! END IF ! RETURN diff --git a/model/src/w3agcmmd.F90 b/model/src/w3agcmmd.F90 old mode 100644 new mode 100755 index dbe7741ea..60b144739 --- a/model/src/w3agcmmd.F90 +++ b/model/src/w3agcmmd.F90 @@ -79,7 +79,6 @@ MODULE W3AGCMMD ! CONTAINS !/ ------------------------------------------------------------------- / - !> !> @brief Send coupling fields to atmospheric model. !> @@ -219,7 +218,6 @@ SUBROUTINE SND_FIELDS_TO_ATMOS() ! !/ ------------------------------------------------------------------- / END SUBROUTINE SND_FIELDS_TO_ATMOS - !> !> @brief Receive coupling fields from atmospheric model. !> diff --git a/model/src/w3arrymd.F90 b/model/src/w3arrymd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3bullmd.F90 b/model/src/w3bullmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3canomd.F90 b/model/src/w3canomd.F90 old mode 100644 new mode 100755 index 5395853f2..de287eb85 --- a/model/src/w3canomd.F90 +++ b/model/src/w3canomd.F90 @@ -1,25 +1,5 @@ -!> @file -!> @brief Calculation of the second order correction to the surface -!> gravity wave spectrum. -!> -!> @author P.A.E.M. Janssen -!> @date 21-Aug-2014 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief Calculation of the second order correction to the surface -!> gravity wave spectrum. -!> -!> @author P.A.E.M. Janssen -!> @date 21-Aug-2014 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3CANOMD !/ !/ +-----------------------------------+ @@ -137,18 +117,6 @@ MODULE W3CANOMD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Adds second order spectrum on top of first order spectrum. - !> - !> @param[inout] E Energy density spectrum (1-D), f-theta. - !> @param[in] DEPTH Mean water depth. - !> @param[in] WN Wavenumbers. - !> @param[in] CG Group velocities. - !> @param[in] IACTION Action density spectrum (1-D). - !> - !> @author F. Ardhuin - !> @date 19-Oct-2012 - !> SUBROUTINE W3ADD2NDORDER(E,DEPTH,WN,CG,IACTION) !/ !/ +-----------------------------------+ @@ -345,25 +313,6 @@ END SUBROUTINE W3ADD2NDORDER !----------------------------------------------------------------------- ! - !> - !> @brief Determines second order spectrum. - !> - !> @param[in] F1 2-D free wave spectrum - !> @param[out] F3 2-D spectrum including 2nd-order correction - !> @param[in] NFRE number of frequencies - !> @param[in] NANG number of directions - !> @param[in] FR frequencies - !> @param[in] DFIM frequency increment - !> @param[in] TH directional array - !> @param[in] DELTH directional increment - !> @param[in] DPTH depth array - !> @param[in] SIGM mapping indicator - !> @param[in] NFREH - !> @param[in] NANGH - !> - !> @author Peter Janssen - !> @date NA - !> SUBROUTINE CAL_SEC_ORDER_SPEC(F1,F3,NFRE,NANG,FR,DFIM,TH,DELTH, & DPTH,SIGM, NFREH, NANGH) ! @@ -700,23 +649,6 @@ END SUBROUTINE CAL_SEC_ORDER_SPEC ! !-------------------------------------------------------------------- ! - !> - !> @brief Computes tables for second order spectrum in frequency space. - !> - !> @param NFRE number of frequencies - !> @param NANG number of directions - !> @param NDEPTH number of entries in the depth table - !> @param DEPTHA - !> @param OMSTART start frequency - !> @param FRAC fractional increase in frequency space - !> @param XMR inverse of thinning factor in frequency space - !> @param DFDTH product of increment in frequency and direction - !> @param OMEGA angular frequency array - !> @param TH direction array - !> - !> @author NA - !> @date NA - !> SUBROUTINE TABLES_2ND(NFRE,NANG,NDEPTH,DEPTHA,OMSTART,FRAC,XMR,& DFDTH,OMEGA,TH) ! @@ -889,35 +821,6 @@ END SUBROUTINE TABLES_2ND ! !-------------------------------------------------------------------- ! - !> - !> @brief Computes second order spectrum in frequency space. - !> - !> @param F1 2D free wave spectrum (input) - !> @param F3 bound waves spectrum (output) - !> @param NFRE number of frequencies - !> @param NANG number of directions - !> @param NMAX maximum index corresponds to twice the cut-off frequency - !> - !> @param NDEPTH number of entries in depth table - !> @param DEPTHA start value depth array - !> @param DEPTHD increment depth array - !> @param OMSTART start value angular frequency array - !> @param FRAC fractional increase in frequency space - !> @param MR thinning factor in frequency space - !> @param OMEGA angular frequency array - !> @param DEPTH depth array - !> @param AKMEAN mean wavenumber array - !> @param TA table for minus interactions - !> @param TB table for plus interactions - !> @param TC_QL table for quasi-linear interactions - !> @param TT_4M table for stokes frequency correction - !> @param TT_4P table for stokes frequency correction - !> @param IM_P table for wavenumber m2 plus - !> @param IM_M table for wavenumber m2 min - !> - !> @author NA - !> @date NA - !> SUBROUTINE SECSPOM(F1,F3,NFRE,NANG,NMAX,NDEPTH,& DEPTHA,DEPTHD,OMSTART,FRAC,MR,DFDTH,OMEGA,& DEPTH,AKMEAN,TA,TB,TC_QL,TT_4M,TT_4P,& @@ -1132,28 +1035,14 @@ SUBROUTINE SECSPOM(F1,F3,NFRE,NANG,NMAX,NDEPTH,& ! RETURN END SUBROUTINE SECSPOM - ! - !> - !> @brief Gives nonlinear transfer coefficient for three wave interactions - !> interactions of gravity waves in the ideal case of no current. Determines - !> the minus interaction coefficients. - !> - !> @param XI wave number - !> @param XJ wave number - !> @param THI - !> @param THJ - !> @returns A - !> - !> @author Peter Janssen - !> @date NA - !> + ! + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *A(XI,XJ,THI,THJ) + ! + !----------------------------------------------------------------------- REAL FUNCTION A(XI,XJ,THI,THJ) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *A(XI,XJ,THI,THJ) - ! - !----------------------------------------------------------------------- ! !*** *A* DETERMINES THE MINUS INTERACTIONS. ! @@ -1211,24 +1100,10 @@ REAL FUNCTION A(XI,XJ,THI,THJ) RETURN END FUNCTION A ! - !> - !> @brief Gives nonlinear transfer coefficient for three wave interactions - !> interactions of gravity waves in the ideal case of no current. Determines - !> the plus interaction coefficients. - !> - !> @param XI wave number - !> @param XJ wave number - !> @param THI - !> @param THJ - !> @returns B - !> - !> @author Peter Janssen - !> @date NA - !> + !*** *REAL FUNCTION* *B(XI,XJ,THI,THJ) + ! + !----------------------------------------------------------------------- REAL FUNCTION B(XI,XJ,THI,THJ) - !*** *REAL FUNCTION* *B(XI,XJ,THI,THJ) - ! - !----------------------------------------------------------------------- ! !*** *B* DETERMINES THE PLUS INTERACTION COEFFICIENTS. ! @@ -1285,24 +1160,12 @@ REAL FUNCTION B(XI,XJ,THI,THJ) RETURN END FUNCTION B ! - !> - !> @brief Determine contribution by quasi-linear terms. - !> - !> @param XK0 - !> @param XK1 - !> @param TH0 - !> @param TH1 - !> @returns C_QL - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *C_QL(XK0,XK1,TH0,TH1) + ! + !----------------------------------------------------------------------- REAL FUNCTION C_QL(XK0,XK1,TH0,TH1) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *C_QL(XK0,XK1,TH0,TH1) - ! - !----------------------------------------------------------------------- ! !*** *A* DETERMINES THE QUASI-LINEAR TERM. ! @@ -1349,27 +1212,12 @@ END FUNCTION C_QL ! ! - !> - !> @brief Determines the second-order transfer coefficient - !> for three wave interactions of gravity waves. - !> - !> @param XI wave numbers - !> @param XJ wave numbers - !> @param XK wave numbers - !> @param THI wave direction - !> @param THJ wave direction - !> @param THK wave direction - !> @returns VPLUS - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *VPLUS(XI,XJ,XK,THI,THJ,THK) + ! + !----------------------------------------------------------------------- REAL FUNCTION VPLUS(XI,XJ,XK,THI,THJ,THK) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *VPLUS(XI,XJ,XK,THI,THJ,THK) - ! - !----------------------------------------------------------------------- ! !*** *VPLUS* DETERMINES THE SECOND-ORDER TRANSFER COEFFICIENT ! FOR THREE WAVE INTERACTIONS OF GRAVITY WAVES. @@ -1440,27 +1288,12 @@ REAL FUNCTION VPLUS(XI,XJ,XK,THI,THJ,THK) RETURN END FUNCTION VPLUS ! - !> - !> @brief Determines the second-order transfer coefficient for - !> three wave interactions of gravity waves. - !> - !> @param XI wave number - !> @param XJ wave number - !> @param XK wave number - !> @param THI wave direction - !> @param THJ wave direction - !> @param THK wave direction - !> @returns VMIN - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *VMIN(XI,XJ,XK,THI,THJ,THK) + ! + !----------------------------------------------------------------------- REAL FUNCTION VMIN(XI,XJ,XK,THI,THJ,THK) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *VMIN(XI,XJ,XK,THI,THJ,THK) - ! - !----------------------------------------------------------------------- ! !*** *VMIN* DETERMINES THE SECOND-ORDER TRANSFER COEFFICIENT FOR ! THREE WAVE INTERACTIONS OF GRAVITY WAVES. @@ -1531,29 +1364,12 @@ REAL FUNCTION VMIN(XI,XJ,XK,THI,THJ,THK) RETURN END FUNCTION VMIN ! - !> - !> @brief Determines the third-order transfer coefficient for four - !> wave interactions of gravity waves. - !> - !> @param XI wave number - !> @param XJ wave number - !> @param XK wave number - !> @param XL wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns U - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *U(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION U(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *U(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *U* DETERMINES THE THIRD-ORDER TRANSFER COEFFICIENT FOR FOUR ! WAVE INTERACTIONS OF GRAVITY WAVES. @@ -1622,29 +1438,12 @@ REAL FUNCTION U(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION U ! - !> - !> @brief Determines the contribution of the direct four-wave - !> interactions of gravity waves of the type A_2^*A_3A_4. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns W2 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *W2(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION W2(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *W2(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *W2* DETERMINES THE CONTRIBUTION OF THE DIRECT FOUR-WAVE ! INTERACTIONS OF GRAVITY WAVES OF THE TYPE @@ -1691,29 +1490,12 @@ REAL FUNCTION W2(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION W2 ! - !> - !> @brief Determines the contribution of the virtual - !> four-wave interactions of gravity waves. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns V2 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *V2(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION V2(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *V2(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *V2* DETERMINES THE CONTRIBUTION OF THE VIRTUAL ! FOUR-WAVE INTERACTIONS OF GRAVITY WAVES. @@ -1842,29 +1624,12 @@ REAL FUNCTION V2(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION V2 ! - !> - !> @brief Determines the nonlinear transfer coefficient for four wave - !> interactions of gravity waves of the type A_2A_3A_4. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns W1 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *W1(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION W1(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *W1(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *W1* DETERMINES THE NONLINEAR TRANSFER COEFFICIENT FOR FOUR ! WAVE INTERACTIONS OF GRAVITY WAVES OF THE TYPE @@ -1918,29 +1683,10 @@ REAL FUNCTION W1(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION W1 ! - !> - !> @brief Determines the nonlinear transfer coefficient for four wave - !> interactions of gravity waves of the type A_^*A_3^*A_4^*. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns W4 - !> - !> @author Peter Janssen - !> @date NA - !> + !*** *REAL FUNCTION* *W4(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION W4(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *W4(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *W4* DETERMINES THE NONLINEAR TRANSFER COEFFICIENT FOR FOUR ! WAVE INTERACTIONS OF GRAVITY WAVES of the type @@ -1995,29 +1741,13 @@ REAL FUNCTION W4(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION W4 - - !> - !> @brief Weights of the A_2^*A_3^*A_4 part of the canonical transformation. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns B3 - !> - !> @author Peter Janssen - !> @date NA - !> + ! + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *B3(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION B3(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *B3(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *B3* WEIGHTS OF THE A_2^*A_3^*A_4 PART OF THE ! CANONICAL TRANSFORMATION. @@ -2128,29 +1858,12 @@ REAL FUNCTION B3(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION B3 ! - !> - !> @brief Weights of the A_2^*A_3^*A_4^* part of the canonical - !> transformation. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns B4 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *B4(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION B4(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *B4(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *B4* WEIGHTS OF THE A_2^*A_3^*A_4^* PART OF THE CANONICAL ! TRANSFORMATION. @@ -2241,29 +1954,12 @@ REAL FUNCTION B4(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION B4 ! - !> - !> @brief Weights of the A_2A_3A_4 part of the canonical - !> transformation. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns B1 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *B1(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION B1(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *B1(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *B1* WEIGHTS OF THE A_2A_3A_4 PART OF THE CANONICAL ! TRANSFORMATION. @@ -2359,30 +2055,15 @@ REAL FUNCTION B1(XI,XJ,XK,XL,THI,THJ,THK,THL) ) +W1(RI,RJ,RK,RL,THI,THJ,THK,THL) ) RETURN END FUNCTION B1 + ! - !> - !> @brief Weights of the A_2^*A_3A_4 part of the canonical - !> transformation. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param XL Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @param THL - !> @returns B2 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *B2(XI,XJ,XK,XL,THI,THJ,THK,THL) + ! + !----------------------------------------------------------------------- REAL FUNCTION B2(XI,XJ,XK,XL,THI,THJ,THK,THL) - !----------------------------------------------------------------------- ! - !*** *REAL FUNCTION* *B2(XI,XJ,XK,XL,THI,THJ,THK,THL) - ! - !----------------------------------------------------------------------- ! !*** *B2* WEIGHTS OF THE A_2^*A_3A_4 PART OF THE CANONICAL ! TRANSFORMATION. @@ -2474,26 +2155,12 @@ REAL FUNCTION B2(XI,XJ,XK,XL,THI,THJ,THK,THL) RETURN END FUNCTION B2 ! - !> - !> @brief Auxiliary second-order coefficient. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @returns A1 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *A1(XI,XJ,XK,THI,THJ,THK) + ! + !----------------------------------------------------------------------- REAL FUNCTION A1(XI,XJ,XK,THI,THJ,THK) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *A1(XI,XJ,XK,THI,THJ,THK) - ! - !----------------------------------------------------------------------- ! !*** *A1* AUXILIARY SECOND-ORDER COEFFICIENT. ! @@ -2548,26 +2215,12 @@ REAL FUNCTION A1(XI,XJ,XK,THI,THJ,THK) RETURN END FUNCTION A1 ! - !> - !> @brief Auxiliary second-order function. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @returns A2 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *A2(XI,XJ,XK,THI,THJ,THK) + ! + !----------------------------------------------------------------------- REAL FUNCTION A2(XI,XJ,XK,THI,THJ,THK) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *A2(XI,XJ,XK,THI,THJ,THK) - ! - !----------------------------------------------------------------------- ! !*** *A2* AUXILIARY SECOND-ORDER FUNCTION. ! @@ -2606,26 +2259,12 @@ REAL FUNCTION A2(XI,XJ,XK,THI,THJ,THK) RETURN END FUNCTION A2 ! - !> - !> @brief Auxiliary second-order function. - !> - !> @param XI Wave number - !> @param XJ Wave number - !> @param XK Wave number - !> @param THI - !> @param THJ - !> @param THK - !> @returns A3 - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + !*** *REAL FUNCTION* *A3(XI,XJ,XK,THI,THJ,THK) + ! + !----------------------------------------------------------------------- REAL FUNCTION A3(XI,XJ,XK,THI,THJ,THK) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *A3(XI,XJ,XK,THI,THJ,THK) - ! - !----------------------------------------------------------------------- ! !*** *A3* AUXILIARY SECOND-ORDER FUNCTION. ! @@ -2678,23 +2317,14 @@ REAL FUNCTION A3(XI,XJ,XK,THI,THJ,THK) END FUNCTION A3 ! - !> - !> @brief Determines the dispersion relation for gravity - !> waves. - !> - !> @param X Wave number - !> @returns OMEG - !> - !> @author Peter Janssen - !> @date NA - !> + !----------------------------------------------------------------------- + ! + ! + !*** *REAL FUNCTION* *OMEG(X)* + ! + !----------------------------------------------------------------------- + ! REAL FUNCTION OMEG(X) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *OMEG(X)* - ! - !----------------------------------------------------------------------- - ! ! !*** *OMEG* DETERMINES THE DISPERSION RELATION FOR GRAVITY ! WAVES. @@ -2736,21 +2366,15 @@ REAL FUNCTION OMEG(X) RETURN END FUNCTION OMEG ! - !> - !> @brief Determines the group velocity for gravity- waves. - !> - !> @param X Wave number - !> @returns VG - !> - !> @author Peter Janssen - !> @date NA - !> + ! + !----------------------------------------------------------------------- + ! + ! + !*** *REAL FUNCTION* *VG(X)* + ! + !----------------------------------------------------------------------- + ! REAL FUNCTION VG(X) - !----------------------------------------------------------------------- - ! - !*** *REAL FUNCTION* *VG(X)* - ! - !----------------------------------------------------------------------- ! !*** *VG* DETERMINES THE GROUP VELOCITY FOR GRAVITY- WAVES. ! @@ -2792,16 +2416,6 @@ REAL FUNCTION VG(X) RETURN END FUNCTION VG !--------------------------------------------------------------------- - !> - !> @brief Gives the wavenumber. - !> - !> @param OM - !> @param BETA - !> @returns AKI - !> - !> @author Peter Janssen - !> @date NA - !> REAL FUNCTION AKI(OM,BETA) ! This function gives the wavenumber ... !--------------------------------------------------------------------- @@ -2830,18 +2444,6 @@ REAL FUNCTION AKI(OM,BETA) RETURN END FUNCTION AKI ! - !> - !> @brief NA. - !> - !> @param XI - !> @param XJ - !> @param THI - !> @param THJ - !> @returns VABS - !> - !> @author NA - !> @date NA - !> REAL FUNCTION VABS(XI,XJ,THI,THJ) ! !--------------------------------------------------------------------- @@ -2860,18 +2462,6 @@ REAL FUNCTION VABS(XI,XJ,THI,THJ) RETURN END FUNCTION VABS ! - !> - !> @brief NA. - !> - !> @param XI - !> @param XJ - !> @param THI - !> @param THJ - !> @returns VDIR - !> - !> @author NA - !> @date NA - !> REAL FUNCTION VDIR(XI,XJ,THI,THJ) ! !--------------------------------------------------------------------- diff --git a/model/src/w3cspcmd.F90 b/model/src/w3cspcmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3dispmd.F90 b/model/src/w3dispmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3fld1md.F90 b/model/src/w3fld1md.F90 old mode 100644 new mode 100755 index ad94a12ea..960fd185a --- a/model/src/w3fld1md.F90 +++ b/model/src/w3fld1md.F90 @@ -1116,11 +1116,7 @@ SUBROUTINE APPENDTAIL(INSPC, WN2, NKT, KA1, KA2, KA3, WNDDIR,SAT) DO K=KA1, KA2-1 AVG=SUM(INSPC(K,:))/MAX(REAL(NTH),1.) DO T=1,NTH - if (avg /= 0.0) then - INSPC(K,T)=BT(K)*INSPC(K,T)/TPI/(WN2(K)**3.0)/AVG - else - inspc(k,t) = 0.0 - end if + INSPC(K,T)=BT(K)*INSPC(K,T)/TPI/(WN2(K)**3.0)/AVG ENDDO ENDDO !----------------------------------------------------------- @@ -1138,11 +1134,7 @@ SUBROUTINE APPENDTAIL(INSPC, WN2, NKT, KA1, KA2, KA3, WNDDIR,SAT) ENDDO AVG=SUM(NORMSPC)/MAX(REAL(NTH),1.) DO T=1, NTH - if (avg /= 0.0) then - INSPC(K,T) = SAT * NORMSPC(T)/TPI/(WN2(K)**3.0)/AVG - else - inspc(k,t) = 0.0 - end if + INSPC(K,T) = SAT * NORMSPC(T)/TPI/(WN2(K)**3.0)/AVG ENDDO ENDDO DO T=1, NTH @@ -1156,11 +1148,7 @@ SUBROUTINE APPENDTAIL(INSPC, WN2, NKT, KA1, KA2, KA3, WNDDIR,SAT) AVG=SUM(NORMSPC)/MAX(REAL(NTH),1.)!1./4. DO K=KA3+1, NKT DO T=1, NTH - if (avg /= 0.0) then - INSPC(K,T)=NORMSPC(T)*(SAT)/TPI/(WN2(K)**3.0)/AVG - else - inspc(k,t) = 0.0 - end if + INSPC(K,T)=NORMSPC(T)*(SAT)/TPI/(WN2(K)**3.0)/AVG ENDDO ENDDO DEALLOCATE(ANGLE1) diff --git a/model/src/w3fld2md.F90 b/model/src/w3fld2md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3fldsmd.F90 b/model/src/w3fldsmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3flx1md.F90 b/model/src/w3flx1md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3flx2md.F90 b/model/src/w3flx2md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3flx3md.F90 b/model/src/w3flx3md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3flx4md.F90 b/model/src/w3flx4md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3flx5md.F90 b/model/src/w3flx5md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3gdatmd.F90 b/model/src/w3gdatmd.F90 old mode 100644 new mode 100755 index 0ac1e0ed4..6cd6e91d8 --- a/model/src/w3gdatmd.F90 +++ b/model/src/w3gdatmd.F90 @@ -429,17 +429,6 @@ MODULE W3GDATMD ! KDCON Real Public Conversion factor for relative depth. ! KDMN Real Public Minimum relative depth. ! SNLSn Real Public Constants in shallow water factor. - ! IQTPE Int. Public Type of depth treatment - ! -2 : Deep water GQM with scaling - ! 1 : Deep water DIA - ! 2 : Deep water DIA with scaling - ! 3 : Finite water depth DIA - ! GQNF1 Int. Public Gaussian quadrature resolution - ! GQNT1 Int. Public Gaussian quadrature resolution - ! GQNNQ_OM2 Int. Public Gaussian quadrature resolution - ! GQTHRSAT Real Public Threshold on saturation for SNL calculation - ! GQTHRCOU Real Public Threshold for filter on coupling coefficient - ! GQAMP R.A. Public Amplification factors ! (!/NL2) ! IQTPE Int. Public Type of depth treatment ! 1 : Deep water @@ -739,9 +728,6 @@ MODULE W3GDATMD #ifdef W3_IS2 REAL, POINTER :: IS2PARS(:) #endif - LOGICAL :: LMPENABLED ! flag to enable Li et al. Langmuir parameterization - LOGICAL :: SDTAIL ! flag to enable high-freq tail in Li et al. Stokes Drift computations - INTEGER :: HSLMODE ! 0 for test (HSL=10m everywhere, 1 for coupler-based HSL) ! ! unstructured data ! @@ -924,8 +910,6 @@ MODULE W3GDATMD #ifdef W3_NL1 REAL :: SNLC1, LAM, KDCON, KDMN, & SNLS1, SNLS2, SNLS3 - INTEGER :: IQTPE, GQNF1, GQNT1, GQNQ_OM2 - REAL :: NLTAIL, GQTHRSAT, GQTHRCOU, GQAMP(4) #endif #ifdef W3_NL2 INTEGER :: IQTPE, NDPTHS @@ -1100,10 +1084,6 @@ MODULE W3GDATMD INTEGER, POINTER :: NBEDGE INTEGER, POINTER :: EDGES(:,:), NEIGH(:,:) ! - LOGICAL, POINTER :: LMPENABLED - LOGICAL, POINTER :: SDTAIL - INTEGER, POINTER :: HSLMODE - ! ! Variables for unstructured grids ! INTEGER, POINTER :: NTRI,COUNTRI,COUNTOT,NNZ @@ -1339,8 +1319,6 @@ MODULE W3GDATMD !/ Data aliasses for structure SNLP(S) !/ #ifdef W3_NL1 - INTEGER, POINTER :: IQTPE, GQNF1, GQNT1, GQNQ_OM2 - REAL, POINTER :: NLTAIL, GQTHRSAT, GQTHRCOU, GQAMP(:) REAL, POINTER :: SNLC1, LAM, KDCON, KDMN, & SNLS1, SNLS2, SNLS3 #endif @@ -2296,10 +2274,6 @@ SUBROUTINE W3SETG ( IMOD, NDSE, NDST ) USSPF => GRIDS(IMOD)%USSPF USSP_WN => GRIDS(IMOD)%USSP_WN FFACBERG => GRIDS(IMOD)%FFACBERG - ! - LMPENABLED => GRIDS(IMOD)%LMPENABLED - SDTAIL => GRIDS(IMOD)%SDTAIL - HSLMODE => GRIDS(IMOD)%HSLMODE #ifdef W3_REF1 REFLC => GRIDS(IMOD)%REFLC REFLD => GRIDS(IMOD)%REFLD @@ -2716,14 +2690,6 @@ SUBROUTINE W3SETG ( IMOD, NDSE, NDST ) SNLS1 => MPARS(IMOD)%SNLPS%SNLS1 SNLS2 => MPARS(IMOD)%SNLPS%SNLS2 SNLS3 => MPARS(IMOD)%SNLPS%SNLS3 - IQTPE => MPARS(IMOD)%SNLPS%IQTPE - GQNF1 => MPARS(IMOD)%SNLPS%GQNF1 - GQNT1 => MPARS(IMOD)%SNLPS%GQNT1 - GQNQ_OM2 => MPARS(IMOD)%SNLPS%GQNQ_OM2 - NLTAIL => MPARS(IMOD)%SNLPS%NLTAIL - GQTHRSAT => MPARS(IMOD)%SNLPS%GQTHRSAT - GQTHRCOU=> MPARS(IMOD)%SNLPS%GQTHRCOU - GQAMP=> MPARS(IMOD)%SNLPS%GQAMP #endif #ifdef W3_NL2 IQTPE => MPARS(IMOD)%SNLPS%IQTPE diff --git a/model/src/w3getmem.c b/model/src/w3getmem.c old mode 100644 new mode 100755 diff --git a/model/src/w3gig1md.F90 b/model/src/w3gig1md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3gkemd.F90 b/model/src/w3gkemd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3gridmd.F90 b/model/src/w3gridmd.F90 old mode 100644 new mode 100755 index 8982785de..281ed7a3f --- a/model/src/w3gridmd.F90 +++ b/model/src/w3gridmd.F90 @@ -113,7 +113,6 @@ MODULE W3GRIDMD !/ 27-May-2021 : Moved to a subroutine ( version 7.13 ) !/ 07-Jun-2021 : S_{nl} GKE NL5 (Q. Liu) ( version 7.13 ) !/ 19-Jul-2021 : Momentum and air density support ( version 7.14 ) - !/ 28-Feb-2023 : GQM as an alternative for NL1 ( version 7.15 ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -440,7 +439,7 @@ MODULE W3GRIDMD ! (2006) input and Babanin et al. (2001,2010) dissipation. ! ! !/NL0 No nonlinear interactions. - ! !/NL1 Discrete interaction approximation (DIA or GQM). + ! !/NL1 Discrete interaction approximation (DIA). ! !/NL2 Exact interactions (WRT). ! !/NL3 Generalized Multiple DIA (GMD). ! !/NL4 Two Scale Approximation @@ -587,9 +586,6 @@ MODULE W3GRIDMD IY2, J, JJ, IXR(4), IYR(4), ISEAI(4),& IST, NKI, NTHI, NRIC, NRIS, I, IDFT, & NSTAT, NBT, NLAND, NOSW, NMAPB, IMAPB -#ifdef W3_ASCII - INTEGER :: NDSMA -#endif #ifdef W3_NL2 INTEGER :: IDEPTH #endif @@ -840,7 +836,7 @@ MODULE W3GRIDMD ! #ifdef W3_ST4 INTEGER :: SWELLFPAR, SDSISO, SDSBRFDF - REAL :: SDSBCHOICE + REAL :: SDSBCHOICE REAL :: ZWND, ALPHA0, Z0MAX, BETAMAX, SINTHP,& ZALP, Z0RAT, TAUWSHELTER, SWELLF, & SWELLF2,SWELLF3,SWELLF4, SWELLF5, & @@ -868,8 +864,6 @@ MODULE W3GRIDMD #ifdef W3_NL1 REAL :: LAMBDA, KDCONV, KDMIN, & SNLCS1, SNLCS2, SNLCS3 - INTEGER :: IQTYPE, GQMNF1, GQMNT1, GQMNQ_OM2 - REAL :: TAILNL, GQMTHRSAT, GQMTHRCOU, GQAMP1, GQAMP2, GQAMP3, GQAMP4 #endif #ifdef W3_NL2 INTEGER :: IQTYPE, NDEPTH @@ -1001,9 +995,7 @@ MODULE W3GRIDMD #endif #ifdef W3_NL1 NAMELIST /SNL1/ LAMBDA, NLPROP, KDCONV, KDMIN, & - SNLCS1, SNLCS2, SNLCS3, & - IQTYPE, TAILNL, GQMNF1, GQMNT1, & - GQMNQ_OM2, GQMTHRSAT, GQMTHRCOU, GQAMP1, GQAMP2, GQAMP3, GQAMP4 + SNLCS1, SNLCS2, SNLCS3 #endif #ifdef W3_NL2 NAMELIST /SNL2/ IQTYPE, TAILNL, NDEPTH @@ -1113,7 +1105,6 @@ MODULE W3GRIDMD STH1MF, I1STH1M, I2STH1M, & TH2MF, I1TH2M, I2TH2M, & STH2MF, I1STH2M, I2STH2M - NAMELIST /LMPN/ LMPENABLED, SDTAIL, HSLMODE #ifdef W3_IS1 NAMELIST /SIS1/ ISC1, ISC2 #endif @@ -1837,18 +1828,6 @@ SUBROUTINE W3GRID() SNLCS1 = 5.5 SNLCS2 = 0.833 SNLCS3 = -1.25 - ! Additional parameters for GQM - IQTYPE = 1 - TAILNL = -FACHF - GQMNF1 = 14 - GQMNT1 = 8 - GQMNQ_OM2=8 - GQMTHRSAT=0. - GQMTHRCOU=0.015 - GQAMP1=1. - GQAMP2=0.002 - GQAMP3=1. - GQAMP4=1. CALL READNL ( NDSS, 'SNL1', STATUS ) WRITE (NDSO,922) STATUS WRITE (NDSO,923) LAMBDA, NLPROP, KDCONV, KDMIN, & @@ -1860,18 +1839,6 @@ SUBROUTINE W3GRID() SNLS1 = SNLCS1 SNLS2 = SNLCS2 SNLS3 = SNLCS3 - ! Additional parameters for GQM - IQTPE = IQTYPE - GQNF1 = GQMNF1 - GQNT1 = GQMNT1 - GQNQ_OM2 = GQMNQ_OM2 - GQTHRSAT = GQMTHRSAT - GQTHRCOU = GQMTHRCOU - GQAMP(1) = GQAMP1 - GQAMP(2) = GQAMP2 - GQAMP(3) = GQAMP3 - GQAMP(4) = GQAMP4 - NLTAIL = TAILNL #endif ! #ifdef W3_ST0 @@ -2764,11 +2731,6 @@ SUBROUTINE W3GRID() I2STH2M=NK ! FACBERG=1. - ! - LMPENABLED = .false. - SDTAIL = .false. - HSLMODE = 0 ! 0 for test (HSL=10m everywhere, 1 for coupler-based HSL) - ! #ifdef W3_IS0 WRITE (NDSO,944) #endif @@ -2920,10 +2882,6 @@ SUBROUTINE W3GRID() IC5MAXKI, IC5MINHW, IC5MAXITER, IC5RKICK, & IC5KFILTER, IC5MSTR(NINT(IC5VEMOD)) #endif - ! - CALL READNL ( NDSS, 'LMPN', STATUS ) - WRITE (NDSO,4960) STATUS - WRITE (NDSO,4961) LMPENABLED, SDTAIL, HSLMODE ! CALL READNL ( NDSS, 'OUTS', STATUS ) WRITE (NDSO,4970) STATUS @@ -3214,10 +3172,7 @@ SUBROUTINE W3GRID() #endif #ifdef W3_NL1 WRITE (NDSO,2922) LAMBDA, NLPROP, KDCONV, KDMIN, & - SNLCS1, SNLCS2, SNLCS3, & - IQTYPE, TAILNL, GQMNF1, & - GQMNT1, GQMNQ_OM2, GQMTHRSAT, GQMTHRCOU,& - GQAMP1, GQAMP2, GQAMP3, GQAMP4 + SNLCS1, SNLCS2, SNLCS3 #endif #ifdef W3_NL2 WRITE (NDSO,2922) IQTYPE, TAILNL, NDEPTH @@ -3315,7 +3270,7 @@ SUBROUTINE W3GRID() JGS_TERMINATE_DIFFERENCE, & JGS_TERMINATE_NORM, & JGS_LIMITER, & - JGS_LIMITER_FUNC, & + JGS_LIMITER_FUNC, & JGS_USE_JACOBI, & JGS_BLOCK_GAUSS_SEIDEL, & JGS_MAXITER, & @@ -3652,7 +3607,7 @@ SUBROUTINE W3GRID() END SELECT IF (FSTOTALIMP .or. FSTOTALEXP) THEN - LPDLIB = .TRUE. + LPDLIB = .TRUE. ENDIF ! IF (SUM(UNSTSCHEMES).GT.1) WRITE(NDSO,1035) @@ -5952,16 +5907,9 @@ SUBROUTINE W3GRID() !10. Write model definition file. ! WRITE (NDSO,999) - CALL W3IOGR ( 'WRITE', NDSM & -#ifdef W3_ASCII - ,NDSA=NDSMA & -#endif - ) + CALL W3IOGR ( 'WRITE', NDSM ) ! CLOSE (NDSM) -#ifdef W3_ASCII - CLOSE (NDSMA) -#endif ! GOTO 2222 ! @@ -6272,11 +6220,7 @@ SUBROUTINE W3GRID() 2922 FORMAT ( ' &SNL1 LAMBDA =',F7.3,', NLPROP =',E10.3, & ', KDCONV =',F7.3,', KDMIN =',F7.3,','/ & ' SNLCS1 =',F7.3,', SNLCS2 =',F7.3, & - ', SNLCS3 = ',F7.3','/ & - ' IQTYPE =',I2,', TAILNL =',F5.1,','/ & - ' GQMNF1 =',I2,', GQMNT1 =',I2,',', & - ' GQMNQ_OM2 =',I2,', GQMTHRSAT =',E11.4,', GQMTHRCOU =',F4.3,','/ & - ' GQAMP1 =',F5.3,', GQAMP2 =',F5.3,', GQAMP3 =',F5.3,', GQAMP4 =',F5.3,' /') + ', SNLCS3 = ',F7.3,' /') #endif ! #ifdef W3_NL2 @@ -6729,11 +6673,7 @@ SUBROUTINE W3GRID() /' (0.0==> no reduction and 1.0==> no wind', & /' input with 100% ice cover)') ! -! -4960 FORMAT (/' Langmuir Mixing Parameterization ',A/ & - ' --------------------------------------------------') -4961 FORMAT (' &LMPN LMPENABLED = ',L, 'SDTAIL = ', L, ' HSLMODE = ', I2 '/' ) -! + ! 4970 FORMAT (/' Spectral output on full grid ',A/ & ' --------------------------------------------------') 4971 FORMAT ( ' Second order pressure at K=0:',3I4) @@ -7404,8 +7344,6 @@ SUBROUTINE READNL ( NDS, NAME, STATUS ) READ (NDS,NML=UNST,END=801,ERR=802,IOSTAT=J) CASE('OUTS') READ (NDS,NML=OUTS,END=801,ERR=802,IOSTAT=J) - CASE('LMPN') - READ (NDS,NML=LMPN,END=801,ERR=802,IOSTAT=J) CASE('MISC') READ (NDS,NML=MISC,END=801,ERR=802,IOSTAT=J) CASE DEFAULT diff --git a/model/src/w3gsrumd.F90 b/model/src/w3gsrumd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3idatmd.F90 b/model/src/w3idatmd.F90 old mode 100644 new mode 100755 index 52035dafd..5a6358891 --- a/model/src/w3idatmd.F90 +++ b/model/src/w3idatmd.F90 @@ -94,8 +94,6 @@ MODULE W3IDATMD ! FLCUR Log. Public Flag for current input. ! FLWIND Log. Public Flag for wind input. ! FLICE Log. Public Flag for ice input. - ! HSL R.A. Public Depth of a surface layer over which Stokes - ! drift is averaged ! FLTAUA Log. Public Flag for atmospheric momentum input ! FLRHOA Log. Public Flag for air density input ! INFLAGS1 L.A. Public Array consolidating the above six @@ -218,7 +216,6 @@ MODULE W3IDATMD REAL, POINTER :: CYTIDE(:,:,:,:) REAL, POINTER :: WLTIDE(:,:,:,:) #endif - REAL, POINTER :: HSL(:,:) LOGICAL :: IINIT #ifdef W3_WRST LOGICAL :: WRSTIINIT=.FALSE. @@ -269,7 +266,6 @@ MODULE W3IDATMD LOGICAL, POINTER :: FLLEVTIDE, FLCURTIDE, & FLLEVRESI, FLCURRESI #endif - REAL , POINTER :: HSL(:,:) !/ CONTAINS !/ ------------------------------------------------------------------- / @@ -738,9 +734,6 @@ SUBROUTINE W3DIMI ( IMOD, NDSE, NDST, FLAGSTIDEIN ) CHECK_ALLOC_STATUS ( ISTAT ) END IF ! - ALLOCATE ( INPUTS(IMOD)%HSL(NX,NY), STAT=ISTAT ) - CHECK_ALLOC_STATUS ( ISTAT ) - ! INPUTS(IMOD)%IINIT = .TRUE. ! #ifdef W3_T @@ -1054,7 +1047,6 @@ SUBROUTINE W3SETI ( IMOD, NDSE, NDST ) ICEI => INPUTS(IMOD)%ICEI BERGI => INPUTS(IMOD)%BERGI END IF - HSL => INPUTS(IMOD)%HSL ! IF ( FLTAUA ) THEN UX0 => INPUTS(IMOD)%UX0 diff --git a/model/src/w3igcmmd.F90 b/model/src/w3igcmmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3initmd.F90 b/model/src/w3initmd.F90 old mode 100644 new mode 100755 index 2389539f1..f75b9ea71 --- a/model/src/w3initmd.F90 +++ b/model/src/w3initmd.F90 @@ -239,9 +239,6 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, ! (first). ! 11: Track information file unit number. ! 12: Track output file unit number. - ! 13: Wave separation output file unit number. - ! 14: Grid output file unit number. - ! 15: Point output file unit number. ascii ! MTRACE I.A. I Array with subroutine tracing information. ! 1: Output unit number for trace. ! 2: Maximum number of trace prints. @@ -447,12 +444,6 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, #endif #ifdef W3_UOST USE W3UOSTMD, ONLY: UOST_SETGRID -#endif - use w3timemd, only : set_user_timestring - use w3odatmd, only : runtype, restart_from_binary, use_restartnc, user_restfname - use w3odatmd, only : logfile_is_assigned -#ifdef W3_PIO - use wav_restart_mod, only : read_restart #endif !/ #ifdef W3_MPI @@ -462,7 +453,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, !/ ------------------------------------------------------------------- / !/ Parameter list !/ - INTEGER, INTENT(IN) :: IMOD, MDS(15), MTRACE(2), & + INTEGER, INTENT(IN) :: IMOD, MDS(13), MTRACE(2), & ODAT(40),NPT, IPRT(6),& MPI_COMM LOGICAL, INTENT(IN) :: IsMulti @@ -521,10 +512,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, #ifdef W3_PDLIB INTEGER :: IScal(1), IPROC #endif - logical :: exists integer :: memunit - character(len=16) :: user_timestring !YYYY-MM-DD-SSSSS - character(len=1024) :: fname !/ !/ ------------------------------------------------------------------- / ! @@ -651,53 +639,51 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, IF (FSTOTALIMP .and. .NOT. LPDLIB) THEN WRITE(NDSE,*) 'IMPTOTAL is selected' WRITE(NDSE,*) 'But PDLIB is not' - CALL FLUSH(NDSE) - STOP + CALL FLUSH(NDSE) + STOP ELSE IF (FSTOTALEXP .and. .NOT. LPDLIB) THEN WRITE(NDSE,*) 'EXPTOTAL is selected' WRITE(NDSE,*) 'But PDLIB is not' - CALL FLUSH(NDSE) - STOP + CALL FLUSH(NDSE) + STOP END IF #ifdef W3_PDLIB IF (B_JGS_BLOCK_GAUSS_SEIDEL .AND. .NOT. B_JGS_USE_JACOBI) THEN WRITE(NDSE,*) 'B_JGS_BLOCK_GAUSS_SEIDEL is used but the Jacobi solver is not choosen' WRITE(NDSE,*) 'Please set JGS_USE_JACOBI .eqv. .true.' - CALL FLUSH(NDSE) - STOP + CALL FLUSH(NDSE) + STOP ENDIF #endif - + ! ! 1.c Open files without unpacking MDS ,,, ! - if (.not. logfile_is_assigned) then - IE = LEN_TRIM(FEXT) - LFILE = 'log.' // FEXT(:IE) - IFL = LEN_TRIM(LFILE) + IE = LEN_TRIM(FEXT) + LFILE = 'log.' // FEXT(:IE) + IFL = LEN_TRIM(LFILE) #ifdef W3_SHRD - TFILE = 'test.' // FEXT(:IE) + TFILE = 'test.' // FEXT(:IE) #endif #ifdef W3_DIST - IW = 1 + INT ( LOG10 ( REAL(NAPROC) + 0.5 ) ) - IW = MAX ( 3 , MIN ( 9 , IW ) ) - WRITE (FORMAT,'(A5,I1.1,A1,I1.1,A4)') & - '(A4,I', IW, '.', IW, ',2A)' - WRITE (TFILE,FORMAT) 'test', & - OUTPTS(IMOD)%IAPROC, '.', FEXT(:IE) -#endif - IFT = LEN_TRIM(TFILE) - J = LEN_TRIM(FNMPRE) - ! - IF ( OUTPTS(IMOD)%IAPROC .EQ. OUTPTS(IMOD)%NAPLOG ) & - OPEN (MDS(1),FILE=FNMPRE(:J)//LFILE(:IFL),ERR=888,IOSTAT=IERR) - ! - IF ( MDS(3).NE.MDS(1) .AND. MDS(3).NE.MDS(4) .AND. TSTOUT ) THEN - INQUIRE (MDS(3),OPENED=OPENED) - IF ( .NOT. OPENED ) OPEN (MDS(3),FILE=FNMPRE(:J)//TFILE(:IFT), ERR=889, & - IOSTAT=IERR) - END IF - end if ! if (.not. logfile_is_assigned) + IW = 1 + INT ( LOG10 ( REAL(NAPROC) + 0.5 ) ) + IW = MAX ( 3 , MIN ( 9 , IW ) ) + WRITE (FORMAT,'(A5,I1.1,A1,I1.1,A4)') & + '(A4,I', IW, '.', IW, ',2A)' + WRITE (TFILE,FORMAT) 'test', & + OUTPTS(IMOD)%IAPROC, '.', FEXT(:IE) +#endif + IFT = LEN_TRIM(TFILE) + J = LEN_TRIM(FNMPRE) + ! + IF ( OUTPTS(IMOD)%IAPROC .EQ. OUTPTS(IMOD)%NAPLOG ) & + OPEN (MDS(1), FILE=FNMPRE(:J)//LFILE(:IFL),ERR=888,IOSTAT=IERR) + ! + IF ( MDS(3).NE.MDS(1) .AND. MDS(3).NE.MDS(4) .AND. TSTOUT ) THEN + INQUIRE (MDS(3),OPENED=OPENED) + IF ( .NOT. OPENED ) OPEN (MDS(3),FILE=FNMPRE(:J)//TFILE(:IFT), ERR=889, & + IOSTAT=IERR) + END IF ! ! 1.d Dataset unit numbers ! @@ -737,7 +723,6 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, ! 2.a Read model definition file ! CALL W3IOGR ( 'READ', NDS(5), IMOD, FEXT ) - IF (GTYPE .eq. UNGTYPE) THEN CALL SPATIAL_GRID CALL NVECTRI @@ -965,69 +950,40 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, ! 3.a Read restart file ! VA(:,:) = 0. -#ifdef W3_PIO - if (use_restartnc) then - if (runtype == 'continue' )then - call set_user_timestring(time,user_timestring) - if (restart_from_binary) then - fname = trim(user_restfname)//trim(user_timestring) - else - fname = trim(user_restfname)//trim(user_timestring)//'.nc' - endif - inquire(file=trim(fname), exist=exists) - if (exists) then - if (restart_from_binary) then - call w3iors('READ', nds(6), sig(nk), imod, filename=trim(fname)) - else - call read_restart(trim(fname), va=va, mapsta=mapsta, mapst2=mapst2) - end if - else - call extcde (60, msg="required restart file " // trim(fname) // " does not exist") - end if - else - call read_restart('none') - ! mapst2 is module variable defined in read of mod_def; maptst is from 2.b above - flcold = .true. - end if - else -#endif - #ifdef W3_DEBUGCOH - CALL ALL_VA_INTEGRAL_PRINT(IMOD, "Before W3IORS call", 1) + CALL ALL_VA_INTEGRAL_PRINT(IMOD, "Before W3IORS call", 1) #endif #ifdef W3_TIMINGS - CALL PRINT_MY_TIME("Before W3IORS") + CALL PRINT_MY_TIME("Before W3IORS") #endif - CALL W3IORS ( 'READ', NDS(6), SIG(NK), IMOD) + CALL W3IORS ( 'READ', NDS(6), SIG(NK), IMOD) #ifdef W3_TIMINGS - CALL PRINT_MY_TIME("After W3IORS") + CALL PRINT_MY_TIME("After W3IORS") #endif - call print_memcheck(memunit, 'memcheck_____:'//' WW3_INIT SECTION 3a') + call print_memcheck(memunit, 'memcheck_____:'//' WW3_INIT SECTION 3a') #ifdef W3_DEBUGCOH - CALL ALL_VA_INTEGRAL_PRINT(IMOD, "After W3IORS call", 1) -#endif - FLCOLD = RSTYPE.LE.1 .OR. RSTYPE.EQ.4 - IF ( IAPROC .EQ. NAPLOG ) THEN - IF (RSTYPE.EQ.0) THEN - WRITE (NDSO,930) 'cold start (idealized).' - ELSE IF ( RSTYPE .EQ. 1 ) THEN - WRITE (NDSO,930) 'cold start (wind).' - ELSE IF ( RSTYPE .EQ. 4 ) THEN - WRITE (NDSO,930) 'cold start (calm).' - ELSE - WRITE (NDSO,930) 'full restart.' - END IF + CALL ALL_VA_INTEGRAL_PRINT(IMOD, "After W3IORS call", 1) +#endif + FLCOLD = RSTYPE.LE.1 .OR. RSTYPE.EQ.4 + IF ( IAPROC .EQ. NAPLOG ) THEN + IF (RSTYPE.EQ.0) THEN + WRITE (NDSO,930) 'cold start (idealized).' + ELSE IF ( RSTYPE .EQ. 1 ) THEN + WRITE (NDSO,930) 'cold start (wind).' + ELSE IF ( RSTYPE .EQ. 4 ) THEN + WRITE (NDSO,930) 'cold start (calm).' + ELSE + WRITE (NDSO,930) 'full restart.' END IF + END IF #ifdef W3_DEBUGCOH - CALL ALL_VA_INTEGRAL_PRINT(IMOD, "W3INIT, step 4.2", 1) + CALL ALL_VA_INTEGRAL_PRINT(IMOD, "W3INIT, step 4.2", 1) #endif #ifdef W3_TIMINGS - CALL PRINT_MY_TIME("After restart inits") -#endif -#ifdef W3_PIO - end if ! if (use_restartnc) + CALL PRINT_MY_TIME("After restart inits") #endif + ! ! 3.b Compare MAPSTA from grid and restart ! @@ -1305,6 +1261,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, ! MAPTST = MOD(MAPST2/2,2) MAPST2 = MAPST2 - 2*MAPTST + ! !Li For multi-resolution SMC grid, these 1-NX and 1-NY nested loops !Li may miss the refined cells as they are not 1-1 corresponding to @@ -1346,10 +1303,10 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, END DO !Li END DO #ifdef W3_DEBUGSTP - WRITE(740+IAPROC,*) 'w3initmd 1: max/min(WLVeff)=', max_val, min_val - FLUSH(740+IAPROC) - max_val = 0 - min_val = 0 + WRITE(740+IAPROC,*) 'w3initmd 1: max/min(WLVeff)=', max_val, min_val + FLUSH(740+IAPROC) + max_val = 0 + min_val = 0 #endif DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) @@ -1378,10 +1335,12 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, CALL SET_IOBDP_PDLIB ENDIF #endif + ! #ifdef W3_DEBUGCOH CALL ALL_VA_INTEGRAL_PRINT(IMOD, "W3INIT, step 8.2", 1) #endif + ! MAPST2 = MAPST2 + 2*MAPTST ! @@ -1435,6 +1394,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, ! END DO END DO + ! ! 6. Initialize arrays ---------------------------------------------- / ! Some initialized in W3IORS @@ -1451,7 +1411,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, ! ! 7. Write info to log file ----------------------------------------- / ! - IF ( IAPROC .EQ. NAPLOG) THEN + IF ( IAPROC .EQ. NAPLOG ) THEN ! WRITE (NDSO,970) GNAME IF ( FLLEV ) WRITE (NDSO,971) 'Prescribed' @@ -1538,9 +1498,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, WRITE (NDSO,990) DTME21 END IF ! - if (.not. logfile_is_assigned) then - WRITE (NDSO,984) - end if + WRITE (NDSO,984) ! END IF ! @@ -2189,11 +2147,13 @@ SUBROUTINE W3MPIO ( IMOD ) STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, & HCMAXD, QP, PTHP0, PQP, PPE, PGW, PSW, & PTM1, PT1, PT2, PEP, WBT, CX, CY, & - TAUOCX, TAUOCY, WNMEAN, QKK + TAUOCX, TAUOCY, WNMEAN +# ifdef W3_COAWST_MODEL + USE W3ADATMD, ONLY: PHIBRKX, PHIBRKY + USE W3ADATMD, ONLY: PHICAPX, PHICAPY +# endif #endif - USE W3ADATMD, ONLY: USSHX, USSHY - #ifdef W3_MPI USE W3GDATMD, ONLY: NK USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, NTPROC, FLOUT, & @@ -2211,7 +2171,6 @@ SUBROUTINE W3MPIO ( IMOD ) #endif USE W3GDATMD, ONLY: GTYPE, UNGTYPE USE CONSTANTS, ONLY: LPDLIB - use w3odatmd, only : restart_from_binary, use_restartnc, use_historync !/ #ifdef W3_MPI INCLUDE "mpif.h" @@ -2243,7 +2202,6 @@ SUBROUTINE W3MPIO ( IMOD ) #ifdef W3_MPIT CHARACTER(LEN=5) :: STRING #endif - logical :: do_rstsetup !/ !/ ------------------------------------------------------------------- / !/ @@ -2267,7 +2225,7 @@ SUBROUTINE W3MPIO ( IMOD ) IROOT = NAPFLD - 1 ! ! - IF ((FLOUT(1) .OR. FLOUT(7)) .and. (.not. LPDLIB) .and. (.not. use_historync)) THEN + IF ((FLOUT(1) .OR. FLOUT(7)) .and. (.not. LPDLIB)) THEN ! ! NRQMAX is the maximum number of output fields that require MPI communication, ! aimed to gather field values stored in each processor into one processor in @@ -2287,7 +2245,7 @@ SUBROUTINE W3MPIO ( IMOD ) 0 + 0 + 0 + & ! group 3 (extra contributions below) 2+(NOGE(4)-2)*(NOSWLL+1) + 0 + 0 + & ! group 4 11 + 3 + 1 + & ! group 5 - 10 + 7 + 1 + & ! group 6 (extra contributions below) + 12 + 7 + 1 + & ! group 6 (extra contributions below) 5 + 4 + 1 + & ! group 7 5 + 2 + 0 + & ! group 8 5 + 0 + 0 + & ! group 9 @@ -2301,7 +2259,6 @@ SUBROUTINE W3MPIO ( IMOD ) IF ( FLGRDALL( 6,9)) NRQMAX = NRQMAX + P2MSF(3) - P2MSF(2) + 1 IF ( FLGRDALL( 6, 8) ) NRQMAX = NRQMAX + 2*NK IF ( FLGRDALL( 6,12) ) NRQMAX = NRQMAX + 2*NK - IF ( FLGRDALL( 6,14) ) NRQMAX = NRQMAX + 2 ! IF ( NRQMAX .GT. 0 ) THEN ALLOCATE ( OUTPTS(IMOD)%OUT1%IRQGO(NRQMAX) ) @@ -3258,22 +3215,6 @@ SUBROUTINE W3MPIO ( IMOD ) #ifdef W3_MPI END IF ! - IF ( FLGRDALL( 6, 14) ) THEN - IH = IH + 1 - IT = IT + 1 - CALL MPI_SEND_INIT (USSHX (1),NSEALM , MPI_REAL, IROOT, & - IT, MPI_COMM_WAVE, IRQGO(IH), IERR) -#ifdef W3_MPIT - WRITE (NDST,9011) IH, ' 6/14', IROOT, IT, IRQGO(IH), IERR -#endif - IH = IH + 1 - IT = IT + 1 - CALL MPI_SEND_INIT (USSHY (1),NSEALM , MPI_REAL, IROOT, & - IT, MPI_COMM_WAVE, IRQGO(IH), IERR) -#ifdef W3_MPIT - WRITE (NDST,9011) IH, ' 6/14', IROOT, IT, IRQGO(IH), IERR -#endif - END IF IF ( FLGRDALL( 7, 1) ) THEN IH = IH + 1 IT = IT + 1 @@ -3457,20 +3398,6 @@ SUBROUTINE W3MPIO ( IMOD ) #ifdef W3_MPI END IF ! - IF ( FLGRDALL( 8, 6) ) THEN - IH = IH + 1 - IT = IT + 1 - CALL MPI_SEND_INIT (QKK (1),NSEALM , MPI_REAL, IROOT, & - IT, MPI_COMM_WAVE, IRQGO(IH), IERR) -#endif -#ifdef W3_MPIT - WRITE (NDST,9011) IH, ' 8/06', IROOT, IT, IRQGO(IH), IERR -#endif -#ifdef W3_MPI - END IF -#endif - ! -#ifdef W3_MPI IF ( FLGRDALL( 9, 1) ) THEN IH = IH + 1 IT = IT + 1 @@ -4519,23 +4446,6 @@ SUBROUTINE W3MPIO ( IMOD ) WRITE (NDST,9011) IH, ' 6/13', IFROM, IT, IRQGO2(IH), IERR #endif #ifdef W3_MPI - END IF - ! - IF ( FLGRDALL( 6, 14) ) THEN - IH = IH + 1 - IT = IT + 1 - CALL MPI_RECV_INIT (USSHX (I0),1,WW3_FIELD_VEC, IFROM, IT, & - MPI_COMM_WAVE, IRQGO2(IH), IERR ) -#ifdef W3_MPIT - WRITE (NDST,9011) IH, ' 6/14', IFROM, IT, IRQGO2(IH), IERR -#endif - IH = IH + 1 - IT = IT + 1 - CALL MPI_RECV_INIT (USSHY (I0),1,WW3_FIELD_VEC, IFROM, IT, & - MPI_COMM_WAVE, IRQGO2(IH), IERR ) -#ifdef W3_MPIT - WRITE (NDST,9011) IH, ' 6/14', IFROM, IT, IRQGO2(IH), IERR -#endif END IF ! IF ( FLGRDALL( 7, 1) ) THEN @@ -4721,20 +4631,6 @@ SUBROUTINE W3MPIO ( IMOD ) #ifdef W3_MPI END IF ! - IF ( FLGRDALL( 8, 6) ) THEN - IH = IH + 1 - IT = IT + 1 - CALL MPI_RECV_INIT (QKK (I0),1,WW3_FIELD_VEC, IFROM, IT, & - MPI_COMM_WAVE, IRQGO2(IH), IERR ) -#endif -#ifdef W3_MPIT - WRITE (NDST,9011) IH, ' 8/06', IFROM, IT, IRQGO2(IH), IERR -#endif -#ifdef W3_MPI - END IF -#endif - ! -#ifdef W3_MPI IF ( FLGRDALL( 9, 1) ) THEN IH = IH + 1 IT = IT + 1 @@ -4830,7 +4726,7 @@ SUBROUTINE W3MPIO ( IMOD ) CALL EXTCDE (11) END IF ! - END IF ! IF ((FLOUT(1) .OR. FLOUT(7)) .and. (.not. LPDLIB) .and. (.not. use_historync)) THEN + END IF ! IF ((FLOUT(1) .OR. FLOUT(7)) .and. (.not. LPDLIB)) THEN ! ! 2. Set-up for W3IORS ---------------------------------------------- / ! 2.a General preparations @@ -4839,21 +4735,15 @@ SUBROUTINE W3MPIO ( IMOD ) IH = 0 IROOT = NAPRST - 1 ! - if (use_restartnc) then - if (restart_from_binary) then - do_rstsetup = .true. - else - do_rstsetup = .false. - end if - else - do_rstsetup = .true. - end if - ! - IF ((FLOUT(4) .OR. FLOUT(8)) .and. (.not. LPDLIB) .and. do_rstsetup) THEN + IF ((FLOUT(4) .OR. FLOUT(8)) .and. (.not. LPDLIB)) THEN IF (OARST) THEN ALLOCATE ( OUTPTS(IMOD)%OUT4%IRQRS(34*NAPROC) ) ELSE +# ifdef W3_COAWST_MODEL + ALLOCATE ( OUTPTS(IMOD)%OUT4%IRQRS(12*NAPROC) ) +# else ALLOCATE ( OUTPTS(IMOD)%OUT4%IRQRS(3*NAPROC) ) +# endif ENDIF IRQRS => OUTPTS(IMOD)%OUT4%IRQRS #endif @@ -4934,7 +4824,221 @@ SUBROUTINE W3MPIO ( IMOD ) END IF END DO END IF +#endif ! +#ifdef W3_COAWST_MODEL +# ifdef W3_MPI + IF ( IAPROC.NE.NAPRST .AND. IAPROC.LE.NAPROC ) THEN +# endif +! +! CX/Y +! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 4 + CALL MPI_SEND_INIT (CX(IAPROC), 1, WW3_FIELD_VEC, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S CX', IROOT, IT, IRQRS(IH), IERR +# endif +! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 5 + CALL MPI_SEND_INIT (CY(IAPROC), 1, WW3_FIELD_VEC, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S CY', IROOT, IT, IRQRS(IH), IERR +# endif + +! +! TAUOCX/Y +! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 6 + CALL MPI_SEND_INIT (TAUOCX(1), NSEALM, MPI_REAL, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S TX', IROOT, IT, IRQRS(IH), IERR +# endif + ! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 7 + CALL MPI_SEND_INIT (TAUOCY(1), NSEALM, MPI_REAL, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S TY', IROOT, IT, IRQRS(IH), IERR +# endif +! +! PHIBRKX/Y +! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 8 + CALL MPI_SEND_INIT (PHIBRKX(1), NSEALM, MPI_REAL, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S PX', IROOT, IT, IRQRS(IH), IERR +# endif + ! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 9 + CALL MPI_SEND_INIT (PHIBRKY(1), NSEALM, MPI_REAL, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S PY', IROOT, IT, IRQRS(IH), IERR +# endif +! +! PHICAPX/Y +! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 10 + CALL MPI_SEND_INIT (PHICAPX(1), NSEALM, MPI_REAL, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S WX', IROOT, IT, IRQRS(IH), IERR +# endif + ! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 11 + CALL MPI_SEND_INIT (PHICAPY(1), NSEALM, MPI_REAL, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S WY', IROOT, IT, IRQRS(IH), IERR +# endif +! +! PHIBBL +! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 12 + CALL MPI_SEND_INIT (PHIBBL(1), NSEALM, MPI_REAL, & + IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'S PB', IROOT, IT, IRQRS(IH), IERR +# endif + +# ifdef W3_MPI + ELSE IF ( IAPROC .EQ. NAPRST ) THEN +! IF ( IAPROC .EQ. NAPRST ) THEN +# endif + IF (NAPRST .NE. NAPFLD) CALL W3XDMA ( IMOD, NDSE, NDST, FLOGRR ) + CALL W3XETA ( IMOD, NDSE, NDST ) + DO I0=1, NAPROC + IFROM = I0 - 1 + IF ( I0 .NE. IAPROC ) THEN + ! CX/Y +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 4 + CALL MPI_RECV_INIT (CX(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R CX', IFROM, IT, IRQRS(IH), IERR +# endif + ! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 5 + CALL MPI_RECV_INIT (CY(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R CY', IFROM, IT, IRQRS(IH), IERR +# endif + ! TAUOCX/Y +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 6 + CALL MPI_RECV_INIT (TAUOCX(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R TX', IFROM, IT, IRQRS(IH), IERR +# endif + ! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 7 + CALL MPI_RECV_INIT (TAUOCY(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R TY', IFROM, IT, IRQRS(IH), IERR +# endif + ! PHIBRKX/Y +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 8 + CALL MPI_RECV_INIT (PHIBRKX(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R PX', IFROM, IT, IRQRS(IH), IERR +# endif + ! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 9 + CALL MPI_RECV_INIT (PHIBRKY(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R PY', IFROM, IT, IRQRS(IH), IERR +# endif + ! PHICAPX/Y +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 10 + CALL MPI_RECV_INIT (PHICAPX(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R WX', IFROM, IT, IRQRS(IH), IERR +# endif + ! +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 11 + CALL MPI_RECV_INIT (PHICAPY(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R WY', IFROM, IT, IRQRS(IH), IERR +# endif + ! PHIBBL +# ifdef W3_MPI + IH = IH + 1 + IT = IT0 + 12 + CALL MPI_RECV_INIT (PHIBBL(I0),1,WW3_FIELD_VEC, & + IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +# endif +# ifdef W3_MPIT + WRITE (NDST,9021) IH, 'R PB', IFROM, IT, IRQRS(IH), IERR +# endif + END IF + END DO + CALL W3SETA ( IMOD, NDSE, NDST ) +# ifdef W3_MPI + END IF +# endif +#endif +#ifdef W3_MPI IF (OARST) THEN IF ( FLOGRR( 1, 2) ) THEN IH = IH + 1 @@ -5641,7 +5745,11 @@ SUBROUTINE W3MPIO ( IMOD ) IF (OARST) THEN IT0 = IT0 + 34 ELSE +# ifdef W3_COAWST_MODEL + IT0 = IT0 + 12 +# else IT0 = IT0 + 3 +# endif ENDIF #endif ! @@ -5727,7 +5835,7 @@ SUBROUTINE W3MPIO ( IMOD ) ! END IF ! - END IF ! IF ((FLOUT(4) .OR. FLOUT(8)) .and. (.not. LPDLIB) .and. do_rstsetup) THEN + END IF ! IF ((FLOUT(4) .OR. FLOUT(8)) .and. (.not. LPDLIB)) THEN #endif ! ! 3. Set-up for W3IOBC ( SENDs ) ------------------------------------ / diff --git a/model/src/w3iobcmd.F90 b/model/src/w3iobcmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3iogomd.F90 b/model/src/w3iogomd.F90 old mode 100644 new mode 100755 index a6406c93a..3cf58bc9f --- a/model/src/w3iogomd.F90 +++ b/model/src/w3iogomd.F90 @@ -148,8 +148,6 @@ MODULE W3IOGOMD #ifdef W3_S USE W3SERVMD, ONLY : STRACE #endif - !module default - IMPLICIT NONE !/ PUBLIC CHARACTER(LEN=1024) :: FLDOUT @@ -236,6 +234,8 @@ SUBROUTINE W3FLGRDUPDT ( NDSO, NDSEN, FLGRD, FLGR2, FLGD, FLG2 ) #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif + ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -405,6 +405,7 @@ SUBROUTINE W3READFLGRD ( NDSI , NDSO, NDSS, NDSEN, COMSTR, & USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -654,6 +655,7 @@ SUBROUTINE W3FLGRDFLAG ( NDSO, NDSS, NDSEN, FLDOUT, & USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -784,6 +786,7 @@ SUBROUTINE W3FLDTOIJ(FLD, I, J, IAPROC, NAPOUT, NDSEN) ! !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: US3DF, USSPF + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Local parameters @@ -1084,9 +1087,6 @@ SUBROUTINE W3FLDTOIJ(FLD, I, J, IAPROC, NAPOUT, NDSEN) CASE('TOC') I = 6 J = 13 - CASE('USSH') - I = 6 - J = 14 ! ! Group 7 ! @@ -1123,9 +1123,6 @@ SUBROUTINE W3FLDTOIJ(FLD, I, J, IAPROC, NAPOUT, NDSEN) CASE('QP') I = 8 J = 5 - CASE('QKK') - I = 8 - J = 6 ! ! Group 9 ! @@ -1297,21 +1294,17 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) TH2M, STH2M, HSIG, STMAXE, STMAXD, & HCMAXE, HMAXE, HCMAXD, HMAXD, USSP, QP, PQP,& PTHP0, PPE, PGW, PSW, PTM1, PT1, PT2, PEP, & - WBT, QKK + WBT USE W3ODATMD, ONLY: NDST, UNDEF, IAPROC, NAPROC, NAPFLD, & ICPRT, DTPRT, WSCUT, NOSWLL, FLOGRD, FLOGR2,& NOGRP, NGRPP USE W3ADATMD, ONLY: NSEALM - ! USSHX, USSHY : surface layer (SL) averaged SD - ! HSL : surface layer depth (1/5 of the mixed layer depth - ! from the coupler) - USE W3ADATMD, ONLY: USSHX, USSHY - USE W3IDATMD, ONLY: HSL #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif ! USE W3PARALL, ONLY : INIT_GET_ISEA + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -1360,17 +1353,10 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) STMAXDL(NSEAL), TLPHI(NSEAL), & WL02X(NSEAL), WL02Y(NSEAL), & ALPXT(NSEAL), ALPYT(NSEAL), & - ALPXY(NSEAL), SCREST(NSEAL), & - QK1(NSEAL), QK2(NSEAL) + ALPXY(NSEAL), SCREST(NSEAL) REAL USSCO, FT1 REAL, SAVE :: HSMIN = 0.01 LOGICAL :: FLOLOC(NOGRP,NGRPP) - ! SWW: angle between wind and waves - ! LHSL: local surface layer depth - REAL :: SWW - REAL :: LHSL - ! tmp variable for surface layer averaged Stokes drift - REAL :: USSCOH !/ !/ ------------------------------------------------------------------- / !/ @@ -1443,7 +1429,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) TLPHI = 0. STMAXEL = 0. STMAXDL = 0. - QK2 = 0. ! HS = UNDEF WLM = UNDEF @@ -1460,7 +1445,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) ALPXY = UNDEF ALPXT = UNDEF ALPYT = UNDEF - QKK = UNDEF THMP = UNDEF T02P = UNDEF SCREST = UNDEF @@ -1479,11 +1463,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) QP = UNDEF WBT = UNDEF ! - ETUSCX = 0. - ETUSCY = 0. - USSHX = 0. - USSHY = 0. - ! ! 2. Integral over discrete part of spectrum ------------------------ * ! DO IK=1, NK @@ -1502,7 +1481,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) ABXY = 0. ABYX = 0. ABST = 0. - QK1 = 0. ! ! 2.b Integrate energy in band ! @@ -1528,7 +1506,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) IF (ITH.LE.NTH/2) THEN ABST(JSEA) = ABST(JSEA) + & A(ITH,IK,JSEA)*A(ITH+NTH/2,IK,JSEA) - QK1 (JSEA) = QK1(JSEA) + (A(ITH,IK,JSEA)+A(ITH+NTH/2,IK,JSEA))**2 END IF CALL INIT_GET_ISEA(ISEA, JSEA) FACTOR = MAX ( 0.5 , CG(IK,ISEA)/SIG(IK)*WN(IK,ISEA) ) @@ -1555,8 +1532,8 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) FACTOR = DDEN(IK) / CG(IK,ISEA) - EBD(IK,JSEA) = AB(JSEA) * FACTOR ! this is E(f)*df - ET (JSEA) = ET (JSEA) + EBD(IK,JSEA) + EBD(IK,JSEA) = AB(JSEA) * FACTOR + ET(JSEA) = ET(JSEA) + EBD(IK,JSEA) #ifdef W3_IG1 IF (IK.EQ.NINT(IGPARS(5))) HSIG(JSEA) = 4*SQRT(ET(JSEA)) #endif @@ -1564,8 +1541,7 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) EWN(JSEA) = EWN(JSEA) + EBD(IK,JSEA) / WN(IK,ISEA) ETR(JSEA) = ETR(JSEA) + EBD(IK,JSEA) / SIG(IK) ET1(JSEA) = ET1(JSEA) + EBD(IK,JSEA) * SIG(IK) - ! EET1(JSEA) = EET1(JSEA)+ EBD(IK,JSEA)**2 * SIG(IK) - EET1(JSEA) = EET1(JSEA)+ EBD(IK,JSEA)**2 * SIG(IK)/DSII(IK) + EET1(JSEA) = EET1(JSEA)+ EBD(IK,JSEA)**2 * SIG(IK) ET02(JSEA) = ET02(JSEA)+ EBD(IK,JSEA) * SIG(IK)**2 ETX(JSEA) = ETX(JSEA) + ABX(JSEA) * FACTOR ETY(JSEA) = ETY(JSEA) + ABY(JSEA) * FACTOR @@ -1574,8 +1550,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) TUSY(JSEA) = TUSY(JSEA) + ABY(JSEA)*FACTOR & *GRAV*WN(IK,ISEA)/SIG(IK) ETXX(JSEA) = ETXX(JSEA) + ABX2(JSEA) * FACTOR* WN(IK,ISEA)**2 - ! NB: QK1 (JSEA) = QK1(JSEA) + A(ITH,IK,JSEA)**2 - QK2 (JSEA) = QK2 (JSEA) + QK1(JSEA) * FACTOR* SIG(IK) /WN(IK,ISEA) ETYY(JSEA) = ETYY(JSEA) + ABY2(JSEA) * FACTOR* WN(IK,ISEA)**2 ETXY(JSEA) = ETXY(JSEA) + ABYX(JSEA) * FACTOR* WN(IK,ISEA)**2 IF (SIG(IK)*0.5*(1+XFR).LT.0.4*TPI) THEN @@ -1613,17 +1587,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) TPMS(JSEA) = TPI/SIG(IK) END IF - IF (LMPENABLED) then - IF (HSLMODE.EQ.0) then - LHSL = 10.0 ! a constant value for testing purposes - ELSE - ! Get surface layer depth from coupler - IX = MAPSF(ISEA,1) - IY = MAPSF(ISEA,2) - LHSL = HSL(IX,IY) ! depth over which SD is averaged - END IF - END IF - ! ! Directional moments in the last freq. band ! @@ -1663,14 +1626,8 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) USSCO=FKD*SIG(IK)*WN(IK,ISEA)*COSH(2.*KD) BHD(JSEA) = BHD(JSEA) + & GRAV*WN(IK,ISEA) * EBD(IK,JSEA) / (SINH(2.*KD)) - IF (LMPENABLED) THEN - USSCOH=0.5*FKD*SIG(IK)*(1.-EXP(-2.*WN(IK,ISEA)*LHSL))/LHSL*COSH(2.*KD) - ENDIF ELSE USSCO=FACTOR*SIG(IK)*2.*WN(IK,ISEA) - IF (LMPENABLED) THEN - USSCOH=FACTOR*SIG(IK)*(1.-EXP(-2.*WN(IK,ISEA)*LHSL))/LHSL - ENDIF END IF ! ABXX(JSEA) = MAX ( 0. , ABXX(JSEA) ) * FACTOR @@ -1686,10 +1643,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) ! USSX(JSEA) = USSX(JSEA) + ABX(JSEA)*USSCO USSY(JSEA) = USSY(JSEA) + ABY(JSEA)*USSCO - IF (LMPENABLED) THEN - USSHX(JSEA) = USSHX(JSEA) + ABX(JSEA)*USSCOH - USSHY(JSEA) = USSHY(JSEA) + ABY(JSEA)*USSCOH - ENDIF ! ! Fills the 3D Stokes drift spectrum array ! ! The US3D Stokes drift specrum array is now calculated in a @@ -1715,6 +1668,7 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) #endif ! END DO + ! ! Start of Space-Time Extremes Section IF ( ( STEXU .GT. 0. .AND. STEYU .GT. 0. ) & @@ -1963,17 +1917,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) ! DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) - - IF (LMPENABLED) then - IF (HSLMODE.EQ.0) then - LHSL = 10.0 ! a constant value for testing purposes - ELSE - ! Get surface layer depth from coupler - IX = MAPSF(ISEA,1) - IY = MAPSF(ISEA,2) - LHSL = HSL(IX,IY) ! depth over which SD is averaged - END IF - END IF ! ! 3.a Directional mss parameters ! NB: the slope PDF is proportional to ell1=ETYY*EC2-2*ETXY*ECS+ETXX*ES2 = C*EC2-2*B*ECS+A*ES2 @@ -1990,13 +1933,13 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) ! 3.b Add tail ! ( DTH * SIG absorbed in FTxx ) - EBAND = AB(JSEA) / CG(NK,ISEA) ! EBAND is E(sigma)/sigma for the last frequency band + EBAND = AB(JSEA) / CG(NK,ISEA) ET (JSEA) = ET (JSEA) + FTE * EBAND EWN(JSEA) = EWN(JSEA) + FTWL * EBAND ETF(JSEA) = ETF(JSEA) + GRAV * FTTR * EBAND ! this is the integral of CgE in deep water ETR(JSEA) = ETR(JSEA) + FTTR * EBAND ET1(JSEA) = ET1(JSEA) + FT1 * EBAND - ! EET1(JSEA)= EET1(JSEA) + FT1 * EBAND**2 : this was not correct. Actually tail may not be needed for Qp. + EET1(JSEA)= ET1(JSEA) + FT1 * EBAND**2 ET02(JSEA)= ET02(JSEA)+ EBAND* 0.5 * SIG(NK)**4 * DTH ETX(JSEA) = ETX(JSEA) + FTE * ABX(JSEA) / CG(NK,ISEA) ETY(JSEA) = ETY(JSEA) + FTE * ABY(JSEA) / CG(NK,ISEA) @@ -2008,18 +1951,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) ! ! USSX(JSEA) = USSX(JSEA) + 2*GRAV*ETUSCX(JSEA)/SIG(NK) ! USSY(JSEA) = USSY(JSEA) + 2*GRAV*ETUSCY(JSEA)/SIG(NK) - - ! Add tail contribution for surface and layer averaged Stokes drift - IF (LMPENABLED.and.SDTAIL) then - USSX(JSEA) = USSX(JSEA) + 2*GRAV*ETUSCX(JSEA)/SIG(NK) - USSY(JSEA) = USSY(JSEA) + 2*GRAV*ETUSCY(JSEA)/SIG(NK) - USSHX(JSEA) = USSHX(JSEA) + 2*GRAV*ETUSCX(JSEA)/SIG(NK) & - *(1.-(1.-4.*LHSL*WN(NK,ISEA))*EXP(-2.*WN(NK,ISEA)*LHSL)) & - /6./WN(NK,ISEA)/LHSL - USSHY(JSEA) = USSHY(JSEA) + 2*GRAV*ETUSCY(JSEA)/SIG(NK) & - *(1.-(1.-4.*LHSL*WN(NK,ISEA))*EXP(-2.*WN(NK,ISEA)*LHSL)) & - /6./WN(NK,ISEA)/LHSL - END IF UBS(JSEA) = UBS(JSEA) + FTWL * EBAND/GRAV END DO ! @@ -2050,15 +1981,12 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) END IF #endif IF ( ET(JSEA) .GT. 1.E-7 ) THEN - QP(JSEA) = ( 2. / ET(JSEA)**2 ) * EET1(JSEA) + QP(JSEA) = ( 2. / ET(JSEA)**2 ) * EET1(JSEA) * TPIINV**2 WLM(JSEA) = EWN(JSEA) / ET(JSEA) * TPI T0M1(JSEA) = ETR(JSEA) / ET(JSEA) * TPI THS(JSEA) = RADE * SQRT ( MAX ( 0. , 2. * ( 1. - SQRT ( & MAX(0.,(ETX(JSEA)**2+ETY(JSEA)**2)/ET(JSEA)**2) ) ) ) ) IF ( THS(JSEA) .LT. 0.01*RADE*DTH ) THS(JSEA) = 0. - ! NB: QK1 (JSEA) = QK1(JSEA) + A(ITH,IK,JSEA)**2 - ! QK2 (JSEA) = QK2 (JSEA) + QK1(JSEA) * FACTOR* SIG(IK) /WN(IK,ISEA) - QKK (JSEA) = SQRT(0.5*QK2 (JSEA))/ET(JSEA) ELSE WLM(JSEA) = 0. T0M1(JSEA) = TPI / SIG(NK) @@ -2421,118 +2349,90 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) !/ End of W3OUTG ----------------------------------------------------- / !/ END SUBROUTINE W3OUTG + + +#ifdef W3_COAWST_MODEL !/ ------------------------------------------------------------------- / - !/ - !> - !> @brief Read/write gridded output. !> - !> @details Fields in file are determined by flags in FLOGRD in W3ODATMD. + !> @brief Fill necessary arrays for exchange with COAWST. !> - !> @param[inout] INXOUT Test string for read/write. - !> @param[inout] NDSOG File unit number. - !> @param[inout] IOTST Test indictor for reading. - !> @param[inout] IMOD Model number for W3GDAT etc. + !> @param[in] A Input spectra, left in par list to changeshape. + !> @param[in] FLPART Flag for filling fields with partition data. + !> @param[in] FLOUTG Flag for file field output. + !> @param[in] FLOUTG2 Flag for coupling field output. !> - !> @author H. L. Tolman @date 22-Mar-2021 + !> @author H. L. Tolman @date 10-Apr-2015 !> - SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & -#ifdef W3_ASCII - ,NDSOA & -#endif - ) + SUBROUTINE W3OUTG_COAWST ( A, FLPART, FLOUTG, FLOUTG2 ) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | - !/ | Last update : 22-Mar-2021 | + !/ | Last update : 03-Sep-2024 | !/ +-----------------------------------+ !/ - !/ 17-Mar-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) + !/ 10-Dec-1998 : Distributed FORTRAN 77 version. ( version 1.18 ) !/ 04-Jan-2000 : Upgrade to FORTRAN 90 ( version 2.00 ) !/ Major changes to logistics. - !/ 24-Jan-2001 : Flat grid version (formats only) ( version 2.06 ) - !/ 23-Apr-2002 : Clean up ( version 2.19 ) - !/ 29-Apr-2002 : Add output types 17-18. ( version 2.20 ) - !/ 13-Nov-2002 : Add stress vector. ( version 3.00 ) - !/ 25-Oct-2004 : Multiple grid version. ( version 3.06 ) - !/ 27-Jun-2005 : Adding MAPST2. ( version 3.07 ) + !/ 09-May-2002 : Switch clean up. ( version 2.21 ) + !/ 19-Oct-2004 : Multiple grid version. ( version 3.06 ) !/ 21-Jul-2005 : Adding output fields 19-21. ( version 3.07 ) - !/ 27-Jun-2006 : Adding file name preamble. ( version 3.09 ) - !/ 05-Jul-2006 : Consolidate stress arrays. ( version 3.09 ) + !/ 23-Apr-2006 : Filter for directional spread. ( version 3.09 ) !/ 02-Apr-2007 : Adding partitioned output. ( version 3.11 ) !/ Adding user slots for outputs. - !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) - !/ (W. E. Rogers & T. J. Campbell, NRL) - !/ 31-Oct-2010 : Implement unstructured grids ( version 3.14 ) - !/ (A. Roland and F. Ardhuin) - !/ 05-Feb-2011 : Renumbering of output fields ( version 3.14 ) - !/ (F. Ardhuin) + !/ 08-Oct-2007 : Adding ST3 source term option. ( version 3.13 ) + !/ ( F. Ardhuin ) + !/ 05-Mar-2008 : Added NEC sxf90 compiler directives + !/ (Chris Bunney, UK Met Office) ( version 3.13 ) !/ 25-Dec-2012 : New output structure and smaller ( version 4.11 ) !/ memory footprint. - !/ 21-Aug-2013 : Added missing cos,sin for UBA, ABA ( version 4.11 ) - !/ 27-Nov-2013 : Management of coupling output ( version 4.18 ) + !/ 10-Feb-2014 : Bug correction for US3D: div. by df ( version 4.18 ) + !/ 30-Apr-2014 : Add th2m and sth2m calculation ( version 5.01 ) + !/ 27-May-2014 : Switch to OMPG switch. ( version 5.02 ) + !/ 10-Apr-2015 : Remove unused variables ( version 5.08 ) + !/ 10-Jan-2017 : Separate Stokes drift calculation ( version 6.01 ) !/ 01-Mar-2018 : Removed RTD code (now used in post ( version 6.02 ) !/ processing code) - !/ 25-Aug-2018 : Add WBT parameter ( version 6.06 ) - !/ 22-Mar-2021 : Add extra coupling fields as output ( version 7.13 ) + !/ 22-Aug-2018 : Add WBT parameter ( version 6.06 ) + !/ 25-Sep-2019 : Corrected th2m and sth2m ( version 6.07 ) + !/ calculations. (J Dykes, NRL) !/ ! 1. Purpose : ! - ! Read/write gridded output. - ! - ! 2. Method : - ! - ! Fields in file are determined by flags in FLOGRD in W3ODATMD. + ! Fill necessary arrays with gridded data for output. ! ! 3. Parameters : ! ! Parameter list ! ---------------------------------------------------------------- - ! INXOUT C*(*) I Test string for read/write, valid are: - ! 'READ' and 'WRITE'. - ! NDSOG Int. I File unit number. - ! IOTST Int. O Test indictor for reading. - ! 0 : Fields read. - ! -1 : Past end of file. - ! IMOD Int. I Model number for W3GDAT etc. + ! A R.A. I Input spectra. Left in par list to change + ! shape. + ! FLPART Log. I Flag for filling fields with part. data. + ! FLOUTG Log. I Flag for file field output + ! FLOUTG2 Log. I Flag for coupling field output + ! ---------------------------------------------------------------- + ! + ! Locally saved parameters + ! ---------------------------------------------------------------- + ! HSMIN Real Filter level in Hs for calculation of mean + ! wave parameters. ! ---------------------------------------------------------------- ! ! 4. Subroutines used : ! - ! See module documentation above. + ! See module documentation. ! ! 5. Called by : ! ! Name Type Module Description ! ---------------------------------------------------------------- ! W3WAVE Subr. W3WAVEMD Actual wave model routine. - ! WW3_OUTF Prog. N/A Ouput postprocessor. - ! WW3_GRIB Prog. N/A Ouput postprocessor. - ! GX_OUTF Prog. N/A Ouput postprocessor. ! ---------------------------------------------------------------- ! ! 6. Error messages : ! - ! Tests on INXOUT, file status and on array dimensions. - ! - ! 7. Remarks : - ! - ! - MAPSTA is dumped as it contains information on the ice edge. - ! Dynamic ice edges require MAPSTA to be dumped every time step. - ! - The output file has the pre-defined name 'out_grd.FILEXT'. - ! - The current components CX and CY are written to out_grd as - ! components, but converted to magnitude and direction in most - ! gridded and point output post-processors (except gx_outf). - ! - All written direction are in degrees, nautical convention, - ! but in reading, all is convered back to radians and cartesian - ! conventions. - ! - Before writing, wind and current directions are converted, - ! wave directions are already in correct convention (see W3OUTG). - ! - In MPP version of model data is supposed to be gatherd at the - ! correct processor before the routine is called. - ! - In MPP version routine is called by only one process, therefore - ! no test on process for error messages is needed. + ! None. ! ! 8. Structure : ! @@ -2540,8 +2440,21 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & ! ! 9. Switches : ! - ! !/ST1 First source term package (WAM3). - ! !/ST2 Second source term package (TC96). + ! !/SHRD Switch for shared / distributed memory architecture. + ! !/DIST Id. + ! + ! !/OMPG OpenMP compiler directive for loop splitting. + ! + ! !/O8 Filter for low wave heights ( HSMIN ) + ! !/O9 Negative wave height alowed, other mean parameters will + ! not be correct. + ! + ! !/ST0 No source terms. + ! !/ST1 Source term set 1 (WAM equiv.) + ! !/ST2 Source term set 2 (Tolman and Chalikov) + ! !/ST3 Source term set 3 (WAM 4+) + ! !/ST6 Source term set 6 (BYDRZ) + ! ! !/S Enable subroutine tracing. ! !/T Test output. ! @@ -2550,108 +2463,802 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & !/ ------------------------------------------------------------------- / USE CONSTANTS USE W3GDATMD - !/ - USE W3WDATMD, ONLY: W3SETW, W3DIMW - USE W3ADATMD, ONLY: W3SETA, W3DIMA, W3XETA - USE W3ODATMD, ONLY: W3SETO - !/ - USE W3WDATMD, ONLY: TIME, DINIT, WLV, ICE, ICEF, ICEH, BERG, & - UST, USTDIR, ASF, RHOAIR - USE W3ADATMD, ONLY: AINIT, DW, UA, UD, AS, CX, CY, WN, & - TAUA, TAUADIR - USE W3ADATMD, ONLY: HS, WLM, T02, T0M1, T01, FP0, THM, THS, THP0,& - WBT, WNMEAN - USE W3ADATMD, ONLY: DTDYN, FCUT, ABA, ABD, UBA, UBD, SXX, SYY, SXY,& - PHS, PTP, PLP, PDIR, PSI, PWS, PWST, PNR, & - PTHP0, PQP, PPE, PGW, PSW, PTM1, PT1, PT2, & - PEP, USERO, TAUOX, TAUOY, TAUWIX, TAUWIY, & - PHIAW, PHIOC, TUSX, TUSY, PRMS, TPMS, & - USSX, USSY, MSSX, MSSY, MSSD, MSCX, MSCY, & - MSCD, QP, TAUWNX, TAUWNY, CHARN, TWS, BHD, & - PHIBBL, TAUBBL, WHITECAP, BEDFORMS, CGE, EF, & - CFLXYMAX, CFLTHMAX, CFLKMAX, P2SMS, US3D, & - TH1M, STH1M, TH2M, STH2M, HSIG, PHICE, TAUICE,& - STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, HCMAXD,& - USSP, TAUOCX, TAUOCY, QKK - USE W3ADATMD, ONLY: USSHX, USSHY - !/ - USE W3ODATMD, ONLY: NOGRP, NGRPP, IDOUT, UNDEF, NDST, NDSE, & - FLOGRD, IPASS => IPASS1, WRITE => WRITE1, & - FNMPRE, NOSWLL, NOEXTR - !/ - USE W3SERVMD, ONLY: EXTCDE - USE W3ODATMD, only : IAPROC - USE W3ODATMD, ONLY : OFILES -#ifdef W3_SETUP - USE W3WDATMD, ONLY: ZETA_SETUP -#endif + USE W3WDATMD, ONLY: UST, FPIS + USE W3ADATMD, ONLY: CG, WN, DW + USE W3ADATMD, ONLY: HS, WLM, T02, T0M1, T01, FP0, & + THM, THS, THP0, WLP + USE W3ADATMD, ONLY: ABA, ABD, UBA, UBD, FCUT, & + PHS, PTP, PLP, PDIR, PSI, PWS, & + PWST, PNR, USERO, TUSX, TUSY, PRMS, TPMS, & + MSSX, MSSY, MSSD, MSCX, MSCY, & + USS_COAWST, VSS_COAWST, KSS_COAWST, & + MSCD, CHARN, & + CGE, P2SMS, US3D, EF, TH1M, STH1M, & + TH2M, STH2M, HSIG, STMAXE, STMAXD, & + USSP, QP, PQP, & + PTHP0, PPE, PGW, PSW, PTM1, PT1, PT2, PEP, & + WBT + USE W3ODATMD, ONLY: NDST, UNDEF, IAPROC, NAPROC, NAPFLD, & + ICPRT, DTPRT, WSCUT, NOSWLL, FLOGRD, FLOGR2,& + NOGRP, NGRPP + USE W3ADATMD, ONLY: NSEALM #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif ! + USE W3PARALL, ONLY : INIT_GET_ISEA + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list !/ - INTEGER, INTENT(INOUT) :: IOTST - INTEGER, INTENT(IN) :: NDSOG - INTEGER, INTENT(IN), OPTIONAL :: IMOD - CHARACTER, INTENT(IN) :: INXOUT*(*) - CHARACTER(LEN=15) :: TIMETAG -#ifdef W3_ASCII - INTEGER, INTENT(IN), OPTIONAL :: NDSOA -#endif + REAL, INTENT(IN) :: A(NTH,NK,0:NSEAL) + LOGICAL, INTENT(IN) :: FLPART, FLOUTG, FLOUTG2 !/ !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: IGRD, IERR, I, J, IX, IY, MOGRP, & - MGRPP, ISEA, MOSWLL, IK, IFI, IFJ & - ,IFILOUT - INTEGER, ALLOCATABLE :: MAPTMP(:,:) + INTEGER :: IK, ITH, JSEA, ISEA, IX, IY, & + IKP0(NSEAL), & + I, J, LKMS, HKMS, ITL + INTEGER :: COAWST_YES, ISIGM #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - REAL :: AUX1(NSEA), AUX2(NSEA), & - AUX3(NSEA), AUX4(NSEA) -#ifdef W3_SMC - REAL :: UDARC -#endif - CHARACTER(LEN=30) :: IDTST, TNAME - CHARACTER(LEN=10) :: VERTST + REAL :: FXPMC, FACTOR, FACTOR2, EBAND, FKD, & + AABS, UABS, & + XL, XH, XL2, XH2, EL, EH, DENOM, KD, & + M1, M2, MA, MB, MC, STEX, STEY, STED + REAL EMAX, ETD + REAL :: ET(NSEAL), EWN(NSEAL), ETR(NSEAL), & + ETX(NSEAL), ETY(NSEAL), AB(NSEAL), & + ABX(NSEAL), ABY(NSEAL),ET02(NSEAL), & + EBD(NK,NSEAL), EC(NSEAL), & + ABR(NSEAL), UBR(NSEAL), UBS(NSEAL), & + EET1(NSEAL), & + ETF(NSEAL), & + ET1(NSEAL), & + THMP(NSEAL), & + T02P(NSEAL), NV(NSEAL), NS(NSEAL), & + NB(NSEAL), MODE(NSEAL), & + MU(NSEAL), NI(NSEAL), & + PHI(21,NSEAL),PHIST(NSEAL), & + EBC(NK,NSEAL), ABP(NSEAL), & + TLPHI(NSEAL) + REAL USSCO, FT1 + REAL DS, ETOTX, ETOTY, ETOTXM1, ETOTYM1 + REAL, SAVE :: HSMIN = 0.01 + LOGICAL :: FLOLOC(NOGRP,NGRPP) !/ !/ ------------------------------------------------------------------- / !/ #ifdef W3_S - CALL STRACE (IENT, 'W3IOGO') -#endif - ! - ! test input parameters ---------------------------------------------- * - ! - IF ( PRESENT(IMOD) ) THEN - IGRD = IMOD - ELSE - IGRD = 1 - END IF - ! - CALL W3SETO ( IGRD, NDSE, NDST ) - CALL W3SETG ( IGRD, NDSE, NDST ) - CALL W3SETA ( IGRD, NDSE, NDST ) -#ifdef W3_MPI - CALL W3XETA ( IGRD, NDSE, NDST ) + CALL STRACE (IENT, 'W3OUTG') #endif - CALL W3SETW ( IGRD, NDSE, NDST ) + DO I=1,NOGRP + DO J=1,NGRPP + FLOLOC(I,J) = & + ((FLOUTG.AND.FLOGRD(I,J)).OR.(FLOUTG2.AND.FLOGR2(I,J))) + END DO + END DO ! - IPASS = IPASS + 1 - IOTST = 0 + FXPMC = 0.66 * GRAV / 28. + HSMIN = HSMIN + FT1 = 0.3333 * SIG(NK)**2 * DTH * SIG(NK) + COAWST_YES=1 ! - IF (INXOUT.NE.'READ' .AND. INXOUT.NE.'WRITE' ) THEN - WRITE (NDSE,900) INXOUT - CALL EXTCDE ( 1 ) - END IF + ! 1. Initialize storage arrays -------------------------------------- * ! - IF ( IPASS.EQ.1 .AND. OFILES(1) .EQ. 0) THEN - WRITE = INXOUT.EQ.'WRITE' + ET = 0. + ET02 = 0. + EWN = 0. + ETR = 0. + ET1 = 0. + EET1 = 0. + ETX = 0. + ETY = 0. + ABR = 0. + ABA = 0. + ABD = 0. + UBR = 0. + UBA = 0. + UBD = 0. + UBS = 0. + USS_COAWST = 0. + VSS_COAWST = 0. + KSS_COAWST = 0. + TUSX = 0. + TUSY = 0. + MSSX = 0. + MSSY = 0. + MSSD = 0. + MSCX = 0. + MSCY = 0. + MSCD = 0. + PRMS = 0. + TPMS = 0. + EBD = 0. + EC = 0. + ETF = 0. + EBC = 0. + PHI = 0. + PHIST = 0. + TLPHI = 0. + ! + HS = UNDEF + WLM = UNDEF + WLP = UNDEF + T0M1 = UNDEF + T01 = UNDEF + T02 = UNDEF + FP0 = UNDEF + THM = UNDEF + THS = UNDEF + THP0 = UNDEF + HSIG = UNDEF + THMP = UNDEF + T02P = UNDEF + NV = UNDEF + NS = UNDEF + NB = UNDEF + MU = UNDEF + NI = UNDEF + MODE = UNDEF + STMAXE = UNDEF + STMAXD = UNDEF + QP = UNDEF + WBT = UNDEF + ! + ! 2. Integral over discrete part of spectrum ------------------------ * + ! + DO IK=1, NK + ! + ! 2.a Initialize energy in band + ! + AB = 0. + ABX = 0. + ABY = 0. + ! + ! 2.b Integrate energy in band + ! + DO ITH=1, NTH + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR) +#endif + ! + DO JSEA=1, NSEAL + AB (JSEA) = AB (JSEA) + A(ITH,IK,JSEA) !yes + ABX(JSEA) = ABX(JSEA) + A(ITH,IK,JSEA)*ECOS(ITH) + ABY(JSEA) = ABY(JSEA) + A(ITH,IK,JSEA)*ESIN(ITH) + ! Using trig identities to represent cos2theta and sin2theta. + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + END DO + ! + ! 2.c Finalize integration over band and update mean arrays + ! + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,MA,MC,MB,KD,FKD,USSCO,M1,M2) +#endif + ! + DO JSEA=1, NSEAL + + CALL INIT_GET_ISEA(ISEA, JSEA) + FACTOR = DDEN(IK) / CG(IK,ISEA) + EBD(IK,JSEA) = AB(JSEA) * FACTOR + ET(JSEA) = ET(JSEA) + EBD(IK,JSEA) + +#ifdef W3_IG1 + IF (IK.EQ.NINT(IGPARS(5))) HSIG(JSEA) = 4*SQRT(ET(JSEA)) +#endif +! ETF(JSEA) = ETF(JSEA) + EBD(IK,JSEA) * CG(IK,ISEA) + EWN(JSEA) = EWN(JSEA) + EBD(IK,JSEA) / WN(IK,ISEA) ! yes + ETR(JSEA) = ETR(JSEA) + EBD(IK,JSEA) / SIG(IK) ! yes + ET1(JSEA) = ET1(JSEA) + EBD(IK,JSEA) * SIG(IK) + EET1(JSEA) = EET1(JSEA)+ EBD(IK,JSEA)**2 * SIG(IK) + ET02(JSEA) = ET02(JSEA)+ EBD(IK,JSEA) * SIG(IK)**2 + ETX(JSEA) = ETX(JSEA) + ABX(JSEA) * FACTOR ! yes + ETY(JSEA) = ETY(JSEA) + ABY(JSEA) * FACTOR ! yes + + ! + ! Deep water limits + ! + KD = MAX ( 0.001 , WN(IK,ISEA) * DW(ISEA) ) + IF ( KD .LT. 6. ) THEN + FKD = FACTOR / SINH(KD)**2 + ABR(JSEA) = ABR(JSEA) + AB(JSEA) * FKD + ABA(JSEA) = ABA(JSEA) + ABX(JSEA) * FKD + ABD(JSEA) = ABD(JSEA) + ABY(JSEA) * FKD + UBR(JSEA) = UBR(JSEA) + AB(JSEA) * SIG(IK)**2 * FKD ! yes + UBA(JSEA) = UBA(JSEA) + ABX(JSEA) * SIG(IK)**2 * FKD ! yes + UBD(JSEA) = UBD(JSEA) + ABY(JSEA) * SIG(IK)**2 * FKD + ELSE +! USSCO=FACTOR*SIG(IK)*2.*WN(IK,ISEA) + END IF + ! + EBD(IK,JSEA) = EBD(IK,JSEA) / DSII(IK) + ! +! IF ( FLOLOC( 3, 1).AND.(IK.GE.E3DF(2,1).AND.IK.LE.E3DF(3,1))) & +! EF(JSEA,IK) = EBD(IK,JSEA) * TPI + ! + ! + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + END DO +#ifdef W3_COAWST_MODEL +! +! Compute uss vss kss for stokes in ROMS +! + DO JSEA=1, NSEAL + CALL INIT_GET_ISEA(ISEA, JSEA) + + IX = MAPSF(ISEA,1) + IY = MAPSF(ISEA,2) + ETOTXM1 = 0. + ETOTYM1 = 0. +! wlp , assume peak wl is not the first bin + EMAX = 0. + ISIGM = -1 +! end wlp + DO IK=2, NK +!wlp + ETD = 0. + FACTOR = WN(IK,ISEA)*SIG(IK)*DTH/CG(IK,ISEA) +!end wlp + ETOTX = 0. + ETOTY = 0. + DO ITH=1, NTH +!wlp + ETD = ETD + A(ITH,IK,JSEA)*FACTOR +!elp end + ETOTX = ETOTX + A(ITH,IK,JSEA)*ECOS(ITH)*DTH + ETOTY = ETOTY + A(ITH,IK,JSEA)*ESIN(ITH)*DTH + ENDDO +!wlp + IF (ETD.GT.EMAX) THEN + EMAX = ETD + ISIGM = IK + ENDIF +!wlp end +! Convert from A(theta,k) to E(theta,freq) + ETOTX = ETOTX*SIG(IK)/CG(IK,ISEA) !/TPI + ETOTY = ETOTY*SIG(IK)/CG(IK,ISEA) !/TPI +! + DS = SIG(IK) - SIG(IK-1) + USS_COAWST(JSEA,IK-1)=DS*(WN(IK,ISEA)*ETOTX*SIG(IK)**2.0 & + & +WN(IK-1,ISEA)*ETOTXM1*SIG(IK-1)**2.0) + VSS_COAWST(JSEA,IK-1)=DS*(WN(IK,ISEA)*ETOTY*SIG(IK)**2.0 & + & +WN(IK-1,ISEA)*ETOTYM1*SIG(IK-1)**2.0) + ETOTXM1 = ETOTX + ETOTYM1 = ETOTY + KSS_COAWST(JSEA,IK-1) = 0.5*(WN(IK,ISEA)+WN(IK-1,ISEA)) + END DO +!wlp + IF (ISIGM.GT.0) THEN + WLP(JSEA) = 2.*PI/WN(ISIGM,ISEA) + ELSE + WLP(JSEA) = 0. + ENDIF +!wlp end +! +! Compute last freq. +! + USS_COAWST(JSEA,NK) = 2.0*WN(NK,ISEA)*ETOTX*SIG(NK)**3.0 + VSS_COAWST(JSEA,NK) = 2.0*WN(NK,ISEA)*ETOTY*SIG(NK)**3.0 + KSS_COAWST(JSEA,NK) = WN(NK,ISEA) + END DO +#endif + +! jcw removed space time extremes. + + ! + ! 3. Finalize computation of mean parameters ------------------------ * + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA,ISEA,EBAND) +#endif + ! + DO JSEA=1, NSEAL + CALL INIT_GET_ISEA(ISEA, JSEA) + ! + EBAND = AB(JSEA) / CG(NK,ISEA) + ET (JSEA) = ET (JSEA) + FTE * EBAND ! yes + EWN(JSEA) = EWN(JSEA) + FTWL * EBAND ! yes +! ETF(JSEA) = ETF(JSEA) + GRAV * FTTR * EBAND ! this is the integral of CgE in deep water + ETR(JSEA) = ETR(JSEA) + FTTR * EBAND ! yes + ET1(JSEA) = ET1(JSEA) + FT1 * EBAND + EET1(JSEA)= ET1(JSEA) + FT1 * EBAND**2 + ET02(JSEA)= ET02(JSEA)+ EBAND* 0.5 * SIG(NK)**4 * DTH + ETX(JSEA) = ETX(JSEA) + FTE * ABX(JSEA) / CG(NK,ISEA) ! yes + ETY(JSEA) = ETY(JSEA) + FTE * ABY(JSEA) / CG(NK,ISEA) ! yes + ! + UBS(JSEA) = UBS(JSEA) + FTWL * EBAND/GRAV + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + IF (COAWST_YES.eq.1) THEN +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA,ISEA,IX,IY) +#endif + ! + DO JSEA=1, NSEAL + CALL INIT_GET_ISEA(ISEA, JSEA) + IX = MAPSF(ISEA,1) + IY = MAPSF(ISEA,2) + IF ( MAPSTA(IY,IX) .GT. 0 ) THEN +#ifdef W3_O9 + IF ( ET(JSEA) .GE. 0. ) THEN +#endif + HS (JSEA) = 4. * SQRT ( ET(JSEA) ) +#ifdef W3_O9 + ELSE + HS (JSEA) = - 4. * SQRT ( -ET(JSEA) ) + END IF +#endif + IF ( ET(JSEA) .GT. 1.E-7 ) THEN + QP(JSEA) = ( 2. / ET(JSEA)**2 ) * EET1(JSEA) * TPIINV**2 + + WLM(JSEA) = EWN(JSEA) / ET(JSEA) * TPI ! yes + T0M1(JSEA) = ETR(JSEA) / ET(JSEA) * TPI + THS(JSEA) = RADE * SQRT ( MAX ( 0. , 2. * ( 1. - SQRT ( & ! yes + MAX(0.,(ETX(JSEA)**2+ETY(JSEA)**2)/ET(JSEA)**2) ) ) ) ) + IF ( THS(JSEA) .LT. 0.01*RADE*DTH ) THS(JSEA) = 0. + ELSE + WLM(JSEA) = 0. + T0M1(JSEA) = TPI / SIG(NK) + THS(JSEA) = 0. + END IF + IF ( ABS(ETX(JSEA))+ABS(ETY(JSEA)) .GT. 1.E-7 ) THEN + THM(JSEA) = ATAN2(ETY(JSEA),ETX(JSEA)) ! yes + ELSE + THM(JSEA) = 0. + END IF ! yes + + ABR(JSEA) = SQRT ( 2. * MAX ( 0. , ABR(JSEA) ) ) + IF ( ABR(JSEA) .GE. 1.E-7 ) THEN + ABD(JSEA) = ATAN2(ABD(JSEA),ABA(JSEA)) + ELSE + ABD(JSEA) = 0. + ENDIF + ABA(JSEA) = ABR(JSEA) + UBR(JSEA) = SQRT ( 2. * MAX ( 0. , UBR(JSEA) ) ) ! yes + IF ( UBR(JSEA) .GE. 1.E-7 ) THEN + UBD(JSEA) = ATAN2(UBD(JSEA),UBA(JSEA)) + ELSE + UBD(JSEA) = 0. + ENDIF + UBA(JSEA) = UBR(JSEA) ! yes +! CGE(JSEA) = DWAT*GRAV*ETF(JSEA) + IF ( ET02(JSEA) .GT. 1.E-7 .AND. ET(JSEA) .GT. 0 ) THEN + T02(JSEA) = TPI * SQRT(ET(JSEA) / ET02(JSEA) ) + T01(JSEA) = TPI * ET(JSEA) / ET1(JSEA) + ELSE + T02(JSEA) = TPI / SIG(NK) + T01(JSEA)= T02(JSEA) + ENDIF + ! + ! Add here USERO(JSEA,1) ... + ! + END IF + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + ! 3.b Clean-up small values if !/O8 switch selected + ! +#ifdef W3_O8 + DO JSEA=1, NSEAL + IF ( HS(JSEA).LE.HSMIN .AND. HS(JSEA).NE.UNDEF) THEN ! yes + WLM(JSEA) = UNDEF + T02(JSEA) = UNDEF + T0M1(JSEA) = UNDEF + THM(JSEA) = UNDEF + THS(JSEA) = UNDEF + END IF + END DO +#endif + ! + ! 4. Peak frequencies and directions -------------------------------- * + ! 4.a Initialize + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA) +#endif + ! + DO JSEA=1, NSEAL + EC (JSEA) = EBD(NK,JSEA) + FP0 (JSEA) = UNDEF + IKP0(JSEA) = NK + THP0(JSEA) = UNDEF + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + ! 4.b Discrete peak frequencies + ! + DO IK=NK-1, 1, -1 + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA) +#endif + ! + DO JSEA=1, NSEAL + IF ( EC(JSEA) .LT. EBD(IK,JSEA) ) THEN + EC (JSEA) = EBD(IK,JSEA) + IKP0(JSEA) = IK + END IF + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + END DO + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA) +#endif + ! + DO JSEA=1, NSEAL + IF ( IKP0(JSEA) .NE. NK ) FP0(JSEA) = SIG(IKP0(JSEA)) * TPIINV ! yes + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + ! 4.c Continuous peak frequencies + ! + XL = 1./XFR - 1. + XH = XFR - 1. + XL2 = XL**2 + XH2 = XH**2 + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA,EL,EH,DENOM) +#endif + ! + DO JSEA=1, NSEAL + IF ( IKP0(JSEA) .NE. NK ) THEN + IF ( IKP0(JSEA) .EQ. 1 ) THEN + EL = - EBD(IKP0(JSEA), JSEA) + ELSE + EL = EBD(IKP0(JSEA)-1, JSEA) - EBD(IKP0(JSEA), JSEA) + END IF + + EH = EBD(IKP0(JSEA)+1, JSEA) - EBD(IKP0(JSEA), JSEA) + + DENOM = XL*EH - XH*EL + FP0(JSEA) = FP0 (JSEA) * ( 1. + 0.5 * ( XL2*EH - XH2*EL ) & ! yes + / SIGN ( MAX(ABS(DENOM),1.E-15) , DENOM ) ) + END IF + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + ! 4.d Peak directions + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA) +#endif + ! + DO JSEA=1, NSEAL + ETX(JSEA) = 0. + ETY(JSEA) = 0. + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + DO ITH=1, NTH + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA) +#endif + ! + DO JSEA=1, NSEAL + IF ( IKP0(JSEA) .NE. NK ) THEN + ETX(JSEA) = ETX(JSEA) + A(ITH,IKP0(JSEA),JSEA)*ECOS(ITH) + ETY(JSEA) = ETY(JSEA) + A(ITH,IKP0(JSEA),JSEA)*ESIN(ITH) + END IF + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + ! + END DO + ! +#ifdef W3_OMPG + !$OMP PARALLEL DO PRIVATE(JSEA) +#endif + ! + DO JSEA=1, NSEAL + IF ( ABS(ETX(JSEA))+ABS(ETY(JSEA)) .GT. 1.E-7 .AND. & + FP0(JSEA).NE.UNDEF ) & + THP0(JSEA) = ATAN2(ETY(JSEA),ETX(JSEA)) + ETX(JSEA) = 0. + ETY(JSEA) = 0. + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO + !$OMP PARALLEL DO PRIVATE(JSEA,ISEA,IX,IY) +#endif + ! + DO JSEA =1, NSEAL + CALL INIT_GET_ISEA(ISEA, JSEA) + IX = MAPSF(ISEA,1) + IY = MAPSF(ISEA,2) + IF ( MAPSTA(IY,IX) .LE. 0 ) THEN + FP0 (JSEA) = UNDEF + THP0(JSEA) = UNDEF + END IF + END DO + ! +#ifdef W3_OMPG + !$OMP END PARALLEL DO +#endif + + END IF ! CYES + +! CALL CALC_U3STOKES(A,1) + ! + RETURN + ! + ! Formats + ! + + !/ + !/ End of W3OUTG_COAWST--------------------------------------------- / + !/ + END SUBROUTINE W3OUTG_COAWST +#endif + + !/ ------------------------------------------------------------------- / + !/ + !> + !> @brief Read/write gridded output. + !> + !> @details Fields in file are determined by flags in FLOGRD in W3ODATMD. + !> + !> @param[inout] INXOUT Test string for read/write. + !> @param[inout] NDSOG File unit number. + !> @param[inout] IOTST Test indictor for reading. + !> @param[inout] IMOD Model number for W3GDAT etc. + !> + !> @author H. L. Tolman @date 22-Mar-2021 + !> + SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD ) + !/ + !/ +-----------------------------------+ + !/ | WAVEWATCH III NOAA/NCEP | + !/ | H. L. Tolman | + !/ | FORTRAN 90 | + !/ | Last update : 22-Mar-2021 | + !/ +-----------------------------------+ + !/ + !/ 17-Mar-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) + !/ 04-Jan-2000 : Upgrade to FORTRAN 90 ( version 2.00 ) + !/ Major changes to logistics. + !/ 24-Jan-2001 : Flat grid version (formats only) ( version 2.06 ) + !/ 23-Apr-2002 : Clean up ( version 2.19 ) + !/ 29-Apr-2002 : Add output types 17-18. ( version 2.20 ) + !/ 13-Nov-2002 : Add stress vector. ( version 3.00 ) + !/ 25-Oct-2004 : Multiple grid version. ( version 3.06 ) + !/ 27-Jun-2005 : Adding MAPST2. ( version 3.07 ) + !/ 21-Jul-2005 : Adding output fields 19-21. ( version 3.07 ) + !/ 27-Jun-2006 : Adding file name preamble. ( version 3.09 ) + !/ 05-Jul-2006 : Consolidate stress arrays. ( version 3.09 ) + !/ 02-Apr-2007 : Adding partitioned output. ( version 3.11 ) + !/ Adding user slots for outputs. + !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) + !/ (W. E. Rogers & T. J. Campbell, NRL) + !/ 31-Oct-2010 : Implement unstructured grids ( version 3.14 ) + !/ (A. Roland and F. Ardhuin) + !/ 05-Feb-2011 : Renumbering of output fields ( version 3.14 ) + !/ (F. Ardhuin) + !/ 25-Dec-2012 : New output structure and smaller ( version 4.11 ) + !/ memory footprint. + !/ 21-Aug-2013 : Added missing cos,sin for UBA, ABA ( version 4.11 ) + !/ 27-Nov-2013 : Management of coupling output ( version 4.18 ) + !/ 01-Mar-2018 : Removed RTD code (now used in post ( version 6.02 ) + !/ processing code) + !/ 25-Aug-2018 : Add WBT parameter ( version 6.06 ) + !/ 22-Mar-2021 : Add extra coupling fields as output ( version 7.13 ) + !/ + ! 1. Purpose : + ! + ! Read/write gridded output. + ! + ! 2. Method : + ! + ! Fields in file are determined by flags in FLOGRD in W3ODATMD. + ! + ! 3. Parameters : + ! + ! Parameter list + ! ---------------------------------------------------------------- + ! INXOUT C*(*) I Test string for read/write, valid are: + ! 'READ' and 'WRITE'. + ! NDSOG Int. I File unit number. + ! IOTST Int. O Test indictor for reading. + ! 0 : Fields read. + ! -1 : Past end of file. + ! IMOD Int. I Model number for W3GDAT etc. + ! ---------------------------------------------------------------- + ! + ! 4. Subroutines used : + ! + ! See module documentation above. + ! + ! 5. Called by : + ! + ! Name Type Module Description + ! ---------------------------------------------------------------- + ! W3WAVE Subr. W3WAVEMD Actual wave model routine. + ! WW3_OUTF Prog. N/A Ouput postprocessor. + ! WW3_GRIB Prog. N/A Ouput postprocessor. + ! GX_OUTF Prog. N/A Ouput postprocessor. + ! ---------------------------------------------------------------- + ! + ! 6. Error messages : + ! + ! Tests on INXOUT, file status and on array dimensions. + ! + ! 7. Remarks : + ! + ! - MAPSTA is dumped as it contains information on the ice edge. + ! Dynamic ice edges require MAPSTA to be dumped every time step. + ! - The output file has the pre-defined name 'out_grd.FILEXT'. + ! - The current components CX and CY are written to out_grd as + ! components, but converted to magnitude and direction in most + ! gridded and point output post-processors (except gx_outf). + ! - All written direction are in degrees, nautical convention, + ! but in reading, all is convered back to radians and cartesian + ! conventions. + ! - Before writing, wind and current directions are converted, + ! wave directions are already in correct convention (see W3OUTG). + ! - In MPP version of model data is supposed to be gatherd at the + ! correct processor before the routine is called. + ! - In MPP version routine is called by only one process, therefore + ! no test on process for error messages is needed. + ! + ! 8. Structure : + ! + ! See source code. + ! + ! 9. Switches : + ! + ! !/ST1 First source term package (WAM3). + ! !/ST2 Second source term package (TC96). + ! !/S Enable subroutine tracing. + ! !/T Test output. + ! + ! 10. Source code : + ! + !/ ------------------------------------------------------------------- / + USE CONSTANTS + USE W3GDATMD + !/ + USE W3WDATMD, ONLY: W3SETW, W3DIMW + USE W3ADATMD, ONLY: W3SETA, W3DIMA, W3XETA + USE W3ODATMD, ONLY: W3SETO + !/ + USE W3WDATMD, ONLY: TIME, DINIT, WLV, ICE, ICEF, ICEH, BERG, & + UST, USTDIR, ASF, RHOAIR + USE W3ADATMD, ONLY: AINIT, DW, UA, UD, AS, CX, CY, WN, & + TAUA, TAUADIR + USE W3ADATMD, ONLY: HS, WLM, T02, T0M1, T01, FP0, THM, THS, THP0,& + WBT, WNMEAN + USE W3ADATMD, ONLY: DTDYN, FCUT, ABA, ABD, UBA, UBD, SXX, SYY, SXY,& + PHS, PTP, PLP, PDIR, PSI, PWS, PWST, PNR, & + PTHP0, PQP, PPE, PGW, PSW, PTM1, PT1, PT2, & + PEP, USERO, TAUOX, TAUOY, TAUWIX, TAUWIY, & + PHIAW, PHIOC, TUSX, TUSY, PRMS, TPMS, & + USSX, USSY, MSSX, MSSY, MSSD, MSCX, MSCY, & + MSCD, QP, TAUWNX, TAUWNY, CHARN, TWS, BHD, & + PHIBBL, TAUBBL, WHITECAP, BEDFORMS, CGE, EF, & + CFLXYMAX, CFLTHMAX, CFLKMAX, P2SMS, US3D, & + TH1M, STH1M, TH2M, STH2M, HSIG, PHICE, TAUICE,& + STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, HCMAXD,& + USSP, TAUOCX, TAUOCY + !/ + USE W3ODATMD, ONLY: NOGRP, NGRPP, IDOUT, UNDEF, NDST, NDSE, & + FLOGRD, IPASS => IPASS1, WRITE => WRITE1, & + FNMPRE, NOSWLL, NOEXTR + !/ + USE W3SERVMD, ONLY: EXTCDE + USE W3ODATMD, only : IAPROC + USE W3ODATMD, ONLY : OFILES +#ifdef W3_SETUP + USE W3WDATMD, ONLY: ZETA_SETUP +#endif +#ifdef W3_S + USE W3SERVMD, ONLY: STRACE +#endif + ! + IMPLICIT NONE + !/ + !/ ------------------------------------------------------------------- / + !/ Parameter list + !/ + INTEGER, INTENT(INOUT) :: IOTST + INTEGER, INTENT(IN) :: NDSOG + INTEGER, INTENT(IN), OPTIONAL :: IMOD + CHARACTER, INTENT(IN) :: INXOUT*(*) + CHARACTER(LEN=15) :: TIMETAG + !/ + !/ ------------------------------------------------------------------- / + !/ Local parameters + !/ + INTEGER :: IGRD, IERR, I, J, IX, IY, MOGRP, & + MGRPP, ISEA, MOSWLL, IK, IFI, IFJ & + ,IFILOUT + INTEGER, ALLOCATABLE :: MAPTMP(:,:) +#ifdef W3_S + INTEGER, SAVE :: IENT = 0 +#endif + REAL :: AUX1(NSEA), AUX2(NSEA), & + AUX3(NSEA), AUX4(NSEA) +#ifdef W3_SMC + REAL :: UDARC +#endif + CHARACTER(LEN=30) :: IDTST, TNAME + CHARACTER(LEN=10) :: VERTST + !/ + !/ ------------------------------------------------------------------- / + !/ +#ifdef W3_S + CALL STRACE (IENT, 'W3IOGO') +#endif + ! + ! test input parameters ---------------------------------------------- * + ! + IF ( PRESENT(IMOD) ) THEN + IGRD = IMOD + ELSE + IGRD = 1 + END IF + ! + CALL W3SETO ( IGRD, NDSE, NDST ) + CALL W3SETG ( IGRD, NDSE, NDST ) + CALL W3SETA ( IGRD, NDSE, NDST ) +#ifdef W3_MPI + CALL W3XETA ( IGRD, NDSE, NDST ) +#endif + CALL W3SETW ( IGRD, NDSE, NDST ) + ! + IPASS = IPASS + 1 + IOTST = 0 + ! + IF (INXOUT.NE.'READ' .AND. INXOUT.NE.'WRITE' ) THEN + WRITE (NDSE,900) INXOUT + CALL EXTCDE ( 1 ) + END IF + ! + IF ( IPASS.EQ.1 .AND. OFILES(1) .EQ. 0) THEN + WRITE = INXOUT.EQ.'WRITE' ELSE IF ( WRITE .AND. INXOUT.EQ.'READ' ) THEN WRITE (NDSE,901) INXOUT @@ -2676,11 +3283,7 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & #endif IF ( WRITE ) THEN OPEN (NDSOG,FILE=FNMPRE(:J)//'out_grd.'//FILEXT(:I), & - form ='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR) -#ifdef W3_ASCII - OPEN (NDSOA,FILE=FNMPRE(:J)//'out_grd.'//FILEXT(:I)//'.txt', & - form ='FORMATTED',ERR=800,IOSTAT=IERR) -#endif + form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR) ELSE OPEN (NDSOG,FILE=FNMPRE(:J)//'out_grd.'//FILEXT(:I), & form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR,STATUS='OLD') @@ -2695,13 +3298,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & WRITE (NDSOG) & IDSTR, VEROGR, GNAME, NOGRP, NGRPP, NSEA, NX, NY, & UNDEF, NOSWLL -#ifdef W3_ASCII - WRITE (NDSOA,*) & - 'IDSTR, VEROGR, GNAME, NOGRP, NGRPP, NSEA, NX, NY, & - UNDEF, NOSWLL:', & - IDSTR, VEROGR, GNAME, NOGRP, NGRPP, NSEA, NX, NY, & - UNDEF, NOSWLL -#endif ELSE READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & IDTST, VERTST, TNAME, MOGRP, MGRPP, NSEA, NX, NY, & @@ -2748,6 +3344,7 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & CALL EXTCDE ( 2 ) END IF END IF + ! IF ( IPASS.GE.1 .AND. OFILES(1) .EQ. 1) THEN I = LEN_TRIM(FILEXT) @@ -2761,10 +3358,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & IF ( WRITE ) THEN OPEN (NDSOG,FILE=FNMPRE(:J)//TIMETAG//'.out_grd.' & //FILEXT(:I),form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR) -#ifdef W3_ASCII - OPEN (NDSOA,FILE=FNMPRE(:J)//TIMETAG//'.out_grd.' & - //FILEXT(:I)//'.txt',form='FORMATTED',ERR=800,IOSTAT=IERR) -#endif ELSE OPEN (NDSOG,FILE=FNMPRE(:J)//'out_grd.'//FILEXT(:I), & form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR,STATUS='OLD') @@ -2779,13 +3372,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & WRITE (NDSOG) & IDSTR, VEROGR, GNAME, NOGRP, NGRPP, NSEA, NX, NY, & UNDEF, NOSWLL -#ifdef W3_ASCII - WRITE (NDSOA,*) & - 'IDSTR, VEROGR, GNAME, NOGRP, NGRPP, NSEA, NX, NY, & - UNDEF, NOSWLL:', & - IDSTR, VEROGR, GNAME, NOGRP, NGRPP, NSEA, NX, NY, & - UNDEF, NOSWLL -#endif ELSE READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & IDTST, VERTST, TNAME, MOGRP, MGRPP, NSEA, NX, NY, & @@ -2824,10 +3410,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & ! IF ( WRITE ) THEN WRITE (NDSOG) TIME, FLOGRD -#ifdef W3_ASCII - WRITE (NDSOA,*) 'TIME, FLOGRD:', & - TIME, FLOGRD -#endif ELSE READ (NDSOG,END=803,ERR=802,IOSTAT=IERR) TIME, FLOGRD END IF @@ -2843,10 +3425,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & MAPTMP = MAPSTA + 8*MAPST2 WRITE (NDSOG) & ((MAPTMP(IY,IX),IX=1,NX),IY=1,NY) -#ifdef W3_ASCII - WRITE (NDSOA,*) 'MAPSTA:', & - ((MAPTMP(IY,IX),IX=1,NX),IY=1,NY) -#endif ELSE READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & ((MAPTMP(IY,IX),IX=1,NX),IY=1,NY) @@ -2956,10 +3534,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & TAUOCX(ISEA) = UNDEF TAUOCY(ISEA) = UNDEF END IF - IF ( FLOGRD( 6, 14) ) THEN - USSHX (ISEA) = UNDEF - USSHY (ISEA) = UNDEF - END IF ! IF ( FLOGRD( 7, 1) ) THEN ABA (ISEA) = UNDEF @@ -2984,7 +3558,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & IF ( FLOGRD( 8, 3) ) MSSD (ISEA) = UNDEF IF ( FLOGRD( 8, 4) ) MSCD (ISEA) = UNDEF IF ( FLOGRD( 8, 5) ) QP (ISEA) = UNDEF - IF ( FLOGRD( 8, 6) ) QKK (ISEA) = UNDEF ! IF ( FLOGRD( 9, 1) ) DTDYN (ISEA) = UNDEF IF ( FLOGRD( 9, 2) ) FCUT (ISEA) = UNDEF @@ -3045,18 +3618,9 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & ! IF ( IFI .EQ. 1 .AND. IFJ .EQ. 1 ) THEN WRITE ( NDSOG ) DW(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'DW:', DW(1:NSEA) -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) CX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'CX:', CX(1:NSEA) -#endif WRITE ( NDSOG ) CY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'CY:', CY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 3 ) THEN DO ISEA=1, NSEA #ifdef W3_SMC @@ -3075,33 +3639,15 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & END IF END DO WRITE ( NDSOG ) AUX1 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX1 (UA*cos(UD)):', AUX1 -#endif WRITE ( NDSOG ) AUX2 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX2 (UA*sin(UD)):', AUX2 -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) AS(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AS:', AS(1:NSEA) -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) WLV(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WLV:', WLV(1:NSEA) -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 6 ) THEN WRITE ( NDSOG ) ICE(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'ICE:', ICE(1:NSEA) -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 7 ) THEN WRITE ( NDSOG ) BERG(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'BERG:', BERG(1:NSEA) -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN DO ISEA=1, NSEA #ifdef W3_SMC @@ -3120,43 +3666,22 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & END IF END DO WRITE ( NDSOG ) AUX1 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX1 (TAUA*cos(TAUADIR)):', AUX1 -#endif WRITE ( NDSOG ) AUX2 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX2 (TAUA*sin(TAUADIR)):', AUX2 -#endif ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 9 ) THEN WRITE ( NDSOG ) RHOAIR(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'RHOAIR:', RHOAIR(1:NSEA) -#endif #ifdef W3_BT4 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 10 ) THEN WRITE ( NDSOG ) SED_D50(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'SED_D50:', SED_D50(1:NSEA) -#endif #endif #ifdef W3_IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 11 ) THEN WRITE (NDSOG ) ICEH(1:NSEA) -#ifdef W3_ASCII - WRITE (NDSOA,* ) 'ICEH:', ICEH(1:NSEA) -#endif ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 12 ) THEN WRITE (NDSOG ) ICEF(1:NSEA) -#ifdef W3_ASCII - WRITE (NDSOA,* ) 'ICEF:', ICEF(1:NSEA) -#endif #endif #ifdef W3_SETUP ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 13 ) THEN WRITE ( NDSOG ) ZETA_SETUP(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'ZETA_SETUP:', ZETA_SETUP(1:NSEA) -#endif #endif ! @@ -3164,217 +3689,94 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & ! ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 1 ) THEN WRITE ( NDSOG ) HS(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'HS:', HS(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) WLM(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WLM:', WLM(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) T02(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'T02:', T02(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) T0M1(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'T0M1:', T0M1(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) T01(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'T01:', T01(1:NSEA) -#endif ELSE IF ( (IFI .EQ. 2 .AND. IFJ .EQ. 6) .OR. & (IFI .EQ. 2 .AND. IFJ .EQ. 18) ) THEN ! Note: TP output is derived from FP field. WRITE ( NDSOG ) FP0(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'FP0:', FP0(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 7 ) THEN WRITE ( NDSOG ) THM(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'THM:', THM(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 8 ) THEN WRITE ( NDSOG ) THS(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'THS:', THS(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 9 ) THEN WRITE ( NDSOG ) THP0(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'THP0:', THP0(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 10 ) THEN WRITE ( NDSOG ) HSIG(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'HSIG:', HSIG(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 11 ) THEN WRITE ( NDSOG ) STMAXE(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'STMAXE:', STMAXE(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 12 ) THEN WRITE ( NDSOG ) STMAXD(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'STMAXD:', STMAXD(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 13 ) THEN WRITE ( NDSOG ) HMAXE(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'HMAXE:', HMAXE(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 14 ) THEN WRITE ( NDSOG ) HCMAXE(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'HCMAXE:', HCMAXE(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 15 ) THEN WRITE ( NDSOG ) HMAXD(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'HMAXD:', HMAXD(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 16 ) THEN WRITE ( NDSOG ) HCMAXD(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'HCMAXD:', HCMAXD(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 17 ) THEN WRITE ( NDSOG ) WBT(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WBT:', WBT(1:NSEA) -#endif ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 19 ) THEN WRITE ( NDSOG ) WNMEAN(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WNMEAN:', WNMEAN(1:NSEA) -#endif ! ! Section 3) ! ELSE IF ( IFI .EQ. 3 .AND. IFJ .EQ. 1 ) THEN WRITE ( NDSOG ) EF(1:NSEA,E3DF(2,1):E3DF(3,1)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'EF:', EF(1:NSEA,E3DF(2,1):E3DF(3,1)) -#endif ELSE IF ( IFI .EQ. 3 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) TH1M(1:NSEA,E3DF(2,2):E3DF(3,2)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TH1M:', TH1M(1:NSEA,E3DF(2,2):E3DF(3,2)) -#endif ELSE IF ( IFI .EQ. 3 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) STH1M(1:NSEA,E3DF(2,3):E3DF(3,3)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'STH1M:', STH1M(1:NSEA,E3DF(2,3):E3DF(3,3)) -#endif ELSE IF ( IFI .EQ. 3 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) TH2M(1:NSEA,E3DF(2,4):E3DF(3,4)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TH2M:', TH2M(1:NSEA,E3DF(2,4):E3DF(3,4)) -#endif ELSE IF ( IFI .EQ. 3 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) STH2M(1:NSEA,E3DF(2,5):E3DF(3,5)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'STH2M:', STH2M(1:NSEA,E3DF(2,5):E3DF(3,5)) -#endif ELSE IF ( IFI .EQ. 3 .AND. IFJ .EQ. 6) THEN WRITE ( NDSOG ) WN(1:NK,1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WN:', WN(1:NK,1:NSEA) -#endif ! ! Section 4) ! ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 1 ) THEN WRITE ( NDSOG ) PHS(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PHS:', PHS(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) PTP(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PTP:', PTP(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) PLP(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PLP:', PLP(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) PDIR(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PDIR:', PDIR(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) PSI(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PSI:', PSI(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 6 ) THEN WRITE ( NDSOG ) PWS(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PWS:', PWS(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 7 ) THEN WRITE ( NDSOG ) PTHP0(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PTHP0:', PTHP0(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 8 ) THEN WRITE ( NDSOG ) PQP(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PQP:', PQP(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 9 ) THEN WRITE ( NDSOG ) PPE(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PPE:', PPE(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 10 ) THEN WRITE ( NDSOG ) PGW(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PGW:', PGW(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 11 ) THEN WRITE ( NDSOG ) PSW(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PSW:', PSW(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 12 ) THEN WRITE ( NDSOG ) PTM1(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PTM1:', PTM1(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 13 ) THEN WRITE ( NDSOG ) PT1(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PT1:', PT1(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 14 ) THEN WRITE ( NDSOG ) PT2(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PT2:', PT2(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 15 ) THEN WRITE ( NDSOG ) PEP(1:NSEA,0:NOSWLL) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PEP:', PEP(1:NSEA,0:NOSWLL) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 16 ) THEN WRITE ( NDSOG ) PWST(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PWST:', PWST(1:NSEA) -#endif ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 17 ) THEN WRITE ( NDSOG ) PNR(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PNR:', PNR(1:NSEA) -#endif ! ! Section 5) ! @@ -3393,186 +3795,68 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & END IF END DO WRITE ( NDSOG ) AUX1 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX1 (UST*ASF*cos(USTDIR)):', AUX1 -#endif WRITE ( NDSOG ) AUX2 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX2 (UST*ASF*sin(USTDIR)):', AUX2 -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) CHARN(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'CHARN:', CHARN(1:NSEA) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) CGE(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'CGE:', CGE(1:NSEA) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) PHIAW(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PHIAW:', PHIAW(1:NSEA) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) TAUWIX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUWIX:', TAUWIX(1:NSEA) -#endif WRITE ( NDSOG ) TAUWIY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUWIY:', TAUWIY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 6 ) THEN WRITE ( NDSOG ) TAUWNX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUWNX:', TAUWNX(1:NSEA) -#endif WRITE ( NDSOG ) TAUWNY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUWNY:', TAUWNY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 7 ) THEN WRITE ( NDSOG ) WHITECAP(1:NSEA,1) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WHITECAP(1):', WHITECAP(1:NSEA,1) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 8 ) THEN WRITE ( NDSOG ) WHITECAP(1:NSEA,2) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WHITECAP(2):', WHITECAP(1:NSEA,2) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 9 ) THEN WRITE ( NDSOG ) WHITECAP(1:NSEA,3) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WHITECAP(3):', WHITECAP(1:NSEA,3) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 10 ) THEN WRITE ( NDSOG ) WHITECAP(1:NSEA,4) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'WHITECAP(4):', WHITECAP(1:NSEA,4) -#endif ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 11 ) THEN WRITE ( NDSOG ) TWS(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TWS:', TWS(1:NSEA) -#endif ! ! Section 6) ! ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 1 ) THEN WRITE ( NDSOG ) SXX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'SXX:', SXX(1:NSEA) -#endif WRITE ( NDSOG ) SYY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'SYY:', SYY(1:NSEA) -#endif WRITE ( NDSOG ) SXY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'SXY:', SXY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) TAUOX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUOX:', TAUOX(1:NSEA) -#endif WRITE ( NDSOG ) TAUOY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUOY:', TAUOY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) BHD(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'BHD:', BHD(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) PHIOC(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PHIOC:', PHIOC(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) TUSX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TUSX:', TUSX(1:NSEA) -#endif WRITE ( NDSOG ) TUSY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TUSY:', TUSY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 6 ) THEN WRITE ( NDSOG ) USSX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'USSX:', USSX(1:NSEA) -#endif WRITE ( NDSOG ) USSY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'USSY:', USSY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 7 ) THEN WRITE ( NDSOG ) PRMS(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PRMS:', PRMS(1:NSEA) -#endif WRITE ( NDSOG ) TPMS(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TPMS:', TPMS(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 8 ) THEN WRITE ( NDSOG ) US3D(1:NSEA, US3DF(2):US3DF(3)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'US3D:', US3D(1:NSEA, US3DF(2):US3DF(3)) -#endif WRITE ( NDSOG ) US3D(1:NSEA,NK+US3DF(2):NK+US3DF(3)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'US3D+NK:', US3D(1:NSEA,NK+US3DF(2):NK+US3DF(3)) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 9 ) THEN WRITE ( NDSOG ) P2SMS(1:NSEA,P2MSF(2):P2MSF(3)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'P2SMS:', P2SMS(1:NSEA,P2MSF(2):P2MSF(3)) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 10 ) THEN WRITE ( NDSOG ) TAUICE(1:NSEA,1) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUICE(1):', TAUICE(1:NSEA,1) -#endif WRITE ( NDSOG ) TAUICE(1:NSEA,2) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUICE(2):', TAUICE(1:NSEA,2) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 11 ) THEN WRITE ( NDSOG ) PHICE(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PHICE:', PHICE(1:NSEA) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 12 ) THEN WRITE ( NDSOG ) USSP(1:NSEA, 1:USSPF(2)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'USSP:', USSP(1:NSEA, 1:USSPF(2)) -#endif WRITE ( NDSOG ) USSP(1:NSEA,NK+1:NK+USSPF(2)) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'USSP:', USSP(1:NSEA,NK+1:NK+USSPF(2)) -#endif ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 13 ) THEN WRITE ( NDSOG ) TAUOCX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUOCX:', TAUOCX(1:NSEA) -#endif WRITE ( NDSOG ) TAUOCY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUOCY:', TAUOCY(1:NSEA) -#endif - ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 14 ) THEN - WRITE ( NDSOG ) USSHX(1:NSEA) - WRITE ( NDSOG ) USSHY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'USSHX:', USSHX(1:NSEA) - WRITE ( NDSOA,* ) 'USSHY:', USSHY(1:NSEA) -#endif ! ! Section 7) ! @@ -3587,13 +3871,7 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & END IF END DO WRITE ( NDSOG ) AUX1 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX1 (ABA*cos(ABD)):', AUX1 -#endif WRITE ( NDSOG ) AUX2 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX2 (ABA*sin(ABD)):', AUX2 -#endif !WRITE ( NDSOG ) ABA(1:NSEA) !WRITE ( NDSOG ) ABD(1:NSEA) ELSE IF ( IFI .EQ. 7 .AND. IFJ .EQ. 2 ) THEN @@ -3607,119 +3885,51 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & END IF END DO WRITE ( NDSOG ) AUX1 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX1 (UBA*cos(UBD)):', AUX1 -#endif WRITE ( NDSOG ) AUX2 -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'AUX2 (UBA*sin(UBD)):', AUX2 -#endif ! WRITE ( NDSOG ) UBA(1:NSEA) ! WRITE ( NDSOG ) UBD(1:NSEA) ELSE IF ( IFI .EQ. 7 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) BEDFORMS(1:NSEA,1) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'BEDFORMS(1):', BEDFORMS(1:NSEA,1) -#endif WRITE ( NDSOG ) BEDFORMS(1:NSEA,2) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'BEDFORMS(2):', BEDFORMS(1:NSEA,2) -#endif WRITE ( NDSOG ) BEDFORMS(1:NSEA,3) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'BEDFORMS(3):', BEDFORMS(1:NSEA,3) -#endif ELSE IF ( IFI .EQ. 7 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) PHIBBL(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'PHIBBL:', PHIBBL(1:NSEA) -#endif ELSE IF ( IFI .EQ. 7 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) TAUBBL(1:NSEA,1) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUBBL(1):', TAUBBL(1:NSEA,1) -#endif WRITE ( NDSOG ) TAUBBL(1:NSEA,2) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'TAUBBL(2):', TAUBBL(1:NSEA,2) -#endif ! ! Section 8) ! ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 1 ) THEN WRITE ( NDSOG ) MSSX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'MSSX:', MSSX(1:NSEA) -#endif WRITE ( NDSOG ) MSSY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'MSSY:', MSSY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) MSCX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'MSCX:', MSCX(1:NSEA) -#endif WRITE ( NDSOG ) MSCY(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'MSCY:', MSCY(1:NSEA) -#endif ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) MSSD(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'MSSD:', MSSD(1:NSEA) -#endif ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) MSCD(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'MSCD:', MSCD(1:NSEA) -#endif ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) QP(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'QP:', QP(1:NSEA) -#endif - ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 6 ) THEN - WRITE ( NDSOG ) QKK(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'QKK:', QKK(1:NSEA) -#endif ! ! Section 9) ! ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 1 ) THEN WRITE ( NDSOG ) DTDYN(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'DTDYN:', DTDYN(1:NSEA) -#endif ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 2 ) THEN WRITE ( NDSOG ) FCUT(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'FCUT:', FCUT(1:NSEA) -#endif ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 3 ) THEN WRITE ( NDSOG ) CFLXYMAX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'CFLXYMAX:', CFLXYMAX(1:NSEA) -#endif ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 4 ) THEN WRITE ( NDSOG ) CFLTHMAX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'CFLTHMAX:', CFLTHMAX(1:NSEA) -#endif ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 5 ) THEN WRITE ( NDSOG ) CFLKMAX(1:NSEA) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'CFLMAX:', CFLKMAX(1:NSEA) -#endif ! ! Section 10) ! ELSE IF ( IFI .EQ. 10 ) THEN WRITE ( NDSOG ) USERO(1:NSEA,IFJ) -#ifdef W3_ASCII - WRITE ( NDSOA,* ) 'USER0:', USERO(1:NSEA,IFJ) -#endif ! END IF ! @@ -3988,11 +4198,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & TAUOCX(1:NSEA) READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & TAUOCY(1:NSEA) - ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 14 ) THEN - READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & - USSHX(1:NSEA) - READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & - USSHY(1:NSEA) ! ! Section 7) @@ -4039,8 +4244,6 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & MSCD(1:NSEA) ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 5 ) THEN READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) QP(1:NSEA) - ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 6 ) THEN - READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) QKK(1:NSEA) ! ! Section 9) ! @@ -4276,6 +4479,7 @@ SUBROUTINE CALC_U3STOKES ( A , USS_SWITCH ) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -4512,6 +4716,7 @@ SUBROUTINE CALC_WBT (A) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE ! !/ ------------------------------------------------------------------- / !/ Parameter list diff --git a/model/src/w3iogrmd.F90 b/model/src/w3iogrmd.F90 old mode 100644 new mode 100755 index f7beab466..3aa2688ab --- a/model/src/w3iogrmd.F90 +++ b/model/src/w3iogrmd.F90 @@ -112,11 +112,7 @@ MODULE W3IOGRMD !> @author F. Ardhuin !> @date 19-Oct-2020 - SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & -#ifdef W3_ASCII - ,NDSA & -#endif - ) + SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT ) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -213,7 +209,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & ! INXOUT C*(*) I Test string for read/write, valid are: ! 'READ', 'WRITE' and 'GRID'. ! NDSM Int. I File unit number. - ! NDSA Int. I File unit number. ascii ! IMOD Int. I Model number for W3GDAT etc. ! FEXT C*(*) I File extension to be used. ! ---------------------------------------------------------------- @@ -284,7 +279,7 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & DIKCUMUL #endif #ifdef W3_NL1 - USE W3SNL1MD, ONLY: INSNL1, INSNLGQM + USE W3SNL1MD, ONLY: INSNL1 #endif #ifdef W3_NL2 USE W3SNL2MD, ONLY: INSNL2 @@ -322,9 +317,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & INTEGER, INTENT(IN), OPTIONAL :: IMOD CHARACTER, INTENT(IN) :: INXOUT*(*) CHARACTER, INTENT(IN), OPTIONAL :: FEXT*(*) -#ifdef W3_ASCII - INTEGER, INTENT(IN), OPTIONAL :: NDSA -#endif !/ !/ ------------------------------------------------------------------- / !/ Local parameters @@ -571,10 +563,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & IF ( WRITE ) THEN OPEN (NDSM,FILE=FNMPRE(:IPRE)//'mod_def.'//FILEXT(:IEXT), & form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR) -#ifdef W3_ASCII - OPEN (NDSA,FILE=FNMPRE(:IPRE)//'mod_def.'//FILEXT(:IEXT)//'.txt', & - form='FORMATTED',ERR=800,IOSTAT=IERR) -#endif ELSE OPEN (NDSM,FILE=FNMPRE(:IPRE)//'mod_def.'//FILEXT(:IEXT), & form='UNFORMATTED', convert=file_endian,STATUS='OLD',ERR=800,IOSTAT=IERR) @@ -590,38 +578,14 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & NBI, NFBPO, GNAME, FNAME0, FNAME1, FNAME2, FNAME3, & FNAME4, FNAME5, FNAME6, FNAMEP, FNAMEG, & FNAMEF, FNAMEI -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'IDSTR, VERGRD, NX, NY, NSEA, NTH, NK, & - NBI, NFBPO, GNAME, FNAME0, FNAME1, FNAME2, FNAME3, & - FNAME4, FNAME5, FNAME6, FNAMEP, FNAMEG, & - FNAMEF, FNAMEI:', & - IDSTR, VERGRD, NX, NY, NSEA, NTH, NK, & - NBI, NFBPO, GNAME, FNAME0, FNAME1, FNAME2, FNAME3, & - FNAME4, FNAME5, FNAME6, FNAMEP, FNAMEG, & - FNAMEF, FNAMEI -#endif ! #ifdef W3_SMC WRITE (NDSM) NCel, NUFc, NVFc, NRLv, MRFct -#ifdef W3_ASCII - WRITE (NDSA,*) 'NCel, NUFc, NVFc, NRLv, MRFct:', & - NCel, NUFc, NVFc, NRLv, MRFct -#endif WRITE (NDSM) NGLO, NARC, NBGL, NBAC, NBSMC -#ifdef W3_ASCII - WRITE (NDSA,*) 'NGLO, NARC, NBGL, NBAC, NBSMC:', & - NGLO, NARC, NBGL, NBAC, NBSMC -#endif #endif ! WRITE (NDSM) & (NBO(I),I=0,NFBPO), (NBO2(I),I=0,NFBPO) -#ifdef W3_ASCII - WRITE (NDSA,*) & - '(NBO(I),I=0,NFBPO), (NBO2(I),I=0,NFBPO):', & - (NBO(I),I=0,NFBPO), (NBO2(I),I=0,NFBPO) -#endif #ifdef W3_T WRITE (NDST,9001) IDSTR, VERGRD, NX, NY, NSEA, NTH, NK, & NBI, NFBPO, 9, GNAME, FNAME0, FNAME1, FNAME2, FNAME3, & @@ -753,11 +717,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & MAPTMP = MAPSTA + 8*MAPST2 WRITE (NDSM) & GTYPE, FLAGLL, ICLOSE -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'GTYPE, FLAGLL, ICLOSE:', & - GTYPE, FLAGLL, ICLOSE -#endif ! ! Writes different kind of information depending on grid type ! @@ -766,19 +725,9 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & CASE ( RLGTYPE, SMCTYPE ) WRITE (NDSM) & SX, SY, X0, Y0 -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'SX, SY, X0, Y0:', & - SX, SY, X0, Y0 -#endif CASE ( CLGTYPE ) WRITE (NDSM) & REAL(XGRD), REAL(YGRD) -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'REAL(XGRD), REAL(YGRD):', & - REAL(XGRD), REAL(YGRD) -#endif CASE (UNGTYPE) WRITE (NDSM) & FSN, FSPSI,FSFCT,FSNIMP,FSTOTALIMP,FSTOTALEXP, & @@ -797,41 +746,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & B_JGS_NORM_THR, & B_JGS_NLEVEL, & B_JGS_SOURCE_NONLINEAR -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'FSN, FSPSI,FSFCT,FSNIMP,FSTOTALIMP,FSTOTALEXP, & - FSBCCFL, FSREFRACTION, FSFREQSHIFT, FSSOURCE, & - DO_CHANGE_WLV, SOLVERTHR_STP, CRIT_DEP_STP, & - NTRI,COUNTOT, COUNTRI, NNZ, & - B_JGS_TERMINATE_MAXITER, & - B_JGS_TERMINATE_DIFFERENCE, & - B_JGS_TERMINATE_NORM, & - B_JGS_LIMITER, & - B_JGS_BLOCK_GAUSS_SEIDEL, & - B_JGS_USE_JACOBI, & - B_JGS_MAXITER, & - B_JGS_PMIN, & - B_JGS_DIFF_THR, & - B_JGS_NORM_THR, & - B_JGS_NLEVEL, & - B_JGS_SOURCE_NONLINEAR:', & - FSN, FSPSI,FSFCT,FSNIMP,FSTOTALIMP,FSTOTALEXP, & - FSBCCFL, FSREFRACTION, FSFREQSHIFT, FSSOURCE, & - DO_CHANGE_WLV, SOLVERTHR_STP, CRIT_DEP_STP, & - NTRI,COUNTOT, COUNTRI, NNZ, & - B_JGS_TERMINATE_MAXITER, & - B_JGS_TERMINATE_DIFFERENCE, & - B_JGS_TERMINATE_NORM, & - B_JGS_LIMITER, & - B_JGS_BLOCK_GAUSS_SEIDEL, & - B_JGS_USE_JACOBI, & - B_JGS_MAXITER, & - B_JGS_PMIN, & - B_JGS_DIFF_THR, & - B_JGS_NORM_THR, & - B_JGS_NLEVEL, & - B_JGS_SOURCE_NONLINEAR -#endif !Init COUNTCON and IOBDP to zero, it needs to be set somewhere or !removed COUNTCON=0 @@ -841,26 +755,10 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & LEN, IEN, ANGLE0, ANGLE, SI, MAXX, MAXY, & DXYMAX, INDEX_CELL, CCON, COUNTCON, IE_CELL, & POS_CELL, IOBP, IOBPA, IOBDP, IOBPD, IAA, JAA, POSI -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'X0, Y0, SX, SY, DXYMAX, XGRD, YGRD, TRIGP, TRIA, & - LEN, IEN, ANGLE0, ANGLE, SI, MAXX, MAXY, & - DXYMAX, INDEX_CELL, CCON, COUNTCON, IE_CELL, & - POS_CELL, IOBP, IOBPA, IOBDP, IOBPD, IAA, JAA, POSI:', & - X0, Y0, SX, SY, DXYMAX, XGRD, YGRD, TRIGP, TRIA, & - LEN, IEN, ANGLE0, ANGLE, SI, MAXX, MAXY, & - DXYMAX, INDEX_CELL, CCON, COUNTCON, IE_CELL, & - POS_CELL, IOBP, IOBPA, IOBDP, IOBPD, IAA, JAA, POSI -#endif END SELECT !GTYPE ! WRITE (NDSM) & ZB, MAPTMP, MAPFS, MAPSF, TRFLAG -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'ZB, MAPTMP, MAPFS, MAPSF, TRFLAG:', & - ZB, MAPTMP, MAPFS, MAPSF, TRFLAG -#endif ! #ifdef W3_SMC IF( GTYPE .EQ. SMCTYPE ) THEN @@ -869,18 +767,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & WRITE (NDSM) ICLBAC WRITE (NDSM) ANGARC WRITE (NDSM) CTRNX, CTRNY, CLATF -#ifdef W3_ASCII - WRITE (NDSA,*) 'NLvCel, NLvUFc, NLvVFc:', & - NLvCel, NLvUFc, NLvVFc - WRITE (NDSA,*) 'IJKCel, IJKUFc, IJKVFc, ISMCBP:', & - IJKCel, IJKUFc, IJKVFc, ISMCBP - WRITE (NDSA,*) 'ICLBAC:', & - ICLBAC - WRITE (NDSA,*) 'ANGARC:', & - ANGARC - WRITE (NDSA,*) 'CTRNX, CTRNY, CLATF:', & - CTRNX, CTRNY, CLATF -#endif IF ( FLTEST ) THEN WRITE (NDSE,"(' NRLv, MRFct and NBSMC values are',3I9)") NRLv, MRFct, NBSMC WRITE (NDSE,"(' IJKCel, IJKUFc, IJKVFc Write for',3I9)") NCel, NUFc, NVFc @@ -890,9 +776,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #endif ! IF ( TRFLAG .NE. 0 ) WRITE (NDSM) TRNX, TRNY -#ifdef W3_ASCII - IF ( TRFLAG .NE. 0 ) WRITE (NDSA,*) 'TRNX, TRNY:', TRNX, TRNY -#endif WRITE (NDSM) & DTCFL, DTCFLI, DTMAX, DTMIN, DMIN, CTMAX, & FICE0, FICEN, FICEL, PFMOVE, FLDRY, FLCX, FLCY, FLCTH, & @@ -901,43 +784,14 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & ICESCALES(1:4), CALTYPE, CMPRTRCK, IICEHFAC, IICEHDISP,& IICEDDISP, IICEFDISP, BTBETA, & AAIRCMIN, AAIRGB -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'DTCFL, DTCFLI, DTMAX, DTMIN, DMIN, CTMAX, & - FICE0, FICEN, FICEL, PFMOVE, FLDRY, FLCX, FLCY, FLCTH, & - FLCK, FLSOU, FLBPI, FLBPO, CLATS, CLATIS, CTHG0S, & - STEXU, STEYU, STEDU, IICEHMIN, IICEHINIT, IICEDISP, & - ICESCALES(1:4), CALTYPE, CMPRTRCK, IICEHFAC, IICEHDISP,& - IICEDDISP, IICEFDISP, BTBETA, & - AAIRCMIN, AAIRGB:', & - DTCFL, DTCFLI, DTMAX, DTMIN, DMIN, CTMAX, & - FICE0, FICEN, FICEL, PFMOVE, FLDRY, FLCX, FLCY, FLCTH, & - FLCK, FLSOU, FLBPI, FLBPO, CLATS, CLATIS, CTHG0S, & - STEXU, STEYU, STEDU, IICEHMIN, IICEHINIT, IICEDISP, & - ICESCALES(1:4), CALTYPE, CMPRTRCK, IICEHFAC, IICEHDISP,& - IICEDDISP, IICEFDISP, BTBETA, & - AAIRCMIN, AAIRGB -#endif WRITE(NDSM)GRIDSHIFT -#ifdef W3_ASCII - WRITE(NDSA,*)'GRIDSHIFT:', & - GRIDSHIFT -#endif #ifdef W3_SEC1 WRITE (NDSM) NITERSEC1 -#ifdef W3_ASCII - WRITE (NDSA,*) 'NITERSEC1:', & - NITERSEC1 -#endif #endif #ifdef W3_RTD !! Add rotated Polat/lon and AnglD to mod_def JGLi12Jun2012 WRITE (NDSM) PoLat, PoLon, AnglD, FLAGUNR -#ifdef W3_ASCII - WRITE (NDSA,*) 'PoLat, PoLon, AnglD, FLAGUNR:', & - PoLat, PoLon, AnglD, FLAGUNR -#endif #endif !! WRITE(NDSM) & @@ -1123,15 +977,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & MAPWN, MAPTH, DTH, TH, ESIN, ECOS, ES2, ESC, EC2, & XFR, FR1, SIG, SIG2, DSIP, DSII, DDEN, DDEN2, FTE, & FTF, FTWN, FTTR, FTWL, FACTI1, FACTI2, FACHFA, FACHFE -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'MAPWN, MAPTH, DTH, TH, ESIN, ECOS, ES2, ESC, EC2, & - XFR, FR1, SIG, SIG2, DSIP, DSII, DDEN, DDEN2, FTE, & - FTF, FTWN, FTTR, FTWL, FACTI1, FACTI2, FACHFA, FACHFE:', & - MAPWN, MAPTH, DTH, TH, ESIN, ECOS, ES2, ESC, EC2, & - XFR, FR1, SIG, SIG2, DSIP, DSII, DDEN, DDEN2, FTE, & - FTF, FTWN, FTTR, FTWL, FACTI1, FACTI2, FACHFA, FACHFE -#endif ELSE IF (.NOT.SINIT) CALL W3DIMS ( IGRD, NK, NTH, NDSE, NDST ) READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & @@ -1148,27 +993,12 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & FTWL, FACTI1, FACTI2, FACHFA, FACHFE #endif ! - ! Langmuir mixing parameterization -------------- - IF ( WRITE ) THEN - WRITE (NDSM) & - LMPENABLED, SDTAIL, HSLMODE - ELSE - READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & - LMPENABLED, SDTAIL, HSLMODE - END IF - - ! -------------- ! ! Output flags for 3D parameters ------------------------------------- * ! Module W3GDATMD IF ( WRITE ) THEN WRITE (NDSM) & E3DF, P2MSF, US3DF,USSPF, USSP_WN -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'E3DF, P2MSF, US3DF,USSPF, USSP_WN:', & - E3DF, P2MSF, US3DF,USSPF, USSP_WN -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & E3DF, P2MSF, US3DF,USSPF, USSP_WN @@ -1185,11 +1015,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & IF ( WRITE ) THEN WRITE (NDSM) & XBPO, YBPO, RDBPO, IPBPO, ISBPO -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'XBPO, YBPO, RDBPO, IPBPO, ISBPO:', & - XBPO, YBPO, RDBPO, IPBPO, ISBPO -#endif ELSE CALL W3DMO5 ( IGRD, NDSE, NDST, 2 ) READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & @@ -1215,13 +1040,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & WRITE (NDSM) & IHMAX, HSPMIN, WSMULT, WSCUT, FLCOMB, NOSWLL, & PTMETH, PTFCUT -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'IHMAX, HSPMIN, WSMULT, WSCUT, FLCOMB, NOSWLL, & - PTMETH, PTFCUT:', & - IHMAX, HSPMIN, WSMULT, WSCUT, FLCOMB, NOSWLL, & - PTMETH, PTFCUT -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & IHMAX, HSPMIN, WSMULT, WSCUT, FLCOMB, NOSWLL, & @@ -1239,84 +1057,37 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & WRITE (NDSM) & FACP, XREL, XFLT, FXFM, FXPM, XFT, XFC, FACSD, FHMAX, & FFACBERG, DELAB, FWTABLE -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'FACP, XREL, XFLT, FXFM, FXPM, XFT, XFC, FACSD, FHMAX, & - FFACBERG, DELAB, FWTABLE:', & - FACP, XREL, XFLT, FXFM, FXPM, XFT, XFC, FACSD, FHMAX, & - FFACBERG, DELAB, FWTABLE -#endif #ifdef W3_RWND WRITE (NDSM) & RWINDC -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'RWINDC:', & - RWINDC -#endif #endif #ifdef W3_WCOR WRITE (NDSM) & WWCOR -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'WWCOR:', & - WWCOR -#endif #endif #ifdef W3_REF1 WRITE (NDSM) & RREF, REFPARS, REFLC, REFLD -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'RREF, REFPARS, REFLC, REFLD:', & - RREF, REFPARS, REFLC, REFLD -#endif #endif #ifdef W3_IG1 WRITE (NDSM) & IGPARS(1:12) -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'IGPARS(1:12):', & - IGPARS(1:12) -#endif #endif #ifdef W3_IC2 WRITE (NDSM) & IC2PARS(1:8) -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'IC2PARS(1:8):', & - IC2PARS(1:8) -#endif #endif #ifdef W3_IC3 WRITE (NDSM) & IC3PARS -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'IC3PARS:', & - IC3PARS -#endif #endif #ifdef W3_IC4 WRITE (NDSM) & IC4PARS,IC4_KI,IC4_FC -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'IC4PARS,IC4_KI,IC4_FC:', & - IC4PARS,IC4_KI,IC4_FC -#endif #endif #ifdef W3_IC5 WRITE (NDSM) & IC5PARS -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'IC5PARS:', & - IC5PARS -#endif #endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & @@ -1371,10 +1142,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_FLX2 IF ( WRITE ) THEN WRITE (NDSM) NITTIN, CINXSI -#ifdef W3_ASCII - WRITE (NDSA,*)' NITTIN, CINXSI:', & - NITTIN, CINXSI -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) NITTIN, CINXSI END IF @@ -1385,11 +1152,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & IF ( WRITE ) THEN WRITE (NDSM) & NITTIN, CINXSI, CD_MAX, CAP_ID -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'NITTIN, CINXSI, CD_MAX, CAP_ID:', & - NITTIN, CINXSI, CD_MAX, CAP_ID -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & NITTIN, CINXSI, CD_MAX, CAP_ID @@ -1400,10 +1162,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_FLX4 IF ( WRITE ) THEN WRITE (NDSM) FLX4A0 -#ifdef W3_ASCII - WRITE (NDSA,*)' FLX4A0:', & - FLX4A0 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) FLX4A0 END IF @@ -1413,10 +1171,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_LN1 IF ( WRITE ) THEN WRITE (NDSM) SLNC1, FSPM, FSHF -#ifdef W3_ASCII - WRITE (NDSA,*)' SLNC1, FSPM, FSHF:', & - SLNC1, FSPM, FSHF -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) SLNC1, FSPM, FSHF END IF @@ -1426,10 +1180,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_ST1 IF ( WRITE ) THEN WRITE (NDSM) SINC1, SDSC1 -#ifdef W3_ASCII - WRITE (NDSA,*)' SINC1, SDSC1:', & - SINC1, SDSC1 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) SINC1, SDSC1 END IF @@ -1443,17 +1193,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & SHSTAB, OFSTAB, CCNG, CCPS, FFNG, FFPS, & CDSA0, CDSA1, CDSA2, SDSALN, & CDSB0, CDSB1, CDSB2, CDSB3, FPIMIN, XFH, XF1, XF2 -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'ZWIND, FSWELL, & - SHSTAB, OFSTAB, CCNG, CCPS, FFNG, FFPS, & - CDSA0, CDSA1, CDSA2, SDSALN, & - CDSB0, CDSB1, CDSB2, CDSB3, FPIMIN, XFH, XF1, XF2:',& - ZWIND, FSWELL, & - SHSTAB, OFSTAB, CCNG, CCPS, FFNG, FFPS, & - CDSA0, CDSA1, CDSA2, SDSALN, & - CDSB0, CDSB1, CDSB2, CDSB3, FPIMIN, XFH, XF1, XF2 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & ZWIND, FSWELL, & @@ -1477,19 +1216,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & SSTXFTFTAIL, SSTXFTWN, & DDELTA1, DDELTA2, SSTXFTF, SSTXFTWN, & FFXPM, FFXFM -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & - SSWELLF, SSDSC1, WWNMEANP, WWNMEANPTAIL, SSTXFTF, & - SSTXFTFTAIL, SSTXFTWN, & - DDELTA1, DDELTA2, SSTXFTF, SSTXFTWN, & - FFXPM, FFXFM:', & - ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & - SSWELLF, SSDSC1, WWNMEANP, WWNMEANPTAIL, SSTXFTF, & - SSTXFTFTAIL, SSTXFTWN, & - DDELTA1, DDELTA2, SSTXFTF, SSTXFTWN, & - FFXPM, FFXFM -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & @@ -1520,33 +1246,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & DELU, DELALP, TAUT, TAUHFT, TAUHFT2, & IKTAB, DCKI, QBI, SATINDICES, SATWEIGHTS, & DIKCUMUL, CUMULW -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & - TTAUWSHELTER, SSWELLFPAR, SSWELLF, SSINBR, & - ZZ0RAT, SSDSC, & - SSDSISO, SSDSBR, SSDSBT, SSDSBM, SSDSP, & - SSDSCOS, SSDSDTH, WWNMEANP, WWNMEANPTAIL,SSTXFTF, & - SSTXFTFTAIL, SSTXFTWN, SSTXFTF, SSTXFTWN, & - SSDSBRF1, SSDSBRF2, SSDSBRFDF,SSDSBCK, SSDSABK, & - SSDSPBK, SSDSBINT, FFXPM, FFXFM, FFXFA, & - SSDSHCK, DELUST, DELTAIL, DELTAUW, & - DELU, DELALP, TAUT, TAUHFT, TAUHFT2, & - IKTAB, DCKI, QBI, SATINDICES, SATWEIGHTS, & - DIKCUMUL, CUMULW:', & - ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & - TTAUWSHELTER, SSWELLFPAR, SSWELLF, SSINBR, & - ZZ0RAT, SSDSC, & - SSDSISO, SSDSBR, SSDSBT, SSDSBM, SSDSP, & - SSDSCOS, SSDSDTH, WWNMEANP, WWNMEANPTAIL,SSTXFTF, & - SSTXFTFTAIL, SSTXFTWN, SSTXFTF, SSTXFTWN, & - SSDSBRF1, SSDSBRF2, SSDSBRFDF,SSDSBCK, SSDSABK, & - SSDSPBK, SSDSBINT, FFXPM, FFXFM, FFXFA, & - SSDSHCK, DELUST, DELTAIL, DELTAUW, & - DELU, DELALP, TAUT, TAUHFT, TAUHFT2, & - IKTAB, DCKI, QBI, SATINDICES, SATWEIGHTS, & - DIKCUMUL, CUMULW -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & @@ -1569,14 +1268,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & WRITE (NDSM) SIN6A0, SDS6ET, SDS6A1, SDS6A2, & SDS6P1, SDS6P2, SWL6S6, SWL6B1, SWL6CSTB1, & SIN6WS, SIN6FC -#ifdef W3_ASCII - WRITE (NDSA,*) 'SIN6A0, SDS6ET, SDS6A1, SDS6A2, & - SDS6P1, SDS6P2, SWL6S6, SWL6B1, SWL6CSTB1, & - SIN6WS, SIN6FC:', & - SIN6A0, SDS6ET, SDS6A1, SDS6A2, & - SDS6P1, SDS6P2, SWL6S6, SWL6B1, SWL6CSTB1, & - SIN6WS, SIN6FC -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & SIN6A0, SDS6ET, SDS6A1, SDS6A2, & @@ -1590,40 +1281,19 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_NL1 IF ( WRITE ) THEN WRITE (NDSM) & - SNLC1, LAM, KDCON, KDMN, SNLS1, SNLS2, SNLS3, & - IQTPE, NLTAIL, GQNF1, GQNT1, & - GQNQ_OM2, GQTHRSAT, GQTHRCOU, GQAMP -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'SNLC1, LAM, KDCON, KDMN, SNLS1, SNLS2, SNLS3, & - IQTPE, NLTAIL, GQNF1, GQNT1, & - GQNQ_OM2, GQTHRSAT, GQTHRCOU, GQAMP:', & - SNLC1, LAM, KDCON, KDMN, SNLS1, SNLS2, SNLS3, & - IQTPE, NLTAIL, GQNF1, GQNT1, & - GQNQ_OM2, GQTHRSAT, GQTHRCOU, GQAMP -#endif + SNLC1, LAM, KDCON, KDMN, SNLS1, SNLS2, SNLS3 ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & - SNLC1, LAM, KDCON, KDMN, SNLS1, SNLS2, SNLS3, & - IQTPE, NLTAIL, GQNF1, GQNT1, & - GQNQ_OM2, GQTHRSAT, GQTHRCOU, GQAMP + SNLC1, LAM, KDCON, KDMN, SNLS1, SNLS2, SNLS3 END IF IF ( FLTEST ) WRITE (NDST,9051) SNLC1, LAM, & - KDCON, KDMN, SNLS1, SNLS2, SNLS3, & - IQTPE, NLTAIL, GQNF1, GQNT1, GQNQ_OM2, & - GQTHRSAT, GQTHRCOU, GQAMP + KDCON, KDMN, SNLS1, SNLS2, SNLS3 #endif ! #ifdef W3_NL2 IF ( WRITE ) THEN WRITE (NDSM) IQTPE, NLTAIL, NDPTHS WRITE (NDSM) DPTHNL -#ifdef W3_ASCII - WRITE (NDSA,*) 'IQTPE, NLTAIL, NDPTHS:', & - IQTPE, NLTAIL, NDPTHS - WRITE (NDSA,*) 'DPTHNL:', & - DPTHNL -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & IQTPE, NLTAIL, NDPTHS @@ -1642,16 +1312,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & WRITE (NDSM) SNLL(1:SNLNQ), SNLM(1:SNLNQ), & SNLT(1:SNLNQ), SNLCD(1:SNLNQ), & SNLCS(1:SNLNQ) -#ifdef W3_ASCII - WRITE (NDSA,*) 'SNLNQ, SNLMSC, SNLNSC, SNLSFD, SNLSFS:',& - SNLNQ, SNLMSC, SNLNSC, SNLSFD, SNLSFS - WRITE (NDSA,*) 'SNLL(1:SNLNQ), SNLM(1:SNLNQ), & - SNLT(1:SNLNQ), SNLCD(1:SNLNQ), & - SNLCS(1:SNLNQ):', & - SNLL(1:SNLNQ), SNLM(1:SNLNQ), & - SNLT(1:SNLNQ), SNLCD(1:SNLNQ), & - SNLCS(1:SNLNQ) -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & SNLNQ, SNLMSC, SNLNSC, SNLSFD, SNLSFS @@ -1682,10 +1342,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_NL4 IF ( WRITE ) THEN WRITE (NDSM) ITSA, IALT -#ifdef W3_ASCII - WRITE (NDSA,*) 'ITSA, IALT:', & - ITSA, IALT -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & ITSA, IALT @@ -1699,12 +1355,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & CALL INSNL5 WRITE (NDSM) QR5DPT, QR5OML, QI5DIS, QI5KEV, & QI5NNZ, QI5IPL, QI5PMX -#ifdef W3_ASCII - WRITE (NDSA,*) 'QR5DPT, QR5OML, QI5DIS, QI5KEV, & - QI5NNZ, QI5IPL, QI5PMX:', & - QR5DPT, QR5OML, QI5DIS, QI5KEV, & - QI5NNZ, QI5IPL, QI5PMX -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & QR5DPT, QR5OML, QI5DIS, QI5KEV, & @@ -1719,11 +1369,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & IF ( WRITE ) THEN WRITE (NDSM) & CNLSA, CNLSC, CNLSFM, CNLSC1, CNLSC2, CNLSC3 -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'CNLSA, CNLSC, CNLSFM, CNLSC1, CNLSC2, CNLSC3:', & - CNLSA, CNLSC, CNLSFM, CNLSC1, CNLSC2, CNLSC3 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & CNLSA, CNLSC, CNLSFM, CNLSC1, CNLSC2, CNLSC3 @@ -1733,13 +1378,7 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #endif ! #ifdef W3_NL1 - IF ( .NOT. WRITE ) THEN - IF (IQTPE.GT.0) THEN - CALL INSNL1 ( IGRD ) - ELSE - CALL INSNLGQM - END IF - END IF + IF ( .NOT. WRITE ) CALL INSNL1 ( IGRD ) #endif #ifdef W3_NL3 IF ( .NOT. WRITE ) CALL INSNL3 @@ -1773,9 +1412,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_BT1 IF ( WRITE ) THEN WRITE (NDSM) SBTC1 -#ifdef W3_ASCII - WRITE (NDSA,*) 'SBTC1:', SBTC1 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) SBTC1 END IF @@ -1787,11 +1423,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & IF ( WRITE ) THEN WRITE (NDSM) & SBTCX, SED_D50, SED_PSIC -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'SBTCX, SED_D50, SED_PSIC:', & - SBTCX, SED_D50, SED_PSIC -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & SBTCX, SED_D50, SED_PSIC @@ -1805,11 +1436,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & IF ( WRITE ) THEN WRITE (NDSM) & SDBC1, SDBC2, FDONLY -#ifdef W3_ASCII - WRITE (NDSA,*) & - 'SDBC1, SDBC2, FDONLY:', & - SDBC1, SDBC2, FDONLY -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & SDBC1, SDBC2, FDONLY @@ -1822,12 +1448,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & IF ( WRITE ) THEN WRITE (NDSM) UOSTFILELOCAL, UOSTFILESHADOW, & UOSTFACTORLOCAL, UOSTFACTORSHADOW -#ifdef W3_ASCII - WRITE (NDSA,*) 'UOSTFILELOCAL, UOSTFILESHADOW, & - UOSTFACTORLOCAL, UOSTFACTORSHADOW:', & - UOSTFILELOCAL, UOSTFILESHADOW, & - UOSTFACTORLOCAL, UOSTFACTORSHADOW -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & UOSTFILELOCAL, UOSTFILESHADOW, & @@ -1844,9 +1464,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_IS1 IF ( WRITE ) THEN WRITE (NDSM) IS1C1, IS1C2 -#ifdef W3_ASCII - WRITE (NDSA,*) 'IS1C1, IS1C2:', IS1C1, IS1C2 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) IS1C1, IS1C2 END IF @@ -1855,9 +1472,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_IS2 IF ( WRITE ) THEN WRITE (NDSM) IS2PARS -#ifdef W3_ASCII - WRITE (NDSA,*) 'IS3PARS:', IS2PARS -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) IS2PARS IF ( .NOT. FLIS ) THEN @@ -1873,9 +1487,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_PR2 IF ( WRITE ) THEN WRITE (NDSM) DTME, CLATMN -#ifdef W3_ASCII - WRITE (NDSA,*) 'DTME, CLATMN:', DTME, CLATMN -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & DTME, CLATMN @@ -1887,9 +1498,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_PR3 IF ( WRITE ) THEN WRITE (NDSM) WDCG, WDTH -#ifdef W3_ASCII - WRITE (NDSA,*) 'WDCG, WDTH:', WDCG, WDTH -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & WDCG, WDTH @@ -1901,10 +1509,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_SMC IF ( WRITE ) THEN WRITE(NDSM) DTMS, Refran, FUNO3, FVERG, FSWND, ARCTC -#ifdef W3_ASCII - WRITE(NDSA,*) 'DTMS, Refran, FUNO3, FVERG, FSWND, ARCTC:', & - DTMS, Refran, FUNO3, FVERG, FSWND, ARCTC -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & DTMS, Refran, FUNO3, FVERG, FSWND, ARCTC @@ -1916,10 +1520,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_FLD1 IF ( WRITE ) THEN WRITE (NDSM) TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 -#ifdef W3_ASCII - WRITE (NDSA,*) 'TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2:', & - TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 @@ -1928,10 +1528,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & #ifdef W3_FLD2 IF ( WRITE ) THEN WRITE (NDSM) TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 -#ifdef W3_ASCII - WRITE (NDSA,*) 'TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2:', & - TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 -#endif ELSE READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 @@ -1950,11 +1546,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & END IF ! CLOSE ( NDSM ) -#ifdef W3_ASCII - IF ( WRITE ) THEN - CLOSE ( NDSA ) - END IF -#endif call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 9') ! RETURN diff --git a/model/src/w3iopomd.F90 b/model/src/w3iopomd.F90 old mode 100644 new mode 100755 index 0c15ea8c6..466944e14 --- a/model/src/w3iopomd.F90 +++ b/model/src/w3iopomd.F90 @@ -1023,86 +1023,18 @@ SUBROUTINE W3IOPE ( A ) !/ End of W3IOPE ----------------------------------------------------- / !/ END SUBROUTINE W3IOPE - - !> Read or write point output. - !> - !> This subroutine can either read or write the point output file, - !> depending on the value of the first parameter. - !> - !> When reading, the entire file is read with one call to this - !> subroutine. - !> - !> When writing, this subroutine can either write one timestep or - !> the whole model run. This is an option in the input file. If the - !> entire model run is to be written, then OFILES(2) is 0. If only - !> one timestep is to be written, then OFILES(2) is 1. - !> - !> If OFILES(2) is 0, the output file is names out_pnt.ww3. If - !> OFILES(2) is 1, the output file is named TIMETAG.out_pnt.ww3. - !> - !> The format of the point output file is: - !> Size (bytes) | Type | Variable | Meaning - !> -------------|------|----------|-------- - !> 40 | character*40 | IDTST | ID string - !> 4 | integer | VERTST | Model definition file version number - !> 4 | integer | NK | Dimension of frequency - !> 4 | integer | MTH | Directionality of the frequency - !> 4 | integer | NOPTS | Number of output points. - !> 8*NOPTS | integer(2,NOPTS) | PTLOC | Point locations - !> 7*NOPTS | character*7 | PTNME | Point names - !> 8 | integer(2) | TIME | Time - !> reclen*NOPTS | * | * | records - !> - !> Each record contains: - !> Size (bytes) | Type | Variable | Meaning - !> -------------|------|----------|-------- - !> 4 | integer | IW | Number of water points in interpolation box for output point. - !> 4 | integer | II | Number of ice points in interpolation box for output point. - !> 4 | integer | IL | Number of land points in interpolation box for output point. - !> 4 | real | DPO | Interpolated depths. - !> 4 | real | WAO | Interpolated wind speeds. - !> 4 | real | WDO | Interpolated wind directions. - !> 4 | real | TAUAO | (W3_FLX5 only) Interpolated atmospheric stresses. - !> 4 | real | TAUDO | (W3_FLX5 only) Interpolated atmospheric stress directions. - !> 4 | real | DAIRO | (W3_FLX5 only) Interpolated rho atmosphere. - !> 4 | real | ZET_SETO | (W3_SETUP only) Used for wave setup. - !> 4 | real | ASO | Interpolated air-sea temperature difference - !> 4 | real | CAO | Interpolated current speeds. - !> 4 | real | CDO | Interpolated current directions. - !> 4 | real | ICEO | Interpolated ice concentration. - !> 4 | real | ICEHO | Interpolated ice thickness. - !> 4 | real | ICEFO | Interpolated ice floe. - !> 13 | char | GRDID | Originating grid ID - !> 4 | real | SPCO(J,I),J=1,NSPEC | Output spectra + !/ ------------------------------------------------------------------- / !> - !> In the event of error, EXTCDE() will be called with the following exit codes: - !> - 1 INXOUT must be 'READ' or 'WRITE'. - !> - 2 Unexpectedly changed from WRITE to READ in subsequent call. - !> - 10 Unexpected IDSTR - !> - 11 Unexpected VEROPT - !> - 12 Unexpected MK or MTH - !> - 20 Error opening file. - !> - 21 Unexpected end of file during read. - !> - 22 Error reading file. - !> - 23 Unexpected end of file during read. + !> @brief Read/write point output. !> - !> @param[in] INXOUT String indicating read/write. Must be 'READ' or - !> 'WRITE'. - !> @param[in] NDSOP File unit number. - !> @param[out] IOTST Error code: - !> - 0 No error. - !> - -1 Unexpected end of file when reading. - !> @param[in] IMOD Model number for W3GDAT etc. -#ifdef W3_ASCII - !> @param[in] NDSOA File unit number for ASCII output. -#endif + !> @param[in] INXOUT Test string for read/write. + !> @param[in] NDSOP File unit number. + !> @param[out] IOTST Test indictor for reading. + !> @param[in] IMOD Model number for W3GDAT etc. !> !> @author H. L. Tolman @date 25-Jul-2006 - SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & -#ifdef W3_ASCII - ,NDSOA & -#endif - ) + !> + SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD ) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -1130,8 +1062,7 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & ! ---------------------------------------------------------------- ! INXOUT C*(*) I Test string for read/write, valid are: ! 'READ' and 'WRITE'. - ! NDSOP Int. I File unit number. for binary - ! NDSOA Int. I File unit number. for ASCII + ! NDSOP Int. I File unit number. ! IOTST Int. O Test indictor for reading. ! 0 : Data read. ! -1 : Past end of file. @@ -1209,9 +1140,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & !/ Parameter list !/ INTEGER, INTENT(IN) :: NDSOP -#ifdef W3_ASCII - INTEGER, INTENT(IN), OPTIONAL :: NDSOA -#endif INTEGER, INTENT(OUT) :: IOTST INTEGER, INTENT(IN), OPTIONAL :: IMOD CHARACTER, INTENT(IN) :: INXOUT*(*) @@ -1277,10 +1205,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & IF ( WRITE ) THEN OPEN (NDSOP,FILE=FNMPRE(:J)//'out_pnt.'//FILEXT(:I), & form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR) -#ifdef W3_ASCII - OPEN (NDSOA,FILE=FNMPRE(:J)//'out_pnt.'//FILEXT(:I)//'.txt', & - form='FORMATTED', ERR=800,IOSTAT=IERR) -#endif ELSE OPEN (NDSOP,FILE=FNMPRE(:J)//'out_pnt.'//FILEXT(:I), & form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR,STATUS='OLD') @@ -1294,11 +1218,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & IF ( WRITE ) THEN WRITE (NDSOP) & IDSTR, VEROPT, NK, NTH, NOPTS -#ifdef W3_ASCII - WRITE (NDSOA,*) & - 'IDSTR, VEROPT, NK, NTH, NOPTS:', & - IDSTR, VEROPT, NK, NTH, NOPTS -#endif ELSE READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & IDTST, VERTST, MK, MTH, NOPTS @@ -1329,11 +1248,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & IF ( WRITE ) THEN WRITE (NDSOP) & ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) -#ifdef W3_ASCII - WRITE (NDSOA,*) & - '((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS):', & - ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) -#endif ELSE READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) @@ -1375,10 +1289,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & IF ( WRITE ) THEN OPEN (NDSOP,FILE=FNMPRE(:J)//TIMETAG//'.out_pnt.' & //FILEXT(:I),form='UNFORMATTED', convert=file_endian,ERR=800,IOSTAT=IERR) -#ifdef W3_ASCII - OPEN (NDSOA,FILE=FNMPRE(:J)//TIMETAG//'.out_pnt.' & - //FILEXT(:I)//'.txt',form='FORMATTED', ERR=800,IOSTAT=IERR) -#endif END IF ! REWIND ( NDSOP ) @@ -1390,11 +1300,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & IF ( WRITE ) THEN WRITE (NDSOP) & IDSTR, VEROPT, NK, NTH, NOPTS -#ifdef W3_ASCII - WRITE (NDSOA,*) & - 'IDSTR, VEROPT, NK, NTH, NOPTS:', & - IDSTR, VEROPT, NK, NTH, NOPTS -#endif ELSE READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & IDTST, VERTST, MK, MTH, NOPTS @@ -1425,11 +1330,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & IF ( WRITE ) THEN WRITE (NDSOP) & ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) -#ifdef W3_ASCII - WRITE (NDSOA,*) & - '((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS):', & - ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) -#endif ELSE READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) @@ -1449,9 +1349,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & ! IF ( WRITE ) THEN WRITE (NDSOP) TIME -#ifdef W3_ASCII - WRITE (NDSOA,*) 'TIME:', TIME -#endif ELSE READ (NDSOP,END=803,ERR=802,IOSTAT=IERR) TIME END IF @@ -1481,23 +1378,6 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & #endif ASO(I), CAO(I), CDO(I), ICEO(I), ICEHO(I), & ICEFO(I), GRDID(I), (SPCO(J,I),J=1,NSPEC) -#ifdef W3_ASCII - WRITE (NDSOA,*) & - 'IW(I), II(I), IL(I), DPO(I), WAO(I), WDO(I):', & - IW(I), II(I), IL(I), DPO(I), WAO(I), WDO(I), & -#ifdef W3_FLX5 - 'TAUAO(I), TAUDO(I), DAIRO(I):', & - TAUAO(I), TAUDO(I), DAIRO(I), & -#endif -#ifdef W3_SETUP - 'ZET_SETO(I):', & - ZET_SETO(I), & -#endif - 'ASO(I), CAO(I), CDO(I), ICEO(I), ICEHO(I):', & - ASO(I), CAO(I), CDO(I), ICEO(I), ICEHO(I), & - 'ICEFO(I), GRDID(I), (SPCO(J,I),J=1,NSPEC):', & - ICEFO(I), GRDID(I), (SPCO(J,I),J=1,NSPEC) -#endif ELSE READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & IW(I), II(I), IL(I), DPO(I), WAO(I), WDO(I), & @@ -1512,6 +1392,9 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & END IF ! END DO +#ifdef W3_COAWST_MODEL + FLUSH(NDSOP) +#endif IF (OFILES(2) .EQ. 1) CLOSE (NDSOP) ! RETURN diff --git a/model/src/w3iorsmd.F90 b/model/src/w3iorsmd.F90 old mode 100644 new mode 100755 index 352a34215..2e2730e6e --- a/model/src/w3iorsmd.F90 +++ b/model/src/w3iorsmd.F90 @@ -62,8 +62,6 @@ MODULE W3IORSMD ! 7. Source code : ! !/ ------------------------------------------------------------------- / - !module default - IMPLICIT NONE PUBLIC !/ ! Add fields needed for OASIS coupling in restart @@ -111,7 +109,7 @@ MODULE W3IORSMD !> !> @author H. L. Tolman @date 22-Mar-2021 !> - SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) + SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT ) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -294,19 +292,21 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: W3SETG, W3SETREF, RSTYPE USE W3ODATMD, ONLY: W3SETO - USE W3WDATMD, only: W3SETW, W3DIMW USE W3ADATMD, ONLY: W3SETA, W3XETA, NSEALM USE W3ADATMD, ONLY: CX, CY, HS, WLM, T0M1, T01, FP0, THM, CHARN,& TAUWIX, TAUWIY, TWS, TAUOX, TAUOY, BHD, & PHIOC, TUSX, TUSY, USSX, USSY, TAUICE, & UBA, UBD, PHIBBL, TAUBBL, TAUOCX, TAUOCY, & WNMEAN +#ifdef W3_COAWST_MODEL + USE W3ADATMD, ONLY: PHIBRKX, PHIBRKY + USE W3ADATMD, ONLY: PHICAPX, PHICAPY +#endif !/ USE W3GDATMD, ONLY: NX, NY, NSEA, NSEAL, NSPEC, MAPSTA, MAPST2, & GNAME, FILEXT, GTYPE, UNGTYPE USE W3TRIAMD, ONLY: SET_UG_IOBP - USE W3WDATMD, only : DINIT, VA, TIME, TLEV, TICE, TRHO, ICE, UST - USE W3WDATMD, only : USTDIR, ASF, FPIS, ICEF, TIC1, TIC5, WLV + USE W3WDATMD #ifdef W3_WRST USE W3IDATMD, ONLY: WXN, WYN, W3SETI USE W3IDATMD, ONLY: WXNwrst, WYNwrst @@ -327,8 +327,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) #ifdef W3_TIMINGS USE W3PARALL, ONLY: PRINT_MY_TIME #endif - USE w3odatmd, ONLY : RUNTYPE - USE w3adatmd, ONLY : USSHX, USSHY #ifdef W3_PDLIB USE PDLIB_FIELD_VEC #endif @@ -336,6 +334,8 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE + ! #ifdef W3_MPI INCLUDE "mpif.h" #endif @@ -349,7 +349,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) REAL, INTENT(INOUT) :: DUMFPI CHARACTER, INTENT(IN) :: INXOUT*(*) LOGICAL, INTENT(IN),OPTIONAL :: FLRSTRT - character(len=*), intent(in), optional :: filename !/ !/ ------------------------------------------------------------------- / !/ Local parameters @@ -380,6 +379,7 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) LOGICAL :: NDSROPN CHARACTER(LEN=4) :: TYPE CHARACTER(LEN=10) :: VERTST + ! CHARACTER(LEN=21) :: FNAME CHARACTER(LEN=40) :: FNAME CHARACTER(LEN=26) :: IDTST CHARACTER(LEN=30) :: TNAME @@ -458,57 +458,58 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) ALLOCATE(TMP(NSEA)) ALLOCATE(TMP2(NSEA)) ENDIF +# ifdef W3_COAWST_MODEL + ALLOCATE(TMP(NSEA)) + ALLOCATE(TMP2(NSEA)) +# endif ! ! open file ---------------------------------------------------------- * ! - if (present(filename)) then ! only when restart_nc and restart_from_binary=true - open (ndsr,file=trim(filename),form='unformatted', convert=file_endian, & - access='stream',err=800,iostat=ierr, status='old',action='read') - else - I = LEN_TRIM(FILEXT) - J = LEN_TRIM(FNMPRE) - ! - !CHECKPOINT RESTART FILE - ITMP=0 - IF ( PRESENT(FLRSTRT) ) THEN - IF (FLRSTRT) THEN - WRITE(TIMETAG,"(i8.8,'.'i6.6)")TIME(1),TIME(2) - FNAME=TIMETAG//'.restart.'//FILEXT(:I) - ITMP=1 - END IF + I = LEN_TRIM(FILEXT) + J = LEN_TRIM(FNMPRE) + ! + !CHECKPOINT RESTART FILE + ITMP=0 + IF ( PRESENT(FLRSTRT) ) THEN + IF (FLRSTRT) THEN + WRITE(TIMETAG,"(i8.8,'.'i6.6)")TIME(1),TIME(2) + FNAME=TIMETAG//'.restart.'//FILEXT(:I) + ITMP=1 END IF - IF(ITMP.NE.1)THEN ! FNAME is not set above, so do it here - IF ( IFILE.EQ.0 ) THEN - FNAME = 'restart.'//FILEXT(:I) - ELSE - FNAME = 'restartNNN.'//FILEXT(:I) - IF ( WRITE .AND. IAPROC.EQ.NAPRST ) & - WRITE (FNAME(8:10),'(I3.3)') IFILE - END IF + END IF + IF(ITMP.NE.1)THEN ! FNAME is not set above, so do it here + IF ( IFILE.EQ.0 ) THEN + FNAME = 'restart.'//FILEXT(:I) + ELSE + FNAME = 'restartNNN.'//FILEXT(:I) + IF ( WRITE .AND. IAPROC.EQ.NAPRST ) & + WRITE (FNAME(8:10),'(I3.3)') IFILE END IF - IFILE = IFILE + 1 - ! + END IF + + IFILE = IFILE + 1 + ! #ifdef W3_T - WRITE (NDST,9001) FNAME, LRECL + WRITE (NDST,9001) FNAME, LRECL #endif - ! - IF(NDST.EQ.NDSR)THEN - IF ( IAPROC .EQ. NAPERR ) & - WRITE(NDSE,'(A,I8)')'UNIT NUMBERS OF RESTART FILE AND '& - //'TEST OUTPUT ARE THE SAME : ',NDST - CALL EXTCDE ( 15 ) - ENDIF + ! - IF ( WRITE ) THEN - IF ( .NOT.IOSFLG .OR. IAPROC.EQ.NAPRST ) & - OPEN (NDSR,FILE=FNMPRE(:J)//FNAME,form='UNFORMATTED', convert=file_endian, & - ACCESS='STREAM',ERR=800,IOSTAT=IERR) - ELSE - OPEN (NDSR,FILE=FNMPRE(:J)//FNAME,form='UNFORMATTED', convert=file_endian, & - ACCESS='STREAM',ERR=800,IOSTAT=IERR, & - STATUS='OLD',ACTION='READ') - END IF - end if ! if (present(filename)) + IF(NDST.EQ.NDSR)THEN + IF ( IAPROC .EQ. NAPERR ) & + WRITE(NDSE,'(A,I8)')'UNIT NUMBERS OF RESTART FILE AND '& + //'TEST OUTPUT ARE THE SAME : ',NDST + CALL EXTCDE ( 15 ) + ENDIF + + IF ( WRITE ) THEN + IF ( .NOT.IOSFLG .OR. IAPROC.EQ.NAPRST ) & + OPEN (NDSR,FILE=FNMPRE(:J)//FNAME,form='UNFORMATTED', convert=file_endian, & + ACCESS='STREAM',ERR=800,IOSTAT=IERR) + ELSE + OPEN (NDSR,FILE=FNMPRE(:J)//FNAME,form='UNFORMATTED', convert=file_endian, & + ACCESS='STREAM',ERR=800,IOSTAT=IERR, & + STATUS='OLD',ACTION='READ') + END IF ! ! test info ---------------------------------------------------------- * ! @@ -635,7 +636,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) ! Original non-server version writing of spectra ! IF ( .NOT.IOSFLG .OR. (NAPROC.EQ.1.AND.NAPRST.EQ.1) ) THEN -#ifdef W3_MPI DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) NREC = ISEA + 2 @@ -644,16 +644,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) WRITEBUFF(1:NSPEC) = VA(1:NSPEC,JSEA) WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF END DO -#else - DO JSEA=1, NSEA - ISEA = JSEA - NREC = ISEA + 2 - RPOS = 1_8 + LRECL*(NREC-1_8) - WRITEBUFF(:) = 0. - WRITEBUFF(1:NSPEC) = VA(1:NSPEC,JSEA) - WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF - END DO -#endif ! ! I/O server version writing of spectra ( !/MPI ) ! @@ -803,7 +793,7 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) ELSE #endif VA = 0. - DO JSEA=1, NSEA + DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) NREC = ISEA + 2 RPOS = 1_8 + LRECL*(NREC-1_8) @@ -930,6 +920,7 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) (USTDIR(ISEA),ISEA=1+(IPART-1)*NSIZE, & MIN(NSEA,IPART*NSIZE)) END DO +!jcw DO IPART=1,NPART NREC = NREC + 1 RPOS = 1_8 + LRECL*(NREC-1_8) @@ -942,10 +933,106 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) NREC = NREC + 1 RPOS = 1_8 + LRECL*(NREC-1_8) WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF - WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & - (FPIS(ISEA),ISEA=1+(IPART-1)*NSIZE, & + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (FPIS(ISEA),ISEA=1+(IPART-1)*NSIZE, & MIN(NSEA,IPART*NSIZE)) END DO + +#ifdef W3_COAWST_MODEL +# ifdef W3_MPI + CALL W3XETA ( IGRD, NDSE, NDST ) +# endif +! +! Write CX/Y into rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (CX(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (CY(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO +! +! Write TAUOCX/Y into rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (TAUOCX(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (TAUOCY(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO +! +! Write PHIBRKX/Y into rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (PHIBRKX(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (PHIBRKY(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO +! +! Write PHICAPX/Y into rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (PHICAPX(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (PHICAPY(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO +! +! Write PHIBBL into rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF + WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & + (PHIBBL(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO +# ifdef W3_MPI + CALL W3SETA ( IGRD, NDSE, NDST ) +# endif +#endif IF (OARST) THEN #ifdef W3_MPI CALL W3XETA ( IGRD, NDSE, NDST ) @@ -1003,10 +1090,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) WRITE(NDSR,ERR=803,IOSTAT=IERR) TAUOCX(1:NSEA) WRITE(NDSR,ERR=803,IOSTAT=IERR) TAUOCY(1:NSEA) ENDIF - IF ( FLOGRR(6,14) ) THEN - WRITE(NDSR,ERR=803,IOSTAT=IERR) USSHX(1:NSEA) - WRITE(NDSR,ERR=803,IOSTAT=IERR) USSHY(1:NSEA) - ENDIF IF ( FLOGRR(7,2) ) THEN WRITE(NDSR,ERR=803,IOSTAT=IERR) UBA(1:NSEA) WRITE(NDSR,ERR=803,IOSTAT=IERR) UBD(1:NSEA) @@ -1089,6 +1172,7 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) ! Updates reflections maps: ! IF (GTYPE.EQ.UNGTYPE) THEN + !AR: not needed since already initialized on w3iogr CALL SET_UG_IOBP #ifdef W3_REF1 ELSE CALL W3SETREF @@ -1109,6 +1193,7 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) (USTDIR(ISEA),ISEA=1+(IPART-1)*NSIZE, & MIN(NSEA,IPART*NSIZE)) END DO +!jcw DO IPART=1,NPART NREC = NREC + 1 RPOS = 1_8 + LRECL*(NREC-1_8) @@ -1123,6 +1208,121 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) (FPIS(ISEA),ISEA=1+(IPART-1)*NSIZE, & MIN(NSEA,IPART*NSIZE)) END DO +#ifdef W3_COAWST_MODEL +! +! Read CX/Y from rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (CX(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (CY(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO +! +! Read TAUOCX/Y from rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (TMP(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (TMP2(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + TAUOCX = 0. + TAUOCY = 0. + DO I=1, NSEALM + J = IAPROC + (I-1)*NAPROC + IF (J .LE. NSEA) THEN + TAUOCX(I) = TMP(J) + TAUOCY(I) = TMP2(J) + ENDIF + ENDDO +! +! Read PHIBRKX/Y from rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (TMP(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (TMP2(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + PHIBRKX = 0. + PHIBRKY = 0. + DO I=1, NSEALM + J = IAPROC + (I-1)*NAPROC + IF (J .LE. NSEA) THEN + PHIBRKX(I) = TMP(J) + PHIBRKY(I) = TMP2(J) + ENDIF + ENDDO +! +! Read PHICAPX/Y from rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (TMP(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (TMP2(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + PHICAPX = 0. + PHICAPY = 0. + DO I=1, NSEALM + J = IAPROC + (I-1)*NAPROC + IF (J .LE. NSEA) THEN + PHICAPX(I) = TMP(J) + PHICAPY(I) = TMP2(J) + ENDIF + ENDDO +! +! Read PHIBBL from rst file +! + DO IPART=1,NPART + NREC = NREC + 1 + RPOS = 1_8 + LRECL*(NREC-1_8) + READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & + (TMP(ISEA),ISEA=1+(IPART-1)*NSIZE, & + MIN(NSEA,IPART*NSIZE)) + END DO + PHIBBL = 0. + DO I=1, NSEALM + J = IAPROC + (I-1)*NAPROC + IF (J .LE. NSEA) THEN + PHIBBL(I) = TMP(J) + ENDIF + ENDDO + +#endif IF (OARST) THEN IF ( FLOGOA(1,2) ) THEN READ (NDSR,ERR=802,IOSTAT=IERR) CX(1:NSEA) @@ -1274,17 +1474,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) ENDIF ENDDO ENDIF - IF ( FLOGOA(6,14) ) THEN - READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) - READ (NDSR,ERR=802,IOSTAT=IERR) TMP2(1:NSEA) - DO I=1, NSEALM - J = IAPROC + (I-1)*NAPROC - IF (J .LE. NSEA) THEN - USSHX(I) = TMP(J) - USSHY(I) = TMP2(J) - ENDIF - ENDDO - ENDIF IF ( FLOGOA(7,2) ) THEN READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) READ (NDSR,ERR=802,IOSTAT=IERR) TMP2(1:NSEA) @@ -1324,7 +1513,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) TICE(1) = -1 TICE(2) = 0 TRHO(1) = -1 - TRHO(2) = 0 TIC1(1) = -1 TIC1(2) = 0 TIC5(1) = -1 @@ -1369,8 +1557,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) UBD = 0. PHIBBL = 0. TAUBBL = 0. - USSHX = 0. - USSHY = 0. ENDIF #ifdef W3_T WRITE (NDST,9008) diff --git a/model/src/w3iosfmd.F90 b/model/src/w3iosfmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3iotrmd.F90 b/model/src/w3iotrmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3macros.h b/model/src/w3macros.h old mode 100644 new mode 100755 diff --git a/model/src/w3meminfo.F90 b/model/src/w3meminfo.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3metamd.F90 b/model/src/w3metamd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlbouncmd.F90 b/model/src/w3nmlbouncmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlboundmd.F90 b/model/src/w3nmlboundmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlgridmd.F90 b/model/src/w3nmlgridmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlmultimd.F90 b/model/src/w3nmlmultimd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlounfmd.F90 b/model/src/w3nmlounfmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlounpmd.F90 b/model/src/w3nmlounpmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlprncmd.F90 b/model/src/w3nmlprncmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmlshelmd.F90 b/model/src/w3nmlshelmd.F90 old mode 100644 new mode 100755 index 89676ab49..ac53104b2 --- a/model/src/w3nmlshelmd.F90 +++ b/model/src/w3nmlshelmd.F90 @@ -274,7 +274,6 @@ SUBROUTINE W3NMLSHEL (MPI_COMM, NDSI, INFILE, NML_DOMAIN, & #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - logical :: is_open IERR = 0 #ifdef W3_S @@ -289,22 +288,20 @@ SUBROUTINE W3NMLSHEL (MPI_COMM, NDSI, INFILE, NML_DOMAIN, & ! open namelist log file IF ( NMPLOG .EQ. IMPROC ) THEN - OPEN (newunit=NDSN, file=TRIM(INFILE)//'.log', form='formatted', iostat=IERR) + NDSN = 3 + OPEN (NDSN, file=TRIM(INFILE)//'.log', form='formatted', iostat=IERR) IF (IERR.NE.0) THEN WRITE (MDSE,'(A)') 'ERROR: open full nml file '//TRIM(INFILE)//'.log failed' RETURN END IF END IF - inquire (unit=ndsi, opened=is_open) - if (.not. is_open) then - ! open input file - open (NDSI, FILE=TRIM(INFILE), form='formatted', status='old', iostat=IERR) - IF (IERR.NE.0) THEN - WRITE (MDSE,'(A)') 'ERROR: open input file '//TRIM(INFILE)//' failed' - RETURN - END IF - end if + ! open input file + open (NDSI, FILE=TRIM(INFILE), form='formatted', status='old', iostat=IERR) + IF (IERR.NE.0) THEN + WRITE (MDSE,'(A)') 'ERROR: open input file '//TRIM(INFILE)//' failed' + RETURN + END IF ! read domain namelist CALL READ_DOMAIN_NML (NDSI, NML_DOMAIN) diff --git a/model/src/w3nmltrncmd.F90 b/model/src/w3nmltrncmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3nmluprstrmd.F90 b/model/src/w3nmluprstrmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3oacpmd.F90 b/model/src/w3oacpmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3odatmd.F90 b/model/src/w3odatmd.F90 old mode 100644 new mode 100755 index 09a28d725..408f36fe6 --- a/model/src/w3odatmd.F90 +++ b/model/src/w3odatmd.F90 @@ -310,10 +310,6 @@ MODULE W3ODATMD ! !/ ------------------------------------------------------------------- / USE CONSTANTS, ONLY : UNDEF - - ! module default - IMPLICIT NONE - PUBLIC !/ !/ Module private variable for checking error returns @@ -440,7 +436,7 @@ MODULE W3ODATMD INTEGER :: TOSNL5(2) #endif INTEGER :: TOFRST(2), TONEXT(2,8), TOLAST(2,8), & - TBPI0(2), TBPIN(2), NDS(15), OFILES(7) + TBPI0(2), TBPIN(2), NDS(13), OFILES(7) REAL :: DTOUT(8) LOGICAL :: FLOUT(8) TYPE(OTYPE1) :: OUT1 @@ -558,36 +554,6 @@ MODULE W3ODATMD LOGICAL, POINTER :: FLFORM, FLCOMB, O6INIT INTEGER, POINTER :: PTMETH ! C. Bunney; Partitioning method REAL, POINTER :: PTFCUT ! C. Bunney; Part. 5 freq cut - - character(len=8) :: runtype = '' !< @public the run type (startup,branch,continue) - character(len=256) :: initfile = '' !< @public name of wave initial condition file - !! if runtype is startup or branch run, then initfile is used - character(len=512) :: user_histfname = '' !< @public user history filename prefix, timestring - !! YYYY-MM-DD-SSSSS will be appended - character(len=512) :: user_restfname = '' !< @public user restart filename prefix, timestring - !! YYYY-MM-DD-SSSSS will be appended - logical :: histwr = .false. !< @public logical to trigger history write - !! if true => write history file (snapshot) - logical :: rstwr = .false. !< @public logical to trigger restart write - !! if true => write restart - logical :: use_historync = .false. !< @public logical flag to use netCDF for gridded - !! field output - logical :: use_restartnc = .false. !< @public logical flag to read and write netCDF restarts - logical :: restart_from_binary = .false. !< @public logical flag for restarting from binary restart - ! when use_restartnc is true - logical :: logfile_is_assigned = .false. !< @public logical flag for assignment of nds(1) to specified - !! log file in mesh cap - logical :: verboselog = .true. !< @public logical flag to enable verbose WW3 native logging - logical :: addrstflds = .false. !< @public logical flag for additional restart fields - integer :: rstfldcnt = 0 !< @public the actual number of additional restart fields - character(len=10), dimension(10) :: rstfldlist = '' !< @public a list of additional fields for the restart file, - !! currently set to a maximum of 10. Additional restart fields - !! are required only when waves are in the slow loop and ice - !! is present. Note that waves should not be in the slow loop - !! if coupling to CICE is set - character(len=36) :: time_origin = '' !< @public the time_origin used for netCDF output - character(len=36) :: calendar_name = '' !< @public the calendar used for netCDF output - integer(kind=8) :: elapsed_secs = 0 !< @public the time in seconds from the time_origin !/ CONTAINS !/ ------------------------------------------------------------------- / @@ -658,6 +624,7 @@ SUBROUTINE W3NOUT ( NDSERR, NDSTST ) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -888,7 +855,7 @@ SUBROUTINE W3NOUT ( NDSERR, NDSTST ) ! ! 6) Wave-ocean layer ! - NOGE(6) = 14 + NOGE(6) = 13 ! IDOUT( 6, 1) = 'Radiation stresses ' IDOUT( 6, 2) = 'Wave-ocean mom. flux' @@ -903,7 +870,6 @@ SUBROUTINE W3NOUT ( NDSERR, NDSTST ) IDOUT( 6,11) = 'Wave-ice energy flux' IDOUT( 6,12) = 'Split Surface Stokes' IDOUT( 6,13) = 'Tot wav-ocn mom flux' - IDOUT( 6,14) = 'Stokes drift sfc ave' ! ! 7) Wave-bottom layer ! @@ -921,14 +887,13 @@ SUBROUTINE W3NOUT ( NDSERR, NDSTST ) ! ! 8) Spectrum parameters ! - NOGE(8) = 6 + NOGE(8) = 5 ! IDOUT( 8, 1) = 'Mean square slopes ' IDOUT( 8, 2) = 'Phillips tail const' IDOUT( 8, 3) = 'Slope direction ' IDOUT( 8, 4) = 'Tail slope direction' IDOUT( 8, 5) = 'Goda peakedness parm' - IDOUT( 8, 6) = 'kxky-peakdness ' ! IDOUT( 8, 3) = 'Lx-Ly mean wvlength' ! IDOUT( 8, 4) = 'Surf grad correl XT' ! IDOUT( 8, 5) = 'Surf grad correl YT' @@ -1055,6 +1020,7 @@ SUBROUTINE W3DMO2 ( IMOD, NDSE, NDST, NPT ) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -1249,6 +1215,7 @@ SUBROUTINE W3DMO3 ( IMOD, NDSE, NDST ) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -1417,6 +1384,7 @@ SUBROUTINE W3DMO5 ( IMOD, NDSE, NDST, IBLOCK ) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -1618,6 +1586,7 @@ SUBROUTINE W3SETO ( IMOD, NDSERR, NDSTST ) USE W3SERVMD, ONLY: STRACE #endif ! + IMPLICIT NONE ! !/ !/ ------------------------------------------------------------------- / diff --git a/model/src/w3ogcmmd.F90 b/model/src/w3ogcmmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3ounfmetamd.F90 b/model/src/w3ounfmetamd.F90 old mode 100644 new mode 100755 index 4e35e5a82..fd00c7bb3 --- a/model/src/w3ounfmetamd.F90 +++ b/model/src/w3ounfmetamd.F90 @@ -2638,8 +2638,8 @@ SUBROUTINE DEFAULT_META() !META(1)%VARNS='air_sea_temperature_difference' META(1)%VARNS='' META(1)%VARNG='air_sea_temperature_difference' - META(1)%VMIN = -200.0 - META(1)%VMAX = 200.0 + META(1)%VMIN = 0 + META(1)%VMAX = 400 ! IFI=1, IFJ=5, WLV META => GROUP(1)%FIELD(5)%META META(1)%FSC = 0.01 @@ -3291,7 +3291,7 @@ SUBROUTINE DEFAULT_META() ! IFI=5, IFJ=1, UST META => GROUP(5)%FIELD(1)%META ! First component - META(1)%FSC = 0.001 + META(1)%FSC = 0.01 META(1)%ENAME = '.ust' META(1)%UNITS = 'm s-1' META(1)%VARNM='uust' @@ -3744,30 +3744,6 @@ SUBROUTINE DEFAULT_META() META(2)%VARNS='' META(2)%VARNG='' META(2)%VARNC='toc=sqrt(utoc**2+vtoc**2)' - - ! IFI=6, IFJ=14, USSH - META => GROUP(6)%FIELD(14)%META - META(1)%FSC = 0.0005 - META(1)%UNITS = 'm s-1' - META(1)%ENAME = '.ussh' - - ! First component - META(1)%VARNM='uussh' - META(1)%VARNL='eastward surface averaged stokes drift' - META(1)%VARNS='sea_surface_wave_averaged_stokes_drift_eastward_velocity' - META(1)%VARNG='eastward_surface_averaged_stokes_drift' - META(1)%VARND=DIRCOM - META(1)%VMIN = -4.95 - META(1)%VMAX = 4.95 - - ! Second component - META(2) = META(1) - META(2)%VARNM='vussh' - META(2)%VARNL='northward surface averaged stokes drift' - META(2)%VARNS='sea_surface_wave_averaged_stokes_drift_northward_velocity' - META(2)%VARNG='northward_surface_averaged_stokes_drift' - - ! !---------- GROUP 7 ---------------- ! @@ -3980,19 +3956,6 @@ SUBROUTINE DEFAULT_META() META(1)%VARNC='Goda wave peakedness parameter' META(1)%VMIN = 0 META(1)%VMAX = 32 - ! IFI=8, IFJ=6, QKK - META => GROUP(8)%FIELD(6)%META - META(1)%FSC = 0.05 - META(1)%UNITS = 'm/rad' - META(1)%ENAME = '.qkk' - META(1)%VARNM='qkk' - META(1)%VARNL='k-peakedness' - !META(1)%VARNS='sea_surface_wave_peakedness' - META(1)%VARNS='' - META(1)%VARNG='wavenumber_peakedness' - META(1)%VARNC='2D wavenumber peakedness' - META(1)%VMIN = 0 - META(1)%VMAX = 1600 ! !---------- GROUP 9 ---------------- ! diff --git a/model/src/w3parall.F90 b/model/src/w3parall.F90 old mode 100644 new mode 100755 index e2aba9b52..798e989cb --- a/model/src/w3parall.F90 +++ b/model/src/w3parall.F90 @@ -1,24 +1,3 @@ -!> @file -!> @brief Parallel routines for implicit solver. -!> -!> @author Aron Roland -!> @author Mathieu Dutour-Sikiric -!> @date 01-Jun-2018 -!> - -!/ ------------------------------------------------------------------- / -!> -!> @brief Parallel routines for implicit solver. -!> -!> @author Aron Roland -!> @author Mathieu Dutour-Sikiric -!> @date 01-Jun-2018 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3PARALL !/ !/ +-----------------------------------+ @@ -97,15 +76,6 @@ MODULE W3PARALL REAL, PARAMETER :: THR = TINY(1.0) CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief NA - !> - !> @param[out] eTime - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE WAV_MY_WTIME(eTime) !/ ------------------------------------------------------------------- / !/ @@ -187,15 +157,6 @@ SUBROUTINE WAV_MY_WTIME(eTime) !/ END SUBROUTINE WAV_MY_WTIME !/ ------------------------------------------------------------------- / - !> - !> @brief Print timings. - !> - !> @param[in] string - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE PRINT_MY_TIME(string) !/ !/ +-----------------------------------+ @@ -271,17 +232,6 @@ SUBROUTINE PRINT_MY_TIME(string) !/ END SUBROUTINE PRINT_MY_TIME !/ ------------------------------------------------------------------- / - !> - !> @brief Compute refraction part in matrix. - !> - !> @param[in] ISEA - !> @param[in] DTG - !> @param[out] CAD - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE PROP_REFRACTION_PR1(ISEA,DTG, CAD) !/ !/ +-----------------------------------+ @@ -432,19 +382,6 @@ SUBROUTINE PROP_REFRACTION_PR1(ISEA,DTG, CAD) END SUBROUTINE PROP_REFRACTION_PR1 !/ ------------------------------------------------------------------- / ! - !> - !> @brief Compute refraction part in matrix alternative approach. - !> - !> @param[in] IP - !> @param[in] ISEA - !> @param[in] DTG - !> @param[out] CAD - !> @param[in] DoLimiter - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE PROP_REFRACTION_PR3(IP, ISEA, DTG, CAD, DoLimiter) !/ !/ +-----------------------------------+ @@ -592,19 +529,6 @@ SUBROUTINE PROP_REFRACTION_PR3(IP, ISEA, DTG, CAD, DoLimiter) !/ END SUBROUTINE PROP_REFRACTION_PR3 !/ ------------------------------------------------------------------- / - !> - !> @brief Compute frequency shift in matrix. - !> - !> @param[in] IP - !> @param[in] ISEA - !> @param[out] CAS - !> @param[out] DMM - !> @param[in] DTG - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE PROP_FREQ_SHIFT(IP, ISEA, CAS, DMM, DTG) !/ !/ +-----------------------------------+ @@ -744,19 +668,6 @@ SUBROUTINE PROP_FREQ_SHIFT(IP, ISEA, CAS, DMM, DTG) !/ END SUBROUTINE PROP_FREQ_SHIFT !/ ------------------------------------------------------------------- / - !> - !> @brief Compute frequency shift alternative approach. - !> - !> @param[in] IP - !> @param[in] ISEA - !> @param[out] CWNB_M2 - !> @param[out] DWNI_M2 - !> @param[in] DTG - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE PROP_FREQ_SHIFT_M2(IP, ISEA, CWNB_M2, DWNI_M2, DTG) !/ !/ +-----------------------------------+ @@ -902,16 +813,6 @@ SUBROUTINE PROP_FREQ_SHIFT_M2(IP, ISEA, CWNB_M2, DWNI_M2, DTG) !/ END SUBROUTINE PROP_FREQ_SHIFT_M2 !/ ------------------------------------------------------------------- / - !> - !> @brief Sync global local arrays. - !> - !> @param[in] IMOD - !> @param[in] IsMulti - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE SYNCHRONIZE_IPGL_ETC_ARRAY(IMOD, IsMulti) !/ !/ +-----------------------------------+ @@ -1026,16 +927,6 @@ SUBROUTINE SYNCHRONIZE_IPGL_ETC_ARRAY(IMOD, IsMulti) !/ END SUBROUTINE SYNCHRONIZE_IPGL_ETC_ARRAY !/ ....................----------------------------------------------- / - !> - !> @brief Setup NSEAL, NSEALM in context of PDLIB. - !> - !> @param[out] NSEALout - !> @param[out] NSEALMout - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE SET_UP_NSEAL_NSEALM(NSEALout, NSEALMout) !/ !/ +-----------------------------------+ @@ -1148,17 +1039,6 @@ SUBROUTINE SET_UP_NSEAL_NSEALM(NSEALout, NSEALMout) !/ END SUBROUTINE SET_UP_NSEAL_NSEALM !/ ------------------------------------------------------------------- / - !> - !> @brief Set JSEA for all schemes. - !> - !> @param[in] ISEA - !> @param[out] JSEA - !> @param[out] ISPROC - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE INIT_GET_JSEA_ISPROC(ISEA, JSEA, ISPROC) !/ ------------------------------------------------------------------- / !/ @@ -1256,17 +1136,6 @@ SUBROUTINE INIT_GET_JSEA_ISPROC(ISEA, JSEA, ISPROC) !/ END SUBROUTINE INIT_GET_JSEA_ISPROC !/ ------------------------------------------------------------------- / - !> - !> @brief Set belongings of JSEA in context of PDLIB. - !> - !> @param[in] ISEA - !> @param[out] JSEA - !> @param[out] IBELONG - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE GET_JSEA_IBELONG(ISEA, JSEA, IBELONG) !/ ------------------------------------------------------------------- / !/ @@ -1384,16 +1253,6 @@ SUBROUTINE GET_JSEA_IBELONG(ISEA, JSEA, IBELONG) !/ END SUBROUTINE GET_JSEA_IBELONG !/ ------------------------------------------------------------------- / - !> - !> @brief Set ISEA for all schemes. - !> - !> @param[out] ISEA - !> @param[in] JSEA - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> SUBROUTINE INIT_GET_ISEA(ISEA, JSEA) !/ ------------------------------------------------------------------- / !/ @@ -1500,25 +1359,12 @@ SUBROUTINE INIT_GET_ISEA(ISEA, JSEA) !/ End of INIT_GET_ISEA ------------------------------------------------ / !/ END SUBROUTINE INIT_GET_ISEA - - !> - !> @brief Sync global array in context of PDLIB. - !> - !> @details An array of size (NSEA) is send but only the (1:NSEAL) values - !> are correct. The program synchonizes everything on all nodes. - !> - !> @param[inout] TheVar - !> - !> @author Aron Roland - !> @author Mathieu Dutour-Sikiric - !> @date 01-Jun-2018 - !> + !********************************************************************** + !* An array of size (NSEA) is send but only the (1:NSEAL) values * + !* are correct. The program synchonizes everything on all nodes. * + !********************************************************************** SUBROUTINE SYNCHRONIZE_GLOBAL_ARRAY(TheVar) !/ ------------------------------------------------------------------- / - !********************************************************************** - !* An array of size (NSEA) is send but only the (1:NSEAL) values * - !* are correct. The program synchonizes everything on all nodes. * - !********************************************************************** !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | diff --git a/model/src/w3partmd.F90 b/model/src/w3partmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3pro1md.F90 b/model/src/w3pro1md.F90 old mode 100644 new mode 100755 index f8b498833..16db90356 --- a/model/src/w3pro1md.F90 +++ b/model/src/w3pro1md.F90 @@ -1,25 +1,5 @@ -!> @file -!> @brief Bundles routines for first order propagation scheme in single -!> module. -!> -!> @author H. L. Tolman -!> @date 05-Jun-2018 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief Bundles routines for first order propagation scheme in single -!> module. -!> -!> @author H. L. Tolman -!> @date 05-Jun-2018 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3PRO1MD !/ !/ +-----------------------------------+ @@ -96,14 +76,6 @@ MODULE W3PRO1MD !/ ------------------------------------------------------------------- / CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Generate 'map' arrays for the first order upstream scheme. - !> - !> @param MAPSTA Status map - !> - !> @author H. L. Tolman - !> @date 06-Dec-2010 - !> SUBROUTINE W3MAP1 ( MAPSTA ) !/ !/ +-----------------------------------+ @@ -286,19 +258,6 @@ SUBROUTINE W3MAP1 ( MAPSTA ) !/ END SUBROUTINE W3MAP1 !/ ------------------------------------------------------------------- / - !> - !> @brief Propagation in physical space for a given spectral component. - !> - !> @param[in] ISP Number of spectral bin (IK-1)*NTH+ITH - !> @param[in] DTG Total time step. - !> @param[in] MAPSTA Grid point status map. - !> @param[inout] FIELD Wave action spectral densities on full grid. - !> @param[in] VGX Speed of grid. - !> @param[in] VGY Speed of grid. - !> - !> @author H. L. Tolman - !> @date 29-May-2014 - !> SUBROUTINE W3XYP1 ( ISP, DTG, MAPSTA, FIELD, VGX, VGY ) !/ !/ +-----------------------------------+ @@ -869,31 +828,6 @@ SUBROUTINE W3XYP1 ( ISP, DTG, MAPSTA, FIELD, VGX, VGY ) !/ END SUBROUTINE W3XYP1 !/ ------------------------------------------------------------------- / - !> - !> @brief Propagation in spectral space. - !> - !> @param[inout] ISEA Number of sea points. - !> @param[inout] FACTH Factor in propagation velocity. - !> @param[inout] FACK Factor in propagation velocity. - !> @param[inout] CTHG0 Factor in great circle refracftion term. - !> @param[inout] CG Local group velocities. - !> @param[inout] WN Local wavenumbers. - !> @param[inout] DEPTH Depth. - !> @param[inout] DDDX Depth gradients. - !> @param[inout] DDDY Depth gradients. - !> @param[inout] CX Local group velocities. - !> @param[inout] CY Local group velocities. - !> @param[inout] DCXDX Current gradients. - !> @param[inout] DCXDY Current gradients. - !> @param[inout] DCYDX Current gradients. - !> @param[inout] DCYDY Current gradients. - !> @param[inout] DCDX Phase speed gradients. - !> @param[inout] DCDY Phase speed gradients. - !> @param[inout] VA Spectrum. - !> - !> @author H. L. Tolman - !> @date 20-Dec-2004 - !> SUBROUTINE W3KTP1 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, & DDDX, DDDY, CX, CY, DCXDX, DCXDY, DCYDX, & DCYDY, DCDX, DCDY, VA ) diff --git a/model/src/w3pro2md.F90 b/model/src/w3pro2md.F90 old mode 100644 new mode 100755 index a23f893ef..bf6a704e9 --- a/model/src/w3pro2md.F90 +++ b/model/src/w3pro2md.F90 @@ -1,26 +1,5 @@ -!> @file -!> @brief Bundles routines for third order porpagation scheme in single -!> module. -!> -!> @author H. L. Tolman -!> @date 29-May-2014 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / - -!> -!> @brief Bundles routines for third order porpagation scheme in single -!> module. -!> -!> @author H. L. Tolman -!> @date 29-May-2014 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3PRO2MD !/ !/ +-----------------------------------+ @@ -126,12 +105,6 @@ MODULE W3PRO2MD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Generate 'map' arrays for the ULTIMATE QUICKEST scheme. - !> - !> @author H. L. Tolman - !> @date 09-Nov-2005 - !> SUBROUTINE W3MAP2 !/ !/ @@ -491,20 +464,6 @@ SUBROUTINE W3MAP2 !/ END SUBROUTINE W3MAP2 !/ ------------------------------------------------------------------- / - !> - !> @brief Propagation in physical space for a given spectral component. - !> - !> @param[in] ISP Number of spectral bin (IK-1)*NTH+ITH. - !> @param[in] DTG Total time step. - !> @param[in] MAPSTA Grid point status map. - !> @param[in] MAPFS Storage map. - !> @param[inout] VQ Field to propagate. - !> @param[in] VGX - !> @param[in] VGY - !> - !> @author H. L. Tolman - !> @date 29-May-2014 - !> SUBROUTINE W3XYP2 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) !/ !/ +-----------------------------------+ @@ -683,6 +642,9 @@ SUBROUTINE W3XYP2 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) USE W3ADATMD, ONLY: CG, WN, U10, CX, CY, ATRNX, ATRNY, ITIME, & NMX0, NMX1, NMX2, NMY0, NMY1, NMY2, NACT, & NMXY, MAPX2, MAPY2, MAPAXY, MAPXY +#ifdef W3_CURSP + USE W3ADATMD, ONLY: CXTH, CYTH +#endif USE W3IDATMD, ONLY: FLCUR USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, & ISBPI, BBPI0, BBPIN, IAPROC, NAPERR @@ -781,10 +743,18 @@ SUBROUTINE W3XYP2 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) #endif ! IF ( FLCUR ) THEN +#ifdef W3_CURSP +! ISPC=INT((ISP-1)/NTH)+1 + CXMIN = MINVAL ( CXTH(1:NSEA,IK) ) + CXMAX = MAXVAL ( CXTH(1:NSEA,IK) ) + CYMIN = MINVAL ( CYTH(1:NSEA,IK) ) + CYMAX = MAXVAL ( CYTH(1:NSEA,IK) ) +#else CXMIN = MINVAL ( CX(1:NSEA) ) CXMAX = MAXVAL ( CX(1:NSEA) ) CYMIN = MINVAL ( CY(1:NSEA) ) CYMAX = MAXVAL ( CY(1:NSEA) ) +#endif IF ( ABS(CGX+CXMIN) .GT. ABS(CGX+CXMAX) ) THEN CGX = CGX + CXMIN ELSE @@ -907,8 +877,13 @@ SUBROUTINE W3XYP2 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) #endif DO ISEA=1, NSEA IXY = MAPSF(ISEA,3) +#ifdef W3_CURSP + CXTOT(IXY) = CXTOT(IXY) + CXTH(ISEA,IK)/CLATS(ISEA) + CYTOT(IXY) = CYTOT(IXY) + CYTH(ISEA,IK) +#else CXTOT(IXY) = CXTOT(IXY) + CX(ISEA)/CLATS(ISEA) CYTOT(IXY) = CYTOT(IXY) + CY(ISEA) +#endif #ifdef W3_T1 WRITE (NDST,9021) ISEA, MAPSF(ISEA,1), MAPSF(ISEA,2), & VQ(IXY), CXTOT(IXY), CYTOT(IXY) @@ -1260,48 +1235,15 @@ SUBROUTINE W3XYP2 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) END SUBROUTINE W3XYP2 !/ !/ ------------------------------------------------------------------- / - !> - !> @brief Propagation in spectral space. - !> - !> @details Third order QUICKEST scheme with ULTIMATE limiter. - !> - !> - !> As with the spatial propagation, the two spaces are considered - !> independently, but the propagation is performed in a 2-D space. - !> Compared to the propagation in physical space, the directions - !> represent a closed space and are therefore comparable to the - !> longitudinal or 'X' propagation. The wavenumber space has to be - !> extended to allow for boundary treatment. Using a simple first - !> order boundary treatment at both sided, two points need to - !> be added. This implies that the spectrum needs to be extended, - !> shifted and rotated, as is performed using MAPTH2 as set - !> in W3MAP3. - !> - !> @param[in] ISEA Number of sea point. - !> @param[in] FACTH Factor in propagation velocity. - !> @param[in] FACK Factor in propagation velocity. - !> @param[in] CTHG0 Factor in great circle refracftion term. - !> @param[in] CG Local group velocities. - !> @param[in] WN Local wavenumbers. - !> @param[in] DEPTH Depth. - !> @param[in] DDDX Depth gradient. - !> @param[in] DDDY Depth gradient. - !> @param[in] CX Current component. - !> @param[in] CY Current component. - !> @param[in] DCXDX Current gradients. - !> @param[in] DCXDY Current gradients. - !> @param[in] DCYDX Current gradients. - !> @param[in] DCYDY Current gradients. - !> @param[in] DCDX Phase speed gradient. - !> @param[in] DCDY Phase speed gradient. - !> @param[inout] VA Spectrum. - !> - !> @author H. L. Tolman - !> @date 01-Jul-2013 - !> +#ifdef W3_CURSP + SUBROUTINE W3KTP2 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, & + DDDX, DDDY, CXTH, CYTH, DCXDXTH, DCXDYTH, & + DCYDXTH, DCYDYTH, DCDX, DCDY, VA ) +#else SUBROUTINE W3KTP2 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, & DDDX, DDDY, CX, CY, DCXDX, DCXDY, & DCYDX, DCYDY, DCDX, DCDY, VA ) +#endif !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -1431,16 +1373,22 @@ SUBROUTINE W3KTP2 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, & !/ Parameter list !/ INTEGER, INTENT(IN) :: ISEA +#ifdef W3_CURSP + REAL, INTENT(IN) :: FACTH, FACK, CTHG0, CG(0:NK+1), & + WN(0:NK+1), DEPTH, DDDX, DDDY, & + CXTH(:), CYTH(:), DCXDXTH(:), DCXDYTH(:), DCYDXTH(:), DCYDYTH(:) +#else REAL, INTENT(IN) :: FACTH, FACK, CTHG0, CG(0:NK+1), & WN(0:NK+1), DEPTH, DDDX, DDDY, & CX, CY, DCXDX, DCXDY, DCYDX, DCYDY +#endif REAL, INTENT(IN) :: DCDX(0:NK+1), DCDY(0:NK+1) REAL, INTENT(INOUT) :: VA(NSPEC) !/ !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: ITH, IK, ISP + INTEGER :: ITH, IK, ISP, IP #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif @@ -1544,6 +1492,17 @@ SUBROUTINE W3KTP2 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, & ! 3.d Current refraction ! IF ( FLCUR ) THEN +#ifdef W3_CURSP + DO ISP=1, NSPEC + IK = 1 + (ISP-1)/NTH + DCYX = FACTH * DCYDXTH(IK) + DCXXYY = FACTH * ( DCXDXTH(IK) - DCYDYTH(IK) ) + DCXY = FACTH * DCXDYTH(IK) + ! + VCFLT(MAPTH2(ISP)) = VCFLT(MAPTH2(ISP)) + & + ES2(ISP)*DCYX + ESC(ISP)*DCXXYY - EC2(ISP)*DCXY + END DO +#else ! DCYX = FACTH * DCYDX DCXXYY = FACTH * ( DCXDX - DCYDY ) @@ -1553,6 +1512,7 @@ SUBROUTINE W3KTP2 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, & VCFLT(MAPTH2(ISP)) = VCFLT(MAPTH2(ISP)) + & ES2(ISP)*DCYX + ESC(ISP)*DCXXYY - EC2(ISP)*DCXY END DO +#endif ! END IF ! @@ -1565,23 +1525,50 @@ SUBROUTINE W3KTP2 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, & ! ! 4.a Directionally dependent part ! +#if !defined W3_CURSP + FKD = ( CX*DDDX + CY*DDDY ) DCXX = - DCXDX DCXYYX = - ( DCXDY + DCYDX ) DCYY = - DCYDY - FKD = ( CX*DDDX + CY*DDDY ) ! DO ITH=1, NTH FKC(ITH) = EC2(ITH)*DCXX + & ESC(ITH)*DCXYYX + ES2(ITH)*DCYY END DO +#endif ! ! 4.b Velocities ! DO IK=0, NK+1 +#if defined W3_CURSP + IF (IK.eq.0) THEN + IP = 1 + ELSE IF (IK.EQ.NK+1) THEN + IP = NK + ELSE + IP = IK + END IF + + DO ITH=1, NTH + DCXX = - DCXDXTH(IP) + DCXYYX = - ( DCXDYTH(IP) + DCYDXTH(IP) ) + DCYY = - DCYDYTH(IP) + ! + FKC(ITH) = EC2(ITH)*DCXX + & + ESC(ITH)*DCXYYX + ES2(ITH)*DCYY + END DO +! + FKD = ( CXTH(IP)*DDDX + CYTH(IP)*DDDY ) FKD0 = FKD / CG(IK) * DSDD(IK) DO ITH=1, NTH CFLK(IK+1,ITH) = FKD0 + WN(IK)*FKC(ITH) END DO +#else + FKD0 = FKD / CG(IK) * DSDD(IK) + DO ITH=1, NTH + CFLK(IK+1,ITH) = FKD0 + WN(IK)*FKC(ITH) + END DO +#endif END DO ! ! 4.c Band widths diff --git a/model/src/w3pro3md.F90 b/model/src/w3pro3md.F90 old mode 100644 new mode 100755 index 96396a7a4..157b9be09 --- a/model/src/w3pro3md.F90 +++ b/model/src/w3pro3md.F90 @@ -1,25 +1,5 @@ -!> @file -!> @brief Bundles routines for third order propagation scheme in single -!> module. -!> -!> @author H. L. Tolman -!> @date 27-May-2014 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief Bundles routines for third order propagation scheme in single -!> module. -!> -!> @author H. L. Tolman -!> @date 27-May-2014 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3PRO3MD !/ !/ +-----------------------------------+ @@ -130,12 +110,6 @@ MODULE W3PRO3MD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Generate 'map' arrays for the ULTIMATE QUICKEST scheme. - !> - !> @author H. L. Tolman - !> @date 01-Apr-2008 - !> SUBROUTINE W3MAP3 !/ !/ +-----------------------------------+ @@ -514,13 +488,6 @@ SUBROUTINE W3MAP3 !/ END SUBROUTINE W3MAP3 !/ ------------------------------------------------------------------- / - !> - !> @brief Generate 'map' arrays for the ULTIMATE QUICKEST scheme to combine - !> GSE alleviation with obstructions. - !> - !> @author H. L. Tolman - !> @date 17-Dec-2004 - !> SUBROUTINE W3MAPT !/ !/ +-----------------------------------+ @@ -621,20 +588,6 @@ SUBROUTINE W3MAPT !/ END SUBROUTINE W3MAPT !/ ------------------------------------------------------------------- / - !> - !> @brief Propagation in phyiscal space for a given spectral component. - !> - !> @param[in] ISP Number of spectral bin (IK-1)*NTH+ITH. - !> @param[in] DTG Total time step. - !> @param[in] MAPSTA Grid point status map. - !> @param[in] MAPFS Storage map. - !> @param[inout] VQ Field to propagate. - !> @param[in] VGX Speed of grid. - !> @param[in] VGY Speed of grid. - !> - !> @author H. L. Tolman - !> @date 27-May-2014 - !> SUBROUTINE W3XYP3 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) !/ !/ +-----------------------------------+ @@ -1466,46 +1419,6 @@ SUBROUTINE W3XYP3 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) !/ END SUBROUTINE W3XYP3 !/ ------------------------------------------------------------------- / -!> -!> @brief Propagation in spectral space. -!> -!> @details Third order QUICKEST scheme with ULTIMATE limiter. -!> -!> As with the spatial propagation, the two spaces are considered -!> independently, but the propagation is performed in a 2-D space. -!> Compared to the propagation in physical space, the directions -!> represent a closed space and are therefore comparable to the -!> longitudinal or 'X' propagation. The wavenumber space has to be -!> extended to allow for boundary treatment. Using a simple first -!> order boundary treatment at both sided, two points need to -!> be added. This implies that the spectrum needs to be extended, -!> shifted and rotated, as is performed using MAPTH2 as set -!> in W3MAP3. -!> -!> @param[in] ISEA Number of sea point. -!> @param[in] FACTH Factor in propagation velocity. -!> @param[in] FACK Factor in propagation velocity. -!> @param[in] CTHG0 Factor in great circle refracftion term. -!> @param[in] CG Local group velocities. -!> @param[in] WN Local wavenumbers. -!> @param[in] DW Depth. -!> @param[in] DDDX Depth gradients. -!> @param[in] DDDY Depth gradients. -!> @param[in] CX Current components. -!> @param[in] CY Current components. -!> @param[in] DCXDX Current gradients. -!> @param[in] DCXDY Current gradients. -!> @param[in] DCYDX Current gradients. -!> @param[in] DCYDY Current gradients. -!> @param[in] DCDX Phase speed gradients. -!> @param[in] DCDY Phase speed gradients. -!> @param[inout] VA Spectrum. -!> @param[out] CFLTHMAX -!> @param[out] CFLKMAX -!> -!> @author H. L. Tolman -!> @date 01-Jul-2013 -!> SUBROUTINE W3KTP3 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DW, & DDDX, DDDY, CX, CY, DCXDX, DCXDY, & DCYDX, DCYDY, DCDX, DCDY, VA, CFLTHMAX, CFLKMAX ) @@ -1950,23 +1863,6 @@ SUBROUTINE W3KTP3 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DW, & !/ END SUBROUTINE W3KTP3 !/ ------------------------------------------------------------------- / - !> - !> @brief Computes the maximum CFL number for spatial advection. - !> - !> @details Used for diagnostic purposes (Could be used to define a - !> local time step ...). - !> - !> @param[in] ISEA Index of grid point. - !> @param[in] DTG Total time step. - !> @param[in] MAPSTA Grid point status map. - !> @param[in] MAPFS Storage map. - !> @param[inout] CFLXYMAX Maximum CFL number for XY propagation. - !> @param[in] VGX Speed of grid. - !> @param[in] VGY Speed of grid. - !> - !> @author F. Ardhuin - !> @date 31-Oct-2010 - !> SUBROUTINE W3CFLXY ( ISEA, DTG, MAPSTA, MAPFS, CFLXYMAX, VGX, VGY ) !/ !/ +-----------------------------------+ diff --git a/model/src/w3profsmd.F90 b/model/src/w3profsmd.F90 old mode 100644 new mode 100755 index 3d50812d0..86c60c2bd --- a/model/src/w3profsmd.F90 +++ b/model/src/w3profsmd.F90 @@ -137,6 +137,9 @@ SUBROUTINE W3XYPUG ( ISP, FACX, FACY, DTG, VQ, VGX, VGY, LCALC ) FSN, FSPSI, FSFCT, FSNIMP, GTYPE, UNGTYPE USE W3WDATMD, ONLY: TIME +#ifdef W3_CURSP + USE W3ADATMD, ONLY: CXTH, CYTH +#endif USE W3ODATMD, ONLY: TBPI0, TBPIN, FLBPI USE W3ADATMD, ONLY: CG, CX, CY, ATRNX, ATRNY, ITIME, CFLXYMAX, DW USE W3IDATMD, ONLY: FLCUR @@ -159,7 +162,7 @@ SUBROUTINE W3XYPUG ( ISP, FACX, FACY, DTG, VQ, VGX, VGY, LCALC ) !/ Local parameters !/ INTEGER :: ITH, IK, ISEA, IXY - INTEGER :: IX + INTEGER :: IX, ISPC #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif @@ -218,8 +221,13 @@ SUBROUTINE W3XYPUG ( ISP, FACX, FACY, DTG, VQ, VGX, VGY, LCALC ) ! Currents are not included on coastal boundaries (IOBP(IXY).EQ.0) ! IF (IOBP(IXY) .EQ. 1) THEN +#ifdef W3_CURSP + VLCFLX(IXY) = VLCFLX(IXY) + CCURX*CXTH(ISEA,IK)/CLATS(ISEA) + VLCFLY(IXY) = VLCFLY(IXY) + CCURY*CYTH(ISEA,IK) +#else VLCFLX(IXY) = VLCFLX(IXY) + CCURX*CX(ISEA)/CLATS(ISEA) VLCFLY(IXY) = VLCFLY(IXY) + CCURY*CY(ISEA) +#endif END IF END DO END IF @@ -1266,7 +1274,7 @@ SUBROUTINE W3XYPFSNIMP ( ISP, C, LCALC, RD10, RD20, DT, AC) DO IBI=1, NBI IP = MAPSF(ISBPI(IBI),1) AC(IP) = ( RD1*BBPI0(ISP,IBI) + RD2*BBPIN(ISP,IBI) ) & - *IOBPA(IP)*IOBPD(ITH,IP) / CG(IK,ISBPI(IBI)) * CLATS(ISBPI(IBI)) + *IOBPA(IP)*(1-IOBPD(ITH,IP)) / CG(IK,ISBPI(IBI)) * CLATS(ISBPI(IBI)) END DO END IF diff --git a/model/src/w3profsmd_pdlib.F90 b/model/src/w3profsmd_pdlib.F90 old mode 100644 new mode 100755 index 6759fb53e..c5b3486da --- a/model/src/w3profsmd_pdlib.F90 +++ b/model/src/w3profsmd_pdlib.F90 @@ -3642,8 +3642,8 @@ SUBROUTINE calcARRAY_JACOBI_VEC(DTG,FACX,FACY,VGX,VGY) DTK = 0 TMP3 = 0 - CCOSA = FACX * ECOS(1:NTH) - CSINA = FACX * ESIN(1:NTH) + CCOSA = FACX * ECOS + CSINA = FACX * ESIN call print_memcheck(memunit, 'memcheck_____:'//' WW3_JACOBI SECTION 0') DO ISP = 1, NSPEC diff --git a/model/src/w3psmcmd.F90 b/model/src/w3psmcmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3ref1md.F90 b/model/src/w3ref1md.F90 old mode 100644 new mode 100755 index df184faf1..795bdce20 --- a/model/src/w3ref1md.F90 +++ b/model/src/w3ref1md.F90 @@ -1,24 +1,4 @@ -!> @file -!> @brief This module computes shoreline reflection, and -!> unresolved islands and iceberg reflections. -!> -!> @author F. Ardhuin -!> @date 27-Jun-2014 -!> - !/ ------------------------------------------------------------------- / -!> -!> @brief This module computes shoreline reflection, and -!> unresolved islands and iceberg reflections. -!> -!> @author F. Ardhuin -!> @date 27-Jun-2014 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3REF1MD !/ !/ +-----------------------------------+ @@ -84,30 +64,6 @@ MODULE W3REF1MD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Computes coastal and iceberg/island reflections and adds free IG energy. - !> - !> @param[inout] A Action density spectrum (1-D). - !> @param[in] CG Group velocities. - !> @param[in] WN Wavenumbers. - !> @param[in] EMEAN - !> @param[in] FMEAN - !> @param[in] DEPTH Mean water depth. - !> @param[in] CX1 - !> @param[in] CY1 - !> @param[in] REFLC - !> @param[in] REFLD - !> @param[in] TRNX - !> @param[in] TRNY - !> @param[in] BERG - !> @param[in] DT - !> @param[in] IX - !> @param[in] IY - !> @param[out] S Source term (1-D version). - !> - !> @author F. Ardhuin - !> @date 11-Jun-2014 - !> SUBROUTINE W3SREF(A, CG, WN, EMEAN, FMEAN, DEPTH, CX1, CY1, REFLC, REFLD, & TRNX, TRNY, BERG, DT, IX, IY, JSEA, S) !/ @@ -148,7 +104,7 @@ SUBROUTINE W3SREF(A, CG, WN, EMEAN, FMEAN, DEPTH, CX1, CY1, REFLC, REFLD, & ! ! Parameter list ! ---------------------------------------------------------------- - ! A R.A. I Action density spectrum (1-D) + ! A R.A. I Action density spectrum (1-D) ! CG R.A. I Group velocities. ! WN R.A. I Wavenumbers. ! DEPTH Real I Mean water depth. diff --git a/model/src/w3sbs1md.F90 b/model/src/w3sbs1md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sbt1md.F90 b/model/src/w3sbt1md.F90 old mode 100644 new mode 100755 index bf17eafa1..fdc675ff3 --- a/model/src/w3sbt1md.F90 +++ b/model/src/w3sbt1md.F90 @@ -1,23 +1,5 @@ -!> @file -!> @brief JONSWAP bottom friction routine. -!> -!> @author H. L. Tolman -!> @date 29-May-2009 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief JONSWAP bottom friction routine. -!> -!> @author H. L. Tolman -!> @date 29-May-2009 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3SBT1MD !/ !/ +-----------------------------------+ @@ -60,31 +42,6 @@ MODULE W3SBT1MD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Bottom friction source term according to the empirical JONSWAP - !> formulation. - !> - !> @verbatim - !> 2 GAMMA / CG \ SBTC1 / \ . - !> Sbt = ---------- | ------- - 0.5 | E = ----- | ... | E (1) - !> GRAV DEPTH \ SI/WN / DEPTH \ / - !> - !> Where GAMMA = -0.038 m2/s3 (JONSWAP) - !> = -0.067 m2/s3 (Bouws and Komen 1983) - !> - !> In the routine, the constant 2 GAMMA / GRAV = SBTC1. - !> @endverbatim - !> - !> @param[in] A Action density spectrum (1-D). - !> @param[in] CG Group velocities. - !> @param[in] WN Wavenumbers. - !> @param[in] DEPTH Mean water depth. - !> @param[out] S Source term (1-D version). - !> @param[out] D Diagonal term of derivative (1-D version). - !> - !> @author H. L. Tolman - !> @date 29-May-2009 - !> SUBROUTINE W3SBT1 (A, CG, WN, DEPTH, S, D) !/ !/ +-----------------------------------+ diff --git a/model/src/w3sbt4md.F90 b/model/src/w3sbt4md.F90 old mode 100644 new mode 100755 index 1d0e3a8d7..3291930f1 --- a/model/src/w3sbt4md.F90 +++ b/model/src/w3sbt4md.F90 @@ -1,27 +1,5 @@ -!> @file -!> @brief SHOWEX bottom friction source term (Ardhuin et al 2003). -!> -!> @author F. Ardhuin -!> @author J. Lepesqueur -!> @date 14-Mar-2012 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief SHOWEX bottom friction source term (Ardhuin et al. 2003). -!> -!> @details Using a subgrid depth parameterization based on Tolman (CE 1995). -!> -!> @author F. Ardhuin -!> @author J. Lepesqueur -!> @date 14-Mar-2012 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3SBT4MD !/ !/ +-----------------------------------+ @@ -136,12 +114,6 @@ MODULE W3SBT4MD !/ ------------------------------------------------------------------- / - !> - !> @brief Initialization for bottom friction source term routine. - !> - !> @author F. Ardhuin - !> @date 14-Mar-2012 - !> SUBROUTINE INSBT4 !/ !/ +-----------------------------------+ @@ -230,15 +202,6 @@ SUBROUTINE INSBT4 !/ END SUBROUTINE INSBT4 ! ---------------------------------------------------------------------- - - !> - !> @brief Tabulation of ERF function, which is used in bottom friction subgrid modeling. - !> - !> @details Initialization for source term routine. - !> - !> @author J. Lepesqueur - !> @date 14-Mar-2012 - !> SUBROUTINE TABU_ERF !/ !/ +-----------------------------------+ @@ -313,30 +276,6 @@ END SUBROUTINE TABU_ERF !/ ------------------------------------------------------------------- / !/ ------------------------------------------------------------------- / - !> - !> @brief Computes the SHOWEX bottom friction with movable bed effects. - !> - !> @details Uses a Gaussian distribution for friction factors, and estimates - !> the contribution of rippled and non-rippled fractions based on the - !> bayesian approach of Tolman (1995). - !> - !> @param[in] A Action density spectrum. - !> @param[in] CG Group velocities. - !> @param[in] WN Wavenumbers. - !> @param[in] DEPTH Water depth. - !> @param[in] D50 Median grain size. - !> @param[in] PSIC Critical Shields parameter. - !> @param[out] TAUBBL Components of stress leaking to the bottom. - !> @param[inout] BEDFORM Ripple parameters (roughness and wavelength). - !> @param[out] S Source term (1-D version). - !> @param[out] D Diagonal term of derivative. - !> @param[in] IX Spatial grid index. - !> @param[in] IY Spatial grid index. - !> - !> @author F. Ardhuin - !> @author J. Lepesqueur - !> @date 15-Mar-2012 - !> SUBROUTINE W3SBT4 (A, CG, WN, DEPTH, D50, PSIC, TAUBBL, BEDFORM, S, D, IX, IY ) !/ !/ +-----------------------------------+ diff --git a/model/src/w3sbt8md.F90 b/model/src/w3sbt8md.F90 old mode 100644 new mode 100755 index c56b57f0e..f598c2fbe --- a/model/src/w3sbt8md.F90 +++ b/model/src/w3sbt8md.F90 @@ -1,27 +1,5 @@ -!> @file -!> @brief Contains routines for computing dissipation by viscous fluid mud using -!> Dalrymple and Liu (1978) "Thin Model". -!> -!> @author M. Orzech -!> @author W. E. Rogers -!> @date 21-Nov-2013 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief Contains routines for computing dissipation by viscous fluid mud using -!> Dalrymple and Liu (1978) "Thin Model". -!> -!> @author M. Orzech -!> @author W. E. Rogers -!> @date 21-Nov-2013 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3SBT8MD !/ !/ +-----------------------------------+ @@ -92,22 +70,6 @@ MODULE W3SBT8MD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Compute dissipation by viscous fluid mud using Dalrymple and Liu (1978). - !> - !> @details "Thin Model" (adapted from Erick Rogers code by Mark Orzech, NRL). - !> - !> @param[in] AC Action density spectrum (1-D). - !> @param[in] H_WDEPTH Mean water depth. - !> @param[out] S Source term (1-D version). - !> @param[out] D Diagonal term of derivative (1-D version). - !> @param[in] IX - !> @param[in] IY - !> - !> @author M. Orzech - !> @author W. E. Rogers - !> @date 21-Nov-2013 - !> SUBROUTINE W3SBT8(AC,H_WDEPTH,S,D,IX,IY) !/ !/ +-----------------------------------+ @@ -492,15 +454,7 @@ SUBROUTINE W3SBT8(AC,H_WDEPTH,S,D,IX,IY) END SUBROUTINE W3SBT8 !/ ------------------------------------------------------------------- / - !> - !> @brief Complex hyperbolic sin (sinh). - !> - !> @param[in] C - !> @param[out] CS - !> - !> @author NA - !> @date NA - !> + SUBROUTINE CSINH(C,CS) COMPLEX, INTENT(IN) :: C COMPLEX, INTENT(OUT) :: CS @@ -511,15 +465,7 @@ SUBROUTINE CSINH(C,CS) END SUBROUTINE CSINH !/ ------------------------------------------------------------------- / - !> - !> @brief Complex hyperbolic cos (cosh). - !> - !> @param[in] C - !> @param[out] CC - !> - !> @author NA - !> @date NA - !> + SUBROUTINE CCOSH(C,CC) COMPLEX, INTENT(IN) :: C COMPLEX, INTENT(OUT) :: CC diff --git a/model/src/w3sbt9md.F90 b/model/src/w3sbt9md.F90 old mode 100644 new mode 100755 index 9ad6fd345..217a54977 --- a/model/src/w3sbt9md.F90 +++ b/model/src/w3sbt9md.F90 @@ -1,27 +1,5 @@ -!> @file -!> @brief Contains routines for computing dissipation by viscous fluid mud using -!> Ng (2000). -!> -!> @author M. Orzech -!> @author W. E. Rogers -!> @date 21-Nov-2013 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief Contains routines for computing dissipation by viscous fluid -!> mud using Ng (2000). -!> -!> @author M. Orzech -!> @author W. E. Rogers -!> @date 21-Nov-2013 -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3SBT9MD !/ !/ +-----------------------------------+ @@ -100,21 +78,6 @@ MODULE W3SBT9MD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Compute dissipation by viscous fluid mud using Ng (2000) - !> (adapted from Erick Rogers code by Mark Orzech, NRL). - !> - !> @param[in] AC Action density. - !> @param[in] H_WDEPTH Mean water depth. - !> @param[out] S Source term (1-D version). - !> @param[out] D Diagonal term of derivative (1-D version). - !> @param[in] IX - !> @param[in] IY - !> - !> @author M. Orzech - !> @author W. E. Rogers - !> @date 21-Nov-2013 - !> SUBROUTINE W3SBT9(AC,H_WDEPTH,S,D,IX,IY) !/ !/ +-----------------------------------+ @@ -406,26 +369,6 @@ SUBROUTINE W3SBT9(AC,H_WDEPTH,S,D,IX,IY) END SUBROUTINE W3SBT9 !/ ------------------------------------------------------------------- / - !> - !> @brief Compute dissipation by viscous fluid mud using Ng (2000). - !> - !> @details Adapted from Erick Rogers code by Mark Orzech, NRL. - !> - !> @param[in] SIGMA Radian frequency (rad). - !> @param[in] H_WDEPTH Water depth, denoted "h" in Ng (m). - !> @param[in] DTILDE Normalized mud depth. - !> @param[in] ZETA The ratio of stokes' boundary layer. - !> @param[in] SBLTM Sbltm is what you get if you calculate sblt using - !> the viscosity of the mud - !> @param[in] GAMMA The gamma used in Ng page 238, density(water)/density(mud). - !> @param[in] WK Unmuddy wavenumber. - !> @param[out] WKDR Muddy wavenumber. - !> @param[out] DISS Dissipation rate. - !> - !> @author E. Rogers - !> @author M. Orzech - !> @date 21-Nov-2013 - !> SUBROUTINE NG(SIGMA,H_WDEPTH,DTILDE,ZETA,SBLTM,GAMMA,WK,WKDR,DISS) !/ !/ +-----------------------------------+ @@ -557,17 +500,6 @@ SUBROUTINE NG(SIGMA,H_WDEPTH,DTILDE,ZETA,SBLTM,GAMMA,WK,WKDR,DISS) END SUBROUTINE NG !/ ------------------------------------------------------------------- / - !> - !> @brief NA - !> - !> @param[in] KWAVE - !> @param[in] H_WDEPTH - !> @param[in] SND2 - !> @param[out] ND - !> - !> @author NA - !> @date NA - !> SUBROUTINE CALC_ND(KWAVE,H_WDEPTH,SND2,ND) !/ ------------------------------------------------------------------- / diff --git a/model/src/w3sdb1md.F90 b/model/src/w3sdb1md.F90 old mode 100644 new mode 100755 index 34c7ec3bf..7e2b35eed --- a/model/src/w3sdb1md.F90 +++ b/model/src/w3sdb1md.F90 @@ -1,26 +1,5 @@ -!> @file -!> @brief Dummy slot for bottom friction source term. -!> -!> @author J. H. Alves -!> @author H. L. Tolman -!> @date 29-May-2009 -!> - #include "w3macros.h" !/ ------------------------------------------------------------------- / -!> -!> @brief Dummy slot for bottom friction source term. -!> -!> @author J. H. Alves -!> @author H. L. Tolman -!> @date 29-May-2009 -!> -!> -!> @copyright Copyright 2009-2022 National Weather Service (NWS), -!> National Oceanic and Atmospheric Administration. All rights -!> reserved. WAVEWATCH III is a trademark of the NWS. -!> No unauthorized use without permission. -!> MODULE W3SDB1MD !/ !/ +-----------------------------------+ @@ -71,28 +50,6 @@ MODULE W3SDB1MD !/ CONTAINS !/ ------------------------------------------------------------------- / - !> - !> @brief Compute depth-induced breaking using Battjes and Janssen bore - !> model approach. - !> - !> @details Note that the Miche criterion can influence wave growth. - !> - !> @param[in] IX Local grid number - !> @param[in] A Action density spectrum (1-D). - !> @param[inout] DEPTH Mean water depth. - !> @param[inout] EMEAN Mean wave energy. - !> @param[inout] FMEAN Mean wave frequency. - !> @param[inout] WNMEAN Mean wave number. - !> @param[in] CG - !> @param[out] LBREAK - !> @param[out] S Source term (1-D version). - !> @param[out] D Diagonal term of derivative (1-D version). - !> - !> @author J. H. Alves - !> @author H. L. Tolman - !> @author A. Roland - !> @date 08-Jun-2018 - !> SUBROUTINE W3SDB1 (IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D ) !/ !/ +-----------------------------------+ @@ -147,6 +104,7 @@ SUBROUTINE W3SDB1 (IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D ) ! FMEAN Real I Mean wave frequency. ! WNMEAN Real I Mean wave number. ! DEPTH Real I Mean water depth. + ! QB Real O Percent wave break 0-1. ! S R.A. O Source term (1-D version). ! D R.A. O Diagonal term of derivative (1-D version). ! ---------------------------------------------------------------- @@ -187,6 +145,7 @@ SUBROUTINE W3SDB1 (IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D ) USE W3ODATMD, ONLY: NDST USE W3GDATMD, ONLY: SIG USE W3ODATMD, only : IAPROC +! USE W3ADATMD, ONLY: QB #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -218,6 +177,7 @@ SUBROUTINE W3SDB1 (IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D ) INTEGER, SAVE :: IENT = 0 #endif REAL*8 :: HM, BB, ARG, Q0, QB, B, CBJ, HRMS, EB(NK) +! REAL*8 :: HM, BB, ARG, Q0, B, CBJ, HRMS, EB(NK) REAL*8 :: AUX, CBJ2, RATIO, S0, S1, THR, BR1, BR2, FAK REAL :: ETOT, FMEAN2 #ifdef W3_T0 @@ -232,12 +192,12 @@ SUBROUTINE W3SDB1 (IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D ) ! ! 0. Initialzations ------------------------------------------------- / ! Never touch this 4 lines below ... otherwise my exceptionhandling will not work. - S = 0. - D = 0. THR = DBLE(1.E-15) IF (SUM(A) .LT. THR) RETURN + S = 0. + D = 0. IWB = 1 ! #ifdef W3_T diff --git a/model/src/w3servmd.F90 b/model/src/w3servmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sic1md.F90 b/model/src/w3sic1md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sic2md.F90 b/model/src/w3sic2md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sic3md.F90 b/model/src/w3sic3md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sic4md.F90 b/model/src/w3sic4md.F90 old mode 100644 new mode 100755 index 0c439976a..7b1c9c67a --- a/model/src/w3sic4md.F90 +++ b/model/src/w3sic4md.F90 @@ -355,10 +355,6 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D) REAL :: ICECOEF1, ICECOEF2, ICECOEF3, & ICECOEF4, ICECOEF5, ICECOEF6, & ICECOEF7, ICECOEF8 - - REAL :: x1,x2,x3,x1sqr,x2sqr,x3sqr !case 8 - REAL :: perfour,amhb,bmhb !case 8 - REAL :: KI1,KI2,KI3,KI4,FC5,FC6,FC7,FREQ REAL :: HS, EMEAN, HICE REAL, ALLOCATABLE :: WN_I(:) ! exponential decay rate for amplitude @@ -431,6 +427,7 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D) IF (INFLAGS2(-2)) ICECOEF6 = MUDD(IX,IY) ! a.k.a. MDN IF (INFLAGS2(-1)) ICECOEF7 = MUDT(IX,IY) ! a.k.a. MTH IF (INFLAGS2(0 )) ICECOEF8 = MUDV(IX,IY) ! a.k.a. MVS + IC4METHOD = IC4PARS(1) ! ! x. No ice --------------------------------------------------------- / @@ -556,41 +553,6 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D) END DO WN_I= 0.5 * ALPHA - CASE (8) - !CMB added option of cubic fit to Meylan, Horvat & Bitz in prep - ! ICECOEF1 is thickness - ! ICECOEF5 is floe size - ! TPI/SIG is period - x3=min(ICECOEF1,3.5) ! limit thickness to 3.5 m - x3=max(x3,0.1) ! limit thickness >0.1 m since I make fit below - x2=min(ICECOEF5*0.5,100.0) ! convert dia to radius, limit to 100m - x2=max(2.5,x2) - x2sqr=x2*x2 - x3sqr=x3*x3 - amhb = 2.12e-3 - bmhb = 4.59e-2 - - DO IK=1, NK - x1=TPI/SIG(IK) ! period - x1sqr=x1*x1 - KARG1(ik)=-0.26982 + 1.5043*x3 - 0.70112*x3sqr + 0.011037*x2 + & - (-0.0073178)*x2*x3 + 0.00036604*x2*x3sqr + & - (-0.00045789)*x2sqr + 1.8034e-05*x2sqr*x3 + & - (-0.7246)*x1 + 0.12068*x1*x3 + & - (-0.0051311)*x1*x3sqr + 0.0059241*x1*x2 + & - 0.00010771*x1*x2*x3 - 1.0171e-05*x1*x2sqr + & - 0.0035412*x1sqr - 0.0031893*x1sqr*x3 + & - (-0.00010791)*x1sqr*x2 + & - 0.00031073*x1**3 + 1.5996e-06*x2**3 + 0.090994*x3**3 - KARG1(ik)=min(karg1(ik),0.0) - WN_I(ik) = 10.0**KARG1(ik) - perfour=x1sqr*x1sqr - if ((x1.gt.5.0) .and. (x1.lt.20.0)) then - WN_I(IK) = WN_I(IK) + amhb/x1sqr+bmhb/perfour - else if (x1.gt.20.0) then - WN_I(IK) = amhb/x1sqr+bmhb/perfour - endif - end do CASE DEFAULT WN_I = ICECOEF1 !Default to IC1: Uniform in k diff --git a/model/src/w3sic5md.F90 b/model/src/w3sic5md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sis1md.F90 b/model/src/w3sis1md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sis2md.F90 b/model/src/w3sis2md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3sln1md.F90 b/model/src/w3sln1md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3smcomd.F90 b/model/src/w3smcomd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3snl1md.F90 b/model/src/w3snl1md.F90 old mode 100644 new mode 100755 index 09c096d2b..e21349ede --- a/model/src/w3snl1md.F90 +++ b/model/src/w3snl1md.F90 @@ -28,7 +28,7 @@ MODULE W3SNL1MD !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | - !/ | Last update : 28-Feb-2023 | + !/ | Last update : 03-Sep-2012 | !/ +-----------------------------------+ !/ !/ 04-Feb-2000 : Origination. ( version 2.00 ) @@ -36,7 +36,6 @@ MODULE W3SNL1MD !/ 24-Dec-2004 : Multiple grid version. ( version 3.06 ) !/ 29-May-2009 : Preparing distribution version. ( version 3.14 ) !/ 03-Sep-2012 : Clean up of test output T0, T1 ( version 4.07 ) - !/ 28-Feb-2023 : Adds GQM separate routines ( version 7.07 ) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -78,22 +77,8 @@ MODULE W3SNL1MD ! !/ ------------------------------------------------------------------- / !/ - !/ PUBLIC !/ - !/ These are the arrays and variables used for GQM method - !/ - INTEGER :: NCONF - INTEGER, ALLOCATABLE :: K_IF2 (:,:,:) , K_IF3 (:,:,:) , K_1P2P(:,:,:) , & - K_1P3M(:,:,:) , K_1P2M(:,:,:) , K_1P3P(:,:,:) , & - K_1M2P(:,:,:) , K_1M3M(:,:,:) , K_1M2M(:,:,:) , & - K_1M3P(:,:,:) - INTEGER, ALLOCATABLE :: F_POIN(:) , T_POIN(:) , K_IF1(:) , K_1P(:,:) , & - K_1M(:,:) , IDCONF(:,:) - DOUBLE PRECISION, ALLOCATABLE :: F_COEF(:) , F_PROJ(:) , TB_SCA(:) , TB_V14(:) - DOUBLE PRECISION, ALLOCATABLE :: TB_V24(:,:,:) , TB_V34(:,:,:) , & - TB_TPM(:,:,:) , TB_TMP(:,:,:) , TB_FAC(:,:,:) - !/ CONTAINS !/ ------------------------------------------------------------------- / @@ -783,1359 +768,6 @@ SUBROUTINE INSNL1 ( IMOD ) !/ End of INSNL1 ----------------------------------------------------- / !/ END SUBROUTINE INSNL1 - - !/ ------------------------------------------------------------------- / - SUBROUTINE W3SNLGQM(A,CG,WN,DEPTH,TSTOTn,TSDERn) - ! This and the following routines are adapted to WW3 from TOMAWAC qnlin3.f - !*********************************************************************** - ! TOMAWAC V6P1 24/06/2011 - !*********************************************************************** - ! - !brief COMPUTES THE CONTRIBUTION OF THE NON-LINEAR INTERACTIONS - !+ SOURCE TERM BETWEEN QUADRUPLETS USING THE GQM METHOD - !+ ("GAUSSIAN QUADRATURE METHOD") PROPOSED BY LAVRENOV - !+ (2001) - !+ - !+ PROCEDURE SPECIFIC TO THE CASE WHERE THE FREQUENCIES - !+ FOLLOW A GEOMETRICAL PROGRESSION AND THE DIRECTIONS - !+ ARE EVENLY DISTRIBUTED OVER [0;2.PI]. - ! - !note THIS SUBROUTINE USES THE OUTPUT FROM 'PRENL3' TO OPTIMISE - !+ THE COMPUTATIONS FOR DIA. - ! - !reference LAVRENOV, I.V. (2001): - !+ "EFFECT OF WIND WAVE PARAMETER FLUCTUATION ON THE NONLINEAR - !+ SPECTRUM EVOLUTION". J. PHYS. OCEANOGR. 31, 861-873. - ! - !history E. GAGNAIRE-RENOU - !+ 04/2011 - !+ V6P1 - !+ CREATED - ! - !history G.MATTAROLO (EDF - LNHE) - !+ 24/06/2011 - !+ V6P1 - !+ Translation of French names of the variables in argument - - ! - !/ Warning, contrary to the DIA routine, there is no extension to frequencies below IK=1 - !/ as a result the first two frequencies are not fully treated. - !================================================================================== - ! This subroutine is same as qnlin3 in TOMWAC - USE CONSTANTS, ONLY: TPI - USE W3GDATMD, ONLY: SIG, NK , NTH , DTH, XFR, FR1, GQTHRSAT, GQAMP - - IMPLICIT NONE - - REAL, intent(in) :: A(NTH,NK), CG(NK), WN(NK) - REAL, intent(in) :: DEPTH - REAL, intent(out) :: TSTOTn(NTH,NK), TSDERn(NTH,NK) - - INTEGER :: ITH,IK,NT,NF - REAL :: q_dfac, SATVAL(NK), SUME, ACCVAL, ACCMAX, AMPFAC - DOUBLE PRECISION :: RAISF, FREQ(NK) - DOUBLE PRECISION :: TSTOT(NTH,NK) , TSDER(NTH,NK), F(NTH,NK) - DOUBLE PRECISION :: TEMP - - !.....LOCAL VARIABLES - INTEGER JF , JT , JF1 , JT1 , IQ_OM2 & - , JFM0 , JFM1 , JFM2 , JFM3 , IXF1 , IXF2 & - , IXF3 , JFMIN , JFMAX , ICONF , LBUF - INTEGER KT1P , KT1M , JT1P , JT1M , KT1P2P, KT1P2M & - , KT1P3P, KT1P3M, KT1M2P, KT1M2M, KT1M3P, KT1M3M & - , JT1P2P, JT1P2M, JT1P3P, JT1P3M, JT1M2P, JT1M2M & - , JT1M3P, JT1M3M - DOUBLE PRECISION V1_4 , V2_4 , V3_4 , Q_2P3M, Q_2M3P, FACTOR & - , T_2P3M, T_2M3P, S_2P3M, S_2M3P, SCAL_T, T2P3M & - , T2M3P , SP0 , SP1P , SP1M , SP1P2P, SP1P2M & - , SP1P3P, SP1P3M, SP1M2P, SP1M2M, SP1M3P, SP1M3M & - , CF0 , CP0 , CF1 , CP1 , CF2 , CP2 & - , CF3 , CP3 , Q2PD0 , Q2PD1 , Q2PD2P, Q2PD3M & - , Q2MD0 , Q2MD1 , Q2MD2M, Q2MD3P ,AUX00 , AUX01 & - , AUX02 , AUX03 , AUX04 , AUX05 , SEUIL & - , AUX06 , AUX07 , AUX08 , AUX09 , AUX10 , FSEUIL - - NT = NTH - NF = NK - LBUF = 500 - SEUIL = 0. - RAISF = XFR - - DO IK = 1,NK - FREQ(IK) = FR1*RAISF**(IK-1) - ENDDO - - DO ITH = 1,NTH - DO IK = 1,NK - ! F is the E(f,theta) spectrum ... - F(ITH,IK) = DBLE(A(ITH,IK)*SIG(IK))*DBLE(TPI)/DBLE(CG(IK)) - ENDDO - ENDDO - ! CALL INSNLGQM - ! it returns: F_POIN , T_POIN , F_COEF , F_PROJ, TB_SCA , K_IF1, K_1P, k_1M , K_IF2 - ! K_IF3, K_1P2P , K_1P3M , K_1P2M , K_1P3P , K_1M2P , K_1M3M , K_1M2M - ! K_1M3P , TB_V14 , TB_FAC , TB_V24 , TB_V34 , TB_TMP , TB_TPM , IDCONF, NCONF - !======================================================================= - ! COMPUTES THE GENERALIZED MIN AND MAX FREQUENCIES : INSTEAD OF GOING - ! FROM 1 TO NF IN FREQ(JF) FOR THE MAIN FREQUENCY, IT GOES FROM JFMIN - ! TO JFMAX - ! JFMIN IS GIVEN BY Fmin=FREQ(1) /Gamma_min - ! JFMAX IS GIVEN BY Fmax=FREQ(NF)*Gamma_max - ! TESTS HAVE SHOWN THAT IT CAN BE ASSUMED Gamma_min=1. (JFMIN=1) AND - ! Gamma_max=1.3 (JFMAX>NF) TO OBTAIN IMPROVED RESULTS - ! Note by Fabrice Ardhuin: this appears to give the difference in tail benaviour with Gerbrant's WRT - !======================================================================= - JFMIN=MAX(1-INT(LOG(1.0D0)/LOG(RAISF)),1) - JFMAX=MIN(NF+INT(LOG(1.3D0)/LOG(RAISF)),NK) - ! - !======================================================================= - ! COMPUTES THE SPECTRUM THRESHOLD VALUES (BELOW WHICH QNL4 IS NOT - ! CALCULATED). THE THRESHOLD IS SET WITHIN 0 AND 1. - ! This was commented by FA - !======================================================================= - ! AUX00=0.0D0 - ! DO JF=1,NF - ! DO JT=1,NT - ! IF (F(JT,JF).GT.AUX00) AUX00=F(JT,JF) - ! ENDDO - ! ENDDO - ! FSEUIL=AUX00*SEUIL - - TSTOT = 0. - TSDER = 0. - !======================================================================= - ACCMAX=0. - DO JF=JFMIN,JFMAX - SUME=SUM(F(:,JF))*DTH - SATVAL(JF) = SUME*FREQ(JF)**5 - ACCVAL = SUME*FREQ(JF)**4 - IF (ACCVAL.GT.ACCMAX) ACCMAX=ACCVAL - END DO - - - ! ================================================== - ! STARTS LOOP 1 OVER THE SELECTED CONFIGURATIONS - ! ================================================== - DO ICONF=1,NCONF - ! ---------selected configuration characteristics - JF1 =IDCONF(ICONF,1) - JT1 =IDCONF(ICONF,2) - IQ_OM2=IDCONF(ICONF,3) - ! - ! ---------Recovers V1**4=(f1/f0)**4 - V1_4 =TB_V14(JF1) - ! ---------Recovers the shift of the frequency index on f1 - IXF1 =K_IF1(JF1) - ! ---------Recovers the direction indexes for Delat1 - KT1P =K_1P(JT1,JF1) - KT1M =K_1M(JT1,JF1) - ! ---------Recovers V2**4=(f2/f0)**4 and V3**4=(f3/f0)**4 - V2_4 =TB_V24(IQ_OM2,JT1,JF1) - V3_4 =TB_V34(IQ_OM2,JT1,JF1) - ! ---------Recovers the frequency indexes shift on f2 and f3 - IXF2 =K_IF2 (IQ_OM2,JT1,JF1) - IXF3 =K_IF3 (IQ_OM2,JT1,JF1) - ! ---------Recovers the direction indexes shift - KT1P2P=K_1P2P(IQ_OM2,JT1,JF1) - KT1P2M=K_1P2M(IQ_OM2,JT1,JF1) - KT1P3P=K_1P3P(IQ_OM2,JT1,JF1) - KT1P3M=K_1P3M(IQ_OM2,JT1,JF1) - KT1M2P=K_1M2P(IQ_OM2,JT1,JF1) - KT1M2M=K_1M2M(IQ_OM2,JT1,JF1) - KT1M3P=K_1M3P(IQ_OM2,JT1,JF1) - KT1M3M=K_1M3M(IQ_OM2,JT1,JF1) - ! ---------Recovers the coupling coefficients - T2P3M =TB_TPM(IQ_OM2,JT1,JF1) - T2M3P =TB_TMP(IQ_OM2,JT1,JF1) - ! ---------Recovers the multiplicative factor of QNL4 - FACTOR=TB_FAC(IQ_OM2,JT1,JF1) - - ! = = = = = = = = = = = = = = = = = = = = = = = = = - ! STARTS LOOP 2 OVER THE SPECTRUM FREQUENCIES - ! = = = = = = = = = = = = = = = = = = = = = = = = = - DO JF=JFMIN,JFMAX - IF (SATVAL(JF).GT.GQTHRSAT) THEN - ! - !.........Recovers the coefficient for the coupling factor - !.........Computes the coupling coefficients for the case +Delta1 (SIG=1) - SCAL_T=TB_SCA(LBUF+JF)*FACTOR - T_2P3M=T2P3M*SCAL_T - T_2M3P=T2M3P*SCAL_T - ! - !.........Frequency indexes and coefficients - JFM0=F_POIN(JF+LBUF) - CF0 =F_COEF(JF+LBUF) - CP0 =F_PROJ(JF+LBUF) - JFM1=F_POIN(JF+IXF1) - CF1 =F_COEF(JF+IXF1) - CP1 =F_PROJ(JF+IXF1) - JFM2=F_POIN(JF+IXF2) - CF2 =F_COEF(JF+IXF2) - CP2 =F_PROJ(JF+IXF2) - JFM3=F_POIN(JF+IXF3) - CF3 =F_COEF(JF+IXF3) - CP3 =F_PROJ(JF+IXF3) - ! - ! ------------------------------------------------- - ! STARTS LOOP 3 OVER THE SPECTRUM DIRECTIONS - ! ------------------------------------------------- - DO JT=1,NT - ! - !...........Direction indexes - ! direct config (+delta1) (sig =1) - JT1P =T_POIN(JT+KT1P) - JT1P2P=T_POIN(JT+KT1P2P) - JT1P2M=T_POIN(JT+KT1P2M) - JT1P3P=T_POIN(JT+KT1P3P) - JT1P3M=T_POIN(JT+KT1P3M) - ! image config (-delta1) - JT1M =T_POIN(JT+KT1M) - JT1M2P=T_POIN(JT+KT1M2P) - JT1M2M=T_POIN(JT+KT1M2M) - JT1M3P=T_POIN(JT+KT1M3P) - JT1M3M=T_POIN(JT+KT1M3M) - ! - ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! STARTS LOOP 4 OVER THE MESH NODES - ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! - SP0=F(JT,JFM0)*CF0 - ! - ! IF (SP0.GT.FSEUIL) THEN - ! - ! Config. +Delta1 (SIG=1) - ! ======================= - !...............Computes the spectrum values in 1, 2, 3 - SP1P =F(JT1P ,JFM1)*CF1 - SP1P2P=F(JT1P2P,JFM2)*CF2 - SP1P3M=F(JT1P3M,JFM3)*CF3 - SP1P2M=F(JT1P2M,JFM2)*CF2 - SP1P3P=F(JT1P3P,JFM3)*CF3 - ! - !...............Computes auxiliary products and variables - AUX01=SP0*V1_4+SP1P - AUX02=SP0*SP1P - AUX03=SP1P2P*SP1P3M - AUX04=SP1P2P*V3_4+SP1P3M*V2_4 - AUX05=SP1P2M*SP1P3P - AUX06=SP1P2M*V3_4+SP1P3P*V2_4 - AUX07=AUX02*V3_4 - AUX08=AUX02*V2_4 - ! - !...............Computes the components of the transfer term - S_2P3M=AUX03*AUX01-AUX02*AUX04 - S_2M3P=AUX05*AUX01-AUX02*AUX06 - Q_2P3M=T_2P3M*S_2P3M - Q_2M3P=T_2M3P*S_2M3P - AUX00 =Q_2P3M+Q_2M3P - ! - !...............Computes the components of the derived terms (dQ/dF) - Q2PD0 =T_2P3M*(AUX03*V1_4 - SP1P*AUX04)*CF0 - Q2PD1 =T_2P3M*(AUX03 - SP0 *AUX04)*CF1 - Q2PD2P=T_2P3M*(AUX01*SP1P3M - AUX07 )*CF2 - Q2PD3M=T_2P3M*(AUX01*SP1P2P - AUX08 )*CF3 - Q2MD0 =T_2M3P*(AUX05*V1_4 - SP1P*AUX06)*CF0 - Q2MD1 =T_2M3P*(AUX03 - SP0 *AUX06)*CF1 - Q2MD2M=T_2M3P*(AUX01*SP1P3P - AUX07 )*CF2 - Q2MD3P=T_2M3P*(AUX01*SP1P2M - AUX08 )*CF3 - AUX09=Q2PD0+Q2MD0 - AUX10=Q2PD1+Q2MD1 - ! - !...............Sum of Qnl4 term in the table TSTOT - TSTOT(JT,JFM0 )=TSTOT(JT,JFM0 )+AUX00 *CP0 - TSTOT(JT1P,JFM1 )=TSTOT(JT1P,JFM1 )+AUX00 *CP1 - TSTOT(JT1P2P,JFM2)=TSTOT(JT1P2P,JFM2)-Q_2P3M*CP2 - TSTOT(JT1P2M,JFM2)=TSTOT(JT1P2M,JFM2)-Q_2M3P*CP2 - TSTOT(JT1P3M,JFM3)=TSTOT(JT1P3M,JFM3)-Q_2P3M*CP3 - TSTOT(JT1P3P,JFM3)=TSTOT(JT1P3P,JFM3)-Q_2M3P*CP3 - ! - !...............Sum of the term dQnl4/dF in the table TSDER - TSDER(JT,JFM0)=TSDER(JT,JFM0)+AUX09 *CP0 - TSDER(JT1P,JFM1)=TSDER(JT1P,JFM1)+AUX10 *CP1 - TSDER(JT1P2P,JFM2)=TSDER(JT1P2P,JFM2)-Q2PD2P*CP2 - TSDER(JT1P2M,JFM2)=TSDER(JT1P2M,JFM2)-Q2MD2M*CP2 - TSDER(JT1P3M,JFM3)=TSDER(JT1P3M,JFM3)-Q2PD3M*CP3 - TSDER(JT1P3P,JFM3)=TSDER(JT1P3P,JFM3)-Q2MD3P*CP3 -#ifdef W3_TGQM - ! Test output to set up triplet method ... - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT, JFM0,AUX00 *CP0, F(JT,JFM0),TSTOT(JT ,JFM0) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1P, JFM1,AUX00 *CP1, F(JT1P,JFM1),TSTOT(JT1P,JFM1) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1P2P,JFM2,-Q_2P3M*CP2,F(JT1P2P,JFM2),TSTOT(JT1P2P,JFM2) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1P2M,JFM2,-Q_2M3P*CP2,F(JT1P2M,JFM2),TSTOT(JT1P2M,JFM2) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1P3M,JFM2,-Q_2P3M*CP3,F(JT1P3M,JFM3),TSTOT(JT1P3M,JFM3) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1P3P,JFM2,-Q_2M3P*CP3,F(JT1P3P,JFM3),TSTOT(JT1P3P,JFM3) - TEMP=(TB_TPM(IQ_OM2,JT1,JF1)*(( F(JT1P2P,JFM2)*CF2 *F(JT1P3M,JFM3)*CF3)* & - (F(JT,JFM0 )*CF0*TB_V14(JF1)+F(JT1P ,JFM1)*CF1) & - -SP0*SP1P*(SP1P2P*V3_4+SP1P3M*V2_4))+T_2M3P*(AUX05*AUX01-AUX02*AUX06)) *CP0 - WRITE(995,'(3I3,3E12.3)') ICONF,JF,JT, F(JT,JFM0) - TEMP=(Q_2P3M+Q_2M3P) *CP1 - WRITE(995,'(5I3,3E12.3)') ICONF,JF,JT,JT1P, JFM1,AUX00 *CP1, F(JT1P,JFM1),TSTOT(JT1P,JFM1) - WRITE(995,'(5I3,3E12.3)') ICONF,JF,JT,JT1P2P,JFM2,-Q_2P3M*CP2,F(JT1P2P,JFM2),TSTOT(JT1P2P,JFM2) - WRITE(995,'(5I3,3E12.3)') ICONF,JF,JT,JT1P2M,JFM2,-Q_2M3P*CP2,F(JT1P2M,JFM2),TSTOT(JT1P2M,JFM2) - WRITE(995,'(5I3,3E12.3)') ICONF,JF,JT,JT1P3M,JFM2,-Q_2P3M*CP3,F(JT1P3M,JFM3),TSTOT(JT1P3M,JFM3) - WRITE(995,'(5I3,3E12.3)') ICONF,JF,JT,JT1P3P,JFM2,-Q_2M3P*CP3,F(JT1P3P,JFM3),TSTOT(JT1P3P,JFM3) -#endif - ! - ! Config. -Delta1 (SIG=-1) - ! ======================== - !...............Computes the spectrum values in 1, 2, 3 - SP1M =F(JT1M ,JFM1)*CF1 - SP1M2P=F(JT1M2P,JFM2)*CF2 - SP1M3M=F(JT1M3M,JFM3)*CF3 - SP1M2M=F(JT1M2M,JFM2)*CF2 - SP1M3P=F(JT1M3P,JFM3)*CF3 - ! - !...............Computes auxiliary products and variables - AUX01=SP0*V1_4+SP1M - AUX02=SP0*SP1M - AUX03=SP1M2P*SP1M3M - AUX04=SP1M2P*V3_4+SP1M3M*V2_4 - AUX05=SP1M2M*SP1M3P - AUX06=SP1M2M*V3_4+SP1M3P*V2_4 - AUX07=AUX02*V3_4 - AUX08=AUX02*V2_4 - ! - !...............Computes the transfer term components - S_2P3M=AUX03*AUX01-AUX02*AUX04 - S_2M3P=AUX05*AUX01-AUX02*AUX06 - Q_2P3M=T_2M3P*S_2P3M - Q_2M3P=T_2P3M*S_2M3P - AUX00 =Q_2P3M+Q_2M3P ! Same as in +Delta1, can be commented out - ! - !...............Computes the derived terms components (dQ/dF) - Q2PD0 =T_2P3M*(AUX03*V1_4 - SP1M*AUX04)*CF0 - Q2PD1 =T_2P3M*(AUX03 - SP0 *AUX04)*CF1 - Q2PD2P=T_2P3M*(AUX01*SP1M3M - AUX07 )*CF2 - Q2PD3M=T_2P3M*(AUX01*SP1M2P - AUX08 )*CF3 - Q2MD0 =T_2M3P*(AUX05*V1_4 - SP1M*AUX06)*CF0 - Q2MD1 =T_2M3P*(AUX03 - SP0 *AUX06)*CF1 - Q2MD2M=T_2M3P*(AUX01*SP1M3P - AUX07 )*CF2 - Q2MD3P=T_2M3P*(AUX01*SP1M2M - AUX08 )*CF3 - AUX09=Q2PD0+Q2MD0 - AUX10=Q2PD1+Q2MD1 - ! - !...............Sum of Qnl4 term in the table TSTOT - TSTOT(JT ,JFM0)=TSTOT(JT ,JFM0)+AUX00 *CP0 - TSTOT(JT1M ,JFM1)=TSTOT(JT1M ,JFM1)+AUX00 *CP1 - TSTOT(JT1M2P,JFM2)=TSTOT(JT1M2P,JFM2)-Q_2P3M*CP2 - TSTOT(JT1M2M,JFM2)=TSTOT(JT1M2M,JFM2)-Q_2M3P*CP2 - TSTOT(JT1M3M,JFM3)=TSTOT(JT1M3M,JFM3)-Q_2P3M*CP3 - TSTOT(JT1M3P,JFM3)=TSTOT(JT1M3P,JFM3)-Q_2M3P*CP3 - ! - !...............Sum of the term dQnl4/dF in the table TSDER - TSDER(JT ,JFM0)=TSDER(JT ,JFM0)+AUX09 *CP0 - TSDER(JT1M ,JFM1)=TSDER(JT1M ,JFM1)+AUX10 *CP1 - TSDER(JT1M2P,JFM2)=TSDER(JT1M2P,JFM2)-Q2PD2P*CP2 - TSDER(JT1M2M,JFM2)=TSDER(JT1M2M,JFM2)-Q2MD2M*CP2 - TSDER(JT1M3M,JFM3)=TSDER(JT1M3M,JFM3)-Q2PD3M*CP3 - TSDER(JT1M3P,JFM3)=TSDER(JT1M3P,JFM3)-Q2MD3P*CP3 - ! -#ifdef W3_TGQM - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT, JFM0,AUX00 *CP0, F(JT,JFM0),TSTOT(JT ,JFM0) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1M, JFM1,AUX00 *CP1, F(JT1M,JFM1),TSTOT(JT1M,JFM1) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1M2P,JFM2,-Q_2P3M*CP2,F(JT1M2P,JFM2),TSTOT(JT1M2P,JFM2) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1M2M,JFM2,-Q_2M3P*CP2,F(JT1M2M,JFM2),TSTOT(JT1M2M,JFM2) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1M3M,JFM2,-Q_2P3M*CP3,F(JT1M3M,JFM3),TSTOT(JT1M3M,JFM3) - WRITE(994,'(5I3,3E12.3)') ICONF,JF,JT,JT1M3P,JFM2,-Q_2M3P*CP3,F(JT1M3P,JFM3),TSTOT(JT1M3P,JFM3) -#endif - ! - ! ENDIF ! this was the test on SEUIL - ! - ENDDO - ! ------------------------------------------------- - ! END OF LOOP 3 OVER THE SPECTRUM DIRECTIONS - ! ------------------------------------------------- - ! - ENDIF ! End of test on saturation level - ENDDO - ! = = = = = = = = = = = = = = = = = = = = = = = = = - ! END OF LOOP 2 OVER THE SPECTRUM FREQUENCIES - ! = = = = = = = = = = = = = = = = = = = = = = = = = - ! - ENDDO - ! ================================================== - ! END OF LOOP 1 OVER THE SELECTED CONFIGURATIONS - ! ================================================== - ! Applying WAM DEPTH SCALING ! to be added later ... - ! CALL q_dscale(F,WN,SIG,DTH,NK,NTH,DEPTH,q_dfac) - q_dfac=1 - - ! Amplification inspired by Lavrenov 2001, eq 10. - AMPFAC=GQAMP(4)*MIN(MAX(ACCMAX/GQAMP(2),1.)**GQAMP(1),GQAMP(3)) - !WRITE(991,*) ACCMAX,q_dfac,AMPFAC,GQAMP(1:3),SATVAL(10),SATVAL(30) - - ! Replacing Double Precision with Simple Real and scaling - TSTOTn = TSTOT*q_dfac*AMPFAC - TSDERn = TSDER*q_dfac*AMPFAC - - - ! Converting Snl(theta,f) to Snl(theta,k)/sigma - DO ITH = 1,NT - DO IK = 1,NF - TSTOTn(ITH,IK) = TSTOTn(ITH,IK)*CG(IK)/(TPI*SIG(IK)) - ENDDO - ENDDO - !CLOSE(994) - !STOP - END SUBROUTINE W3SNLGQM - - !/ ------------------------------------------------------------------- / - FUNCTION COUPLE(XK1 ,YK1 ,XK2 ,YK2 ,XK3 ,YK3 ,XK4 ,YK4) - !/ - !/ +-----------------------------------+ - !/ | WAVEWATCH III NOAA/NCEP | - !/ | M. Benoit & E. Gagnaire-Renou | - !/ | Last update : 20-Nov-2022 | - !/ +-----------------------------------+ - !/ - !/ 19-Nov-2022 : Transfer from TOMAWAC code ( version 7.xx ) - !/ - ! 1. Purpose : - ! - ! Computes the 4-wave coupling coefficient used in Snl4 - ! - ! 2. Method : - ! - ! Uses theoretical expression by Webb (1978) - ! - ! 3. Parameters : - ! - ! Parameter list - ! ---------------------------------------------------------------- - ! XK1 Real I x component of k1 wavenumber ... - ! ---------------------------------------------------------------- - ! - ! 5. Called by : - ! - ! Name Type Module Description - ! ---------------------------------------------------------------- - ! INNSLGQM Subr. W3SNL2 Prepares source term integration. - ! ---------------------------------------------------------------- - ! - ! 6. Error messages : - ! - ! None. - ! - ! 10. Source code : - ! - !/ ------------------------------------------------------------------- / - USE CONSTANTS, ONLY: GRAV - ! - IMPLICIT NONE - - DOUBLE PRECISION, INTENT(IN) :: XK1 , YK1 , XK2 , YK2 - DOUBLE PRECISION, INTENT(IN) :: XK3 , YK3 - DOUBLE PRECISION, INTENT(IN) :: XK4 , YK4 - DOUBLE PRECISION COUPLE - ! - !.....LOCAL VARIABLES - ! """""""""""""""""" - DOUBLE PRECISION RK1 , RK2 , RK3 , RK4 , WK1 , WK2 - DOUBLE PRECISION WK3 , WK4 , S12 , S13 , S14 , S23 - DOUBLE PRECISION S24 , S34 , W1P2 , Q12 , W1M3 , Q13 - DOUBLE PRECISION W1M4 , Q14 , DDD , COEF , DENO13, NUME13 - DOUBLE PRECISION DENO14, NUME14, ZERO, PI - - ! - PI = ACOS(-1.) - COEF=PI*GRAV*GRAV/4.D0 - ZERO=1.D-10 - ! - RK1=SQRT(XK1*XK1+YK1*YK1) - RK2=SQRT(XK2*XK2+YK2*YK2) - RK3=SQRT(XK3*XK3+YK3*YK3) - RK4=SQRT(XK4*XK4+YK4*YK4) - ! - WK1=SQRT(RK1) - WK2=SQRT(RK2) - WK3=SQRT(RK3) - WK4=SQRT(RK4) - ! - S12=XK1*XK2+YK1*YK2 - S13=XK1*XK3+YK1*YK3 - S14=XK1*XK4+YK1*YK4 - S23=XK2*XK3+YK2*YK3 - S24=XK2*XK4+YK2*YK4 - S34=XK3*XK4+YK3*YK4 - ! - W1P2=SQRT((XK1+XK2)*(XK1+XK2)+(YK1+YK2)*(YK1+YK2)) - W1M3=SQRT((XK1-XK3)*(XK1-XK3)+(YK1-YK3)*(YK1-YK3)) - W1M4=SQRT((XK1-XK4)*(XK1-XK4)+(YK1-YK4)*(YK1-YK4)) - Q12=(WK1+WK2)*(WK1+WK2) - Q13=(WK1-WK3)*(WK1-WK3) - Q14=(WK1-WK4)*(WK1-WK4) - ! - !.....COMPUTES THE D COEFFICIENT OF WEBB (1978) - ! """""""""""""""""""""""""""""""""""""" - DDD=2.00D0*Q12*(RK1*RK2-S12)*(RK3*RK4-S34)/(W1P2-Q12) & - +0.50D0*(S12*S34+S13*S24+S14*S23) & - +0.25D0*(S13+S24)*Q13*Q13 & - -0.25D0*(S12+S34)*Q12*Q12 & - +0.25D0*(S14+S23)*Q14*Q14 & - +2.50D0*RK1*RK2*RK3*RK4 & - +Q12*Q13*Q14*(RK1+RK2+RK3+RK4) - - DENO13=W1M3-Q13 - NUME13=2.00D0*Q13*(RK1*RK3+S13)*(RK2*RK4+S24) - IF (ABS(DENO13).LT.ZERO) THEN - IF (ABS(NUME13).LT.ZERO) THEN - WRITE(*,*) 'W3SNL2 error for coupling coefficient : (1-3) 0/0 !' - ELSE - WRITE(*,*) 'W3SNL2 error for coupling coefficient : (1-3) inifinte value' - ENDIF - WRITE(*,*) 'W3SNL2 error for coupling coefficient : (1-3) term not used' - ELSE - DDD=DDD+NUME13/DENO13 - ENDIF - DENO14=W1M4-Q14 - NUME14=2.00D0*Q14*(RK1*RK4+S14)*(RK2*RK3+S23) - IF (ABS(DENO14).LT.ZERO) THEN - IF (ABS(NUME14).LT.ZERO) THEN - WRITE(*,*) 'W3SNL2 error for coupling coefficient : (1-4) 0/0 !' - ELSE - WRITE(*,*) 'W3SNL2 error for coupling coefficient : (1-4) inifinte value' - ENDIF - WRITE(*,*) 'W3SNL2 error for coupling coefficient : (1-4) term not used' - ELSE - DDD=DDD+NUME14/DENO14 - ENDIF - - COUPLE=COEF*DDD*DDD/(WK1*WK2*WK3*WK4) - ! RETURN - END FUNCTION COUPLE - - !/ ------------------------------------------------------------------- / - SUBROUTINE GAULEG (W_LEG ,X_LEG ,NPOIN) - !/ ------------------------------------------------------------------- / - !.....VARIABLES IN ARGUMENT - ! """""""""""""""""""" - IMPLICIT NONE - INTEGER , INTENT(IN) :: NPOIN - DOUBLE PRECISION ,INTENT(INOUT) :: W_LEG(NPOIN) , X_LEG(NPOIN) - ! - !.....LOCAL VARIABLES - ! """"""""""""""""" - INTEGER I, M, J - DOUBLE PRECISION EPS, Z, P1, P2, P3, PP, Z1, PI - PARAMETER (EPS=3.D-14) - ! - PI = ACOS(-1.) - M=(NPOIN+1)/2 - DO I=1,M - Z=COS(PI*(DBLE(I)-0.25D0)/(DBLE(NPOIN)+0.5D0)) -1 CONTINUE - P1=1.0D0 - P2=0.0D0 - DO J=1,NPOIN - P3=P2 - P2=P1 - P1=((2.D0*DBLE(J)-1.D0)*Z*P2-(DBLE(J)-1.D0)*P3)/DBLE(J) - ENDDO - PP=DBLE(NPOIN)*(Z*P1-P2)/(Z*Z-1.D0) - Z1=Z - Z=Z-P1/PP - IF (ABS(Z-Z1).GT.EPS) GOTO 1 - X_LEG(I)=-Z - X_LEG(NPOIN+1-I)=Z - W_LEG(I)=2.D0/((1.D0-Z**2)*PP**2) - W_LEG(NPOIN+1-I)=W_LEG(I) - ENDDO - END SUBROUTINE GAULEG - - !/ ------------------------------------------------------------------- / - SUBROUTINE F1F1F1(F1SF,NF1,IQ_OM1) - ! TOMAWAC V6P3 15/06/2011 - !*********************************************************************** - ! - !brief SUBROUTINE CALLED BY PRENL3 - !+ COMPUTES VALUES OF RATIO F1/F AS FUNCTION OF THE IQ_OM1 - !+ INDICATOR - ! - !history E. GAGNAIRE-RENOU - !+ 04/2011 - !+ V6P1 - !+ CREATED - ! - !history G.MATTAROLO (EDF - LNHE) - !+ 15/06/2011 - !+ V6P1 - !+ Translation of French names of the variables in argument - ! - !history E. GAGNAIRE-RENOU - !+ 12/03/2013 - !+ V6P3 - !+ Better formatted: WRITE(LU,*), etc. - !/ ------------------------------------------------------------------- / - IMPLICIT NONE - INTEGER, INTENT(IN) :: IQ_OM1 - INTEGER, INTENT(INOUT) :: NF1 - DOUBLE PRECISION, INTENT(INOUT) :: F1SF(*) - ! - INTEGER I,M - DOUBLE PRECISION RAISON - ! - IF(IQ_OM1.EQ.1) THEN - IF(NF1.NE.14) THEN - WRITE(*,*) '#1 Incorrect value for NF1',NF1 - ENDIF - F1SF( 1)=0.30D0 - F1SF( 2)=0.40D0 - F1SF( 3)=0.50D0 - F1SF( 4)=0.60D0 - F1SF( 5)=0.70D0 - F1SF( 6)=0.80D0 - F1SF( 7)=0.90D0 - F1SF( 8)=1.00D0 - F1SF( 9)=1.11D0 - F1SF(10)=1.25D0 - F1SF(11)=1.42D0 - F1SF(12)=1.67D0 - F1SF(13)=2.00D0 - F1SF(14)=2.50D0 - F1SF(15)=3.30D0 - ELSEIF(IQ_OM1.EQ.2) THEN - IF (NF1.NE.26) THEN - WRITE(*,*) '#2 Incorrect value for NF1', NF1 - ENDIF - F1SF( 1)=0.32D0 - F1SF( 2)=0.35D0 - F1SF( 3)=0.39D0 - F1SF( 4)=0.44D0 - F1SF( 5)=0.50D0 - F1SF( 6)=0.56D0 - F1SF( 7)=0.63D0 - F1SF( 8)=0.70D0 - F1SF( 9)=0.78D0 - F1SF(10)=0.86D0 - F1SF(11)=0.92D0 - F1SF(12)=0.97D0 - F1SF(13)=1.00D0 - F1SF(14)=1.03D0 - F1SF(15)=1.08D0 - F1SF(16)=1.13D0 - F1SF(17)=1.20D0 - F1SF(18)=1.28D0 - F1SF(19)=1.37D0 - F1SF(20)=1.48D0 - F1SF(21)=1.50D0 - F1SF(22)=1.65D0 - F1SF(23)=1.85D0 - F1SF(24)=2.10D0 - F1SF(25)=2.40D0 - F1SF(26)=2.70D0 - F1SF(27)=3.20D0 - ELSEIF(IQ_OM1.EQ.3) THEN - IF(NF1.NE.11) THEN - WRITE(*,*) 'Incorrect value for NF1', NF1 - ENDIF - F1SF( 1)=0.30D0 - F1SF( 2)=0.48D0 - F1SF( 3)=0.64D0 - F1SF( 4)=0.78D0 - F1SF( 5)=0.90D0 - F1SF( 6)=1.00D0 - F1SF( 7)=1.12D0 - F1SF( 8)=1.28D0 - F1SF( 9)=1.50D0 - F1SF(10)=1.80D0 - F1SF(11)=2.40D0 - F1SF(12)=3.40D0 - ELSEIF(IQ_OM1.EQ.4) THEN - IF(NF1.NE.40) THEN - WRITE(*,*) 'Incorrect value for NF1', NF1 - ENDIF - NF1=20 - M=10 - RAISON=9.D0**(1.D0/DBLE(NF1)) - F1SF(M+1)=1.0D0/3.0D0 - NF1=2*M+NF1 - DO I=M+2,NF1+1 - F1SF(I)=F1SF(I-1)*RAISON - ENDDO - DO I=M,1,-1 - F1SF(I)=F1SF(I+1)/RAISON - ENDDO - ELSEIF(IQ_OM1.EQ.5) THEN - RAISON=9.D0**(1.D0/DBLE(NF1)) - F1SF(1)=1.D0/3.D0 - DO I=2,NF1+1 - F1SF(I)=F1SF(I-1)*RAISON - ENDDO - ELSEIF(IQ_OM1.EQ.6) THEN - RAISON=(3.D0-1.D0/3.D0)/DBLE(NF1) - F1SF(1)=1.D0/3.D0 - DO I=2,NF1+1 - F1SF(I)=F1SF(I-1)+RAISON - ENDDO - ELSEIF(IQ_OM1.EQ.7) THEN - IF(NF1.NE.20) THEN - WRITE(*,*) 'Incorrect value for NF1', NF1 - ENDIF - F1SF( 1)=1.D0/3.D0 - F1SF( 2)=0.40D0 - F1SF( 3)=0.46D0 - F1SF( 4)=0.52D0 - F1SF( 5)=0.60D0 - F1SF( 6)=0.70D0 - F1SF( 7)=0.79D0 - F1SF( 8)=0.86D0 - F1SF( 9)=0.92D0 - F1SF(10)=0.97D0 - F1SF(11)=1.00D0 - F1SF(12)=1.04D0 - F1SF(13)=1.10D0 - F1SF(14)=1.18D0 - F1SF(15)=1.28D0 - F1SF(16)=1.42D0 - F1SF(17)=1.60D0 - F1SF(18)=1.84D0 - F1SF(19)=2.14D0 - F1SF(20)=2.52D0 - F1SF(21)=3.00D0 - ENDIF - ! - END SUBROUTINE F1F1F1 - !/ ------------------------------------------------------------------- / - SUBROUTINE INSNLGQM - !/ - !/ +-----------------------------------+ - !/ | WAVEWATCH III NOAA/NCEP | - !/ | E. Gagnaire-Renou & | - !/ | M. Benoit | - !/ | S. Mostafa Siadatamousavi | - !/ | M. Beyramzadeh | - !/ | FORTRAN 90 | - !/ | Last update : 20-Nov-2022 | - !/ +-----------------------------------+ - !/ - !/ 20-Nov-2022 : Merging with NL2 in WW3. ( version 7.00 ) - !/ - ! 1. Purpose : - ! - ! Preprocessing for nonlinear interactions (Xnl). - ! - ! 2. Method : - ! - ! See Xnl documentation. - ! - ! 3. Parameters : - ! - ! 4. Subroutines used : - ! - ! Name Type Module Description - ! ---------------------------------------------------------------- - ! STRACE Subr. W3SERVMD Subroutine tracing. - ! Subr. GAULEG Gauss-Legendre weights - ! xnl_init Subr. m_constants Xnl initialization routine. - ! ---------------------------------------------------------------- - ! - ! 5. Called by : - ! - ! Name Type Module Description - ! ---------------------------------------------------------------- - ! W3IOGR Subr. W3IOGRMD Model definition file management. - ! ---------------------------------------------------------------- - ! - ! 6. Error messages : - ! - ! 7. Remarks : - ! - ! 8. Structure : - ! - ! - See source code. - ! - ! 9. Switches : - ! - ! !/S Enable subroutine tracing. - ! - ! 10. Source code : - ! - !/ ------------------------------------------------------------------- / - USE CONSTANTS, ONLY: GRAV - USE W3GDATMD, ONLY: NK , NTH , XFR , FR1, GQNF1, GQNT1, GQNQ_OM2, NLTAIL, GQTHRCOU - -#ifdef W3_S - CALL STRACE (IENT, 'INSNLGQM') -#endif - IMPLICIT NONE - !.....LOCAL VARIABLES - INTEGER JF , JT , JF1 , JT1 , NF1P1 , IAUX , NT , NF , IK - INTEGER IQ_TE1 , IQ_OM2 , LBUF , DIMBUF , IQ_OM1 , NQ_TE1 , NCONFM - - DOUBLE PRECISION EPSI_A, AUX , CCC , DENO , AAA , DP2SG , TAILF - DOUBLE PRECISION V1 , V1_4 , DV1 , DTETAR , ELIM , RAISF - DOUBLE PRECISION V2 , V2_4 , V3 , V3_4 - DOUBLE PRECISION W2 , W2_M , W2_1 , W_MIL , W_RAD - DOUBLE PRECISION RK0 , XK0 , YK0 , RK1 , XK1 , YK1 - DOUBLE PRECISION RK2 , XK2P , YK2P , XK2M , YK2M - DOUBLE PRECISION RK3 , XK3P , YK3P , XK3M , YK3M - DOUBLE PRECISION D01P , C_D01P, S_D01P, D0AP , C_D0AP, S_D0AP - DOUBLE PRECISION GA2P , C_GA2P, S_GA2P, GA3P , C_GA3P, S_GA3P, TWOPI, PI, SEUIL1 , SEUIL2 , SEUIL - ! - !.....Variables related to the Gaussian quadratures - DOUBLE PRECISION W_CHE_TE1, W_CHE_OM2, C_LEG_OM2 - ! - !.....Variables related to the configuration selection - DOUBLE PRECISION TEST1 , TEST2 - DOUBLE PRECISION :: FREQ(NK) - DOUBLE PRECISION, ALLOCATABLE :: F1SF(:) , X_CHE_TE1(:) , X_CHE_OM2(:) , X_LEG_OM2(:) , W_LEG_OM2(:) & - , MAXCLA(:) - - PI = Acos(-1.) - LBUF = 500 - DIMBUF = 2*LBUF+200 - TWOPI = 2.*PI - ! - ! Defines some threshold values for filtering (See Gagnaire-Renou Thesis, p 52) - ! - SEUIL1 = 1E10 - SEUIL2 = GQTHRCOU - - IF(GQNF1.EQ.14) IQ_OM1=1 - IF(GQNF1.EQ.26) IQ_OM1=2 - IF(GQNF1.EQ.11) IQ_OM1=3 - IF(GQNF1.EQ.40) IQ_OM1=4 - IF(GQNF1.EQ.11) IQ_OM1=3 - IF(GQNF1.EQ.40) IQ_OM1=4 - IF(GQNF1.EQ.20) IQ_OM1=7 - ! - ! Note by FA: not sure what the 5 and 6 cases correspond to - ! - NQ_TE1 = GQNT1/2 - NCONFM = GQNF1*GQNT1*GQNQ_OM2 - - RAISF = XFR - NT = NTH - NF = NK - DTETAR = TWOPI/DBLE(NT) - - DO IK = 1,NK - FREQ(IK) = FR1*RAISF**(IK-1) - ENDDO - - TAILF = -NLTAIL - - !===============ALLOCATE MATRICES============================================= - if (Allocated(K_IF2) ) then - deallocate(K_IF2) - endif - ALLOCATE(K_IF2(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_IF3) ) then - deallocate(K_IF3) - endif - ALLOCATE(K_IF3(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1P2P) ) then - deallocate(K_1P2P) - endif - ALLOCATE(K_1P2P(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1P3M) ) then - deallocate(K_1P3M) - endif - ALLOCATE(K_1P3M(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1P2M) ) then - deallocate(K_1P2M) - endif - ALLOCATE(K_1P2M(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1P3P) ) then - deallocate(K_1P3P) - endif - ALLOCATE(K_1P3P(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1M2P) ) then - deallocate(K_1M2P) - endif - ALLOCATE(K_1M2P(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1M3M) ) then - deallocate(K_1M3M) - endif - ALLOCATE(K_1M3M(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1M2M) ) then - deallocate(K_1M2M) - endif - ALLOCATE(K_1M2M(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_1M3P) ) then - deallocate(K_1M3P) - endif - ALLOCATE(K_1M3P(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(TB_V24) ) then - deallocate(TB_V24) - endif - ALLOCATE(TB_V24(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(TB_V34) ) then - deallocate(TB_V34) - endif - ALLOCATE(TB_V34(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(TB_TPM) ) then - deallocate(TB_TPM) - endif - ALLOCATE(TB_TPM(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(TB_TMP) ) then - deallocate(TB_TMP) - endif - ALLOCATE(TB_TMP(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(TB_FAC) ) then - deallocate(TB_FAC) - endif - ALLOCATE(TB_FAC(GQNQ_OM2,GQNT1,GQNF1)) - - if (Allocated(K_IF1) ) then - deallocate(K_IF1) - endif - ALLOCATE(K_IF1(GQNF1)) - - if (Allocated(K_1P) ) then - deallocate(K_1P) - endif - ALLOCATE(K_1P(GQNT1,GQNF1)) - - if (Allocated(K_1M) ) then - deallocate(K_1M) - endif - ALLOCATE(K_1M(GQNT1,GQNF1)) - - if (Allocated(TB_V14) ) then - deallocate(TB_V14) - endif - ALLOCATE(TB_V14(GQNF1)) - - if (Allocated(IDCONF) ) then - deallocate(IDCONF) - endif - ALLOCATE(IDCONF(NCONFM,3)) - - !======================================================================= - ! INITIALISATION OF AUXILIAIRY TABLES FOR SPECTRUM INTERPOLATION - !======================================================================= - if (Allocated(F_POIN) ) then - deallocate(F_POIN) - endif - ALLOCATE(F_POIN(DIMBUF)) - - if (Allocated(T_POIN) ) then - deallocate(T_POIN) - endif - ALLOCATE(T_POIN(DIMBUF)) - - if (Allocated(F_COEF) ) then - deallocate(F_COEF) - endif - ALLOCATE(F_COEF(DIMBUF)) - - if (Allocated(F_PROJ) ) then - deallocate(F_PROJ) - endif - ALLOCATE(F_PROJ(DIMBUF)) - - if (Allocated(TB_SCA) ) then - deallocate(TB_SCA) - endif - ALLOCATE(TB_SCA(DIMBUF)) - - - F_POIN(:)=0 - T_POIN(:)=0 - F_COEF(:)=0.D0 - F_PROJ(:)=0.D0 - TB_SCA(:)=0.0D0 - - DO JF=1,LBUF - F_POIN(JF)=1 - F_COEF(JF)=0.0D0 - F_PROJ(JF)=0.0D0 - ENDDO - DO JF=1,NF - IAUX=LBUF+JF - F_POIN(IAUX)=JF - F_COEF(IAUX)=1.0D0 - F_PROJ(IAUX)=1.0D0 - ENDDO - AUX=1.D0/RAISF**TAILF - DO JF=1,LBUF - IAUX=LBUF+NF+JF - F_POIN(IAUX)=NF - F_COEF(IAUX)=AUX**JF - F_PROJ(IAUX)=0.0D0 - ENDDO - ! - DO JT=LBUF,1,-1 - T_POIN(JT)=NT-MOD(LBUF-JT,NT) - ENDDO - DO JT=1,NT - T_POIN(LBUF+JT)=JT - ENDDO - DO JT=1,LBUF - T_POIN(LBUF+NT+JT)=MOD(JT-1,NT)+1 - ENDDO - !====================================================================== - ! - !======================================================================= - ! COMPUTES SCALE COEFFICIENTS FOR THE COUPLING COEFFICIENT - ! Would be easier to pass these on from W3SRCE ??? - !======================================================================= - DP2SG=TWOPI*TWOPI/GRAV - DO JF=1,LBUF - AUX=FREQ(1)/RAISF**(LBUF-JF+1) - TB_SCA(JF)=(DP2SG*AUX**2)**6/(TWOPI**3*AUX) - ENDDO - DO JF=1,NF - TB_SCA(LBUF+JF)=(DP2SG*FREQ(JF)**2)**6/(TWOPI**3*FREQ(JF)) - ENDDO - DO JF=1,LBUF - IAUX=LBUF+NF+JF - AUX=FREQ(NF)*RAISF**JF - TB_SCA(IAUX)=(DP2SG*AUX**2)**6/(TWOPI**3*AUX) - ENDDO - !======================================================================= - ! - !======================================================================= - ! COMPUTES VALUES FOR GAUSSIAN QUADRATURES - !======================================================================= - if (Allocated(X_CHE_TE1) ) then - deallocate(X_CHE_TE1) - endif - ALLOCATE(X_CHE_TE1(1:NQ_TE1),X_CHE_OM2(1:GQNQ_OM2)) - - if (Allocated(X_LEG_OM2) ) then - deallocate(X_LEG_OM2) - endif - ALLOCATE(X_LEG_OM2(1:GQNQ_OM2),W_LEG_OM2(1:GQNQ_OM2)) - ! - !.....Abscissa and weight (constant) for Gauss-Chebyshev - DO IQ_TE1=1,NQ_TE1 - X_CHE_TE1(IQ_TE1)=COS(PI*(DBLE(IQ_TE1)-0.5D0)/DBLE(NQ_TE1)) - ENDDO - W_CHE_TE1=PI/DBLE(NQ_TE1) - DO IQ_OM2=1,GQNQ_OM2 - X_CHE_OM2(IQ_OM2)=COS(PI*(DBLE(IQ_OM2)-0.5D0)/DBLE(GQNQ_OM2)) - ENDDO - W_CHE_OM2=PI/DBLE(GQNQ_OM2) - ! - !.....Abscissa et weight for Gauss-Legendre - CALL GAULEG( W_LEG_OM2 , X_LEG_OM2 , GQNQ_OM2 ) - DO IQ_OM2=1,GQNQ_OM2 - X_LEG_OM2(IQ_OM2)=0.25D0*(1.D0+X_LEG_OM2(IQ_OM2))**2 - ENDDO - !======================================================================= - ! - ! - !======================================================================= - ! COMPUTES VALUES OF RATIO F1/F AS FUNCTION OF THE IQ_OM1 INDICATOR - !======================================================================= - NF1P1=GQNF1+1 - if (Allocated(F1SF) ) then - deallocate(F1SF) - endif - ALLOCATE(F1SF(1:NF1P1)) - - CALL F1F1F1 ( F1SF , GQNF1 , IQ_OM1) - !======================================================================= - ! - ! ================================================== - ! STARTS LOOP 1 OVER THE RATIOS F1/F0 - ! ================================================== - DO JF1=1,GQNF1 - ! ---------Computes and stores v1=f1/f0 and v1**4 - V1=(F1SF(JF1+1)+F1SF(JF1))/2.D0 - K_IF1(JF1)=NINT(DBLE(LBUF)+LOG(V1)/LOG(RAISF)) - V1_4=V1**4 - TB_V14(JF1)=V1_4 - ! ---------Computes and stores dv1=df1/f0 - DV1=F1SF(JF1+1)-F1SF(JF1) - ! ---------Computes the A parameter - AAA=((1.D0+V1)**4-4.D0*(1.D0+V1_4))/(8.D0*V1**2) - ! - ! ================================================= - ! STARTS LOOP 2 OVER THE DELTA_1+ VALUES - ! ================================================= - DO JT1=1,GQNT1 - ! - !......Computes the Delta1+ values (=Theta_1-Theta_0) between 0 and Pi. - IF (JT1.LE.NQ_TE1) THEN - ! ---------First interval : X from -1 to A - IQ_TE1=JT1 - C_D01P=(-1.D0+AAA)/2.D0+(1.D0+AAA)/2.D0*X_CHE_TE1(IQ_TE1) - CCC=DV1*SQRT((AAA-C_D01P)/(1.D0-C_D01P))*W_CHE_TE1 - ELSE - ! ---------Second interval : X from A to 1 - IQ_TE1=JT1-NQ_TE1 - C_D01P=( 1.D0+AAA)/2.D0+(1.D0-AAA)/2.D0*X_CHE_TE1(IQ_TE1) - CCC=DV1*SQRT((C_D01P-AAA)/(1.D0+C_D01P))*W_CHE_TE1 - ENDIF - S_D01P=SQRT(1.D0-C_D01P*C_D01P) - D01P =ACOS(C_D01P) - K_1P(JT1,JF1)=LBUF+NINT(D01P/DTETAR) - K_1M(JT1,JF1)=LBUF-NINT(D01P/DTETAR) - ! - ! ---------Computes Epsilon_a - EPSI_A=2.D0*SQRT(1.D0+V1_4+2.D0*V1*V1*C_D01P)/(1.D0+V1)**2 - ! ---------Computes Delta_A+ and its cosinus - C_D0AP=(1.D0-V1_4+0.25D0*EPSI_A**2*(1.D0+V1)**4) & - /(EPSI_A*(1.D0+V1)**2) - S_D0AP=SQRT(1.0D0-C_D0AP*C_D0AP) - D0AP = ACOS(C_D0AP) - ! - !.......Integration over OMEGA2 depending on EPS_A - IF (EPSI_A.LT.1.D0) THEN - ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !........Case of a single singularity (in OMEGA2-) - ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - W2_M=0.5D0*(1.D0-EPSI_A/2.D0) - W2_1=0.5D0 - ! - W_RAD=W2_1-W2_M - C_LEG_OM2=SQRT(W_RAD) - ! - ! ---------------------------------------------------- - !........STARTS LOOP 3 OVER OMEGA_2 (CASE Epsilon_A < 1) - !........Case of a single singularity (in OMEGA2-) - !........Integration over OMEGA2 via GAUSS-LEGENDRE quadrature - ! ---------------------------------------------------- - DO IQ_OM2=1,GQNQ_OM2 - ! ---------Computes W2, V2, and V3 - W2=W2_M+W_RAD*X_LEG_OM2(IQ_OM2) - V2=W2*(1.D0+V1) - V2_4=V2**4 - TB_V24(IQ_OM2,JT1,JF1)=V2_4 - K_IF2 (IQ_OM2,JT1,JF1) = NINT(DBLE(LBUF) & - + LOG(V2)/LOG(RAISF)) - V3=1.D0+V1-V2 - V3_4=V3**4 - TB_V34(IQ_OM2,JT1,JF1)=V3_4 - K_IF3 (IQ_OM2,JT1,JF1) = NINT(DBLE(LBUF) & - + LOG(V3)/LOG(RAISF)) - ! ---------Computes Gamma_2+ et Gamma_3+ angles - C_GA2P=(EPSI_A**2/4.D0+W2**4-(1.D0-W2)**4)/(EPSI_A*W2*W2) - C_GA2P=MAX(MIN(C_GA2P,1.D0),-1.D0) - S_GA2P=SQRT(1.D0-C_GA2P*C_GA2P) - GA2P =ACOS(C_GA2P) - C_GA3P=(EPSI_A**2/4.D0-W2**4+(1.D0-W2)**4)/EPSI_A & - /(1.D0-W2)**2 - C_GA3P=MAX(MIN(C_GA3P,1.D0),-1.D0) - S_GA3P=SQRT(1.D0-C_GA3P*C_GA3P) - GA3P =ACOS(C_GA3P) - ! Shifting of the direction indexes - Config. +Delta1 (SIG=1) - K_1P2P(IQ_OM2,JT1,JF1)=NINT(( D0AP+GA2P)/DTETAR & - +DBLE(LBUF)) - K_1P3M(IQ_OM2,JT1,JF1)=NINT(( D0AP-GA3P)/DTETAR & - +DBLE(LBUF)) - K_1P2M(IQ_OM2,JT1,JF1)=NINT(( D0AP-GA2P)/DTETAR & - +DBLE(LBUF)) - K_1P3P(IQ_OM2,JT1,JF1)=NINT(( D0AP+GA3P)/DTETAR & - +DBLE(LBUF)) - ! Shifting of the direction indexes - Config. -Delta1 (SIG=-1) - K_1M2P(IQ_OM2,JT1,JF1)=NINT((-D0AP+GA2P)/DTETAR & - +DBLE(LBUF)) - K_1M3M(IQ_OM2,JT1,JF1)=NINT((-D0AP-GA3P)/DTETAR & - +DBLE(LBUF)) - K_1M2M(IQ_OM2,JT1,JF1)=NINT((-D0AP-GA2P)/DTETAR & - +DBLE(LBUF)) - K_1M3P(IQ_OM2,JT1,JF1)=NINT((-D0AP+GA3P)/DTETAR & - +DBLE(LBUF)) - ! - !.........Computes the coupling coefficients (only for Delta_1+ ) - RK0=1.D0 - RK1=V1*V1 - RK2=V2*V2 - RK3=(1.D0+V1-V2)**2 - XK0 = RK0 - YK0 = 0.0D0 - XK1 = RK1*C_D01P - YK1 = RK1*S_D01P - XK2P = RK2*(C_D0AP*C_GA2P-S_D0AP*S_GA2P) - YK2P = RK2*(S_D0AP*C_GA2P+C_D0AP*S_GA2P) - XK2M = RK2*(C_D0AP*C_GA2P+S_D0AP*S_GA2P) - YK2M = RK2*(S_D0AP*C_GA2P-C_D0AP*S_GA2P) - XK3P = RK3*(C_D0AP*C_GA3P-S_D0AP*S_GA3P) - YK3P = RK3*(S_D0AP*C_GA3P+C_D0AP*S_GA3P) - XK3M = RK3*(C_D0AP*C_GA3P+S_D0AP*S_GA3P) - YK3M = RK3*(S_D0AP*C_GA3P-C_D0AP*S_GA3P) - TB_TPM(IQ_OM2,JT1,JF1)=COUPLE( XK0 , YK0 , XK1 , YK1 , XK2P , YK2P , XK3M , YK3M) - TB_TMP(IQ_OM2,JT1,JF1)=COUPLE( XK0 , YK0 , XK1 , YK1 , XK2M , YK2M , XK3P , YK3P) - ! - !.........Computes the multiplicative coefficient for QNL4 - DENO=2.D0*SQRT( (0.5D0*(1.D0+EPSI_A/2.D0)-W2) & - *((W2-0.5D0)**2+0.25D0*(1.D0+EPSI_A)) & - *((W2-0.5D0)**2+0.25D0*(1.D0-EPSI_A)) ) - TB_FAC(IQ_OM2,JT1,JF1)=1.D0/(DENO*V1*W2*(1.D0-W2)) & - /(1.D0+V1)**5 * W_LEG_OM2(IQ_OM2)*C_LEG_OM2* CCC - ENDDO - ! ----------------------------------------------- - !........END OF THE LOOP 3 OVER OMEGA_2 (CASE Epsilon_A < 1) - ! ----------------------------------------------- - ! - ELSE - ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !........STARTS LOOP 3 OVER OMEGA_2 (CASE Epsilon_A > 1) - !........Case of two singularities (in OMEGA2- and OMEGA2_1) - !........Integration over OMEGA2 via GAUSS-CHEBYSCHEV quadrature - ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - W2_M=0.5D0*(1.D0-EPSI_A/2.D0) - W2_1=0.5D0*(1.D0-SQRT(EPSI_A-1.D0)) - ! - W_MIL=(W2_M+W2_1)/2.D0 - W_RAD=(W2_1-W2_M)/2.D0 - ! - DO IQ_OM2=1,GQNQ_OM2 - ! ---------Computes W2, V2, and V3 - W2=W_MIL+W_RAD*X_CHE_OM2(IQ_OM2) - V2=W2*(1.D0+V1) - V2_4=V2**4 - TB_V24(IQ_OM2,JT1,JF1)=V2_4 - K_IF2 (IQ_OM2,JT1,JF1)=NINT(DBLE(LBUF) & - +LOG(V2)/LOG(RAISF)) - V3=1.D0+V1-V2 - V3_4=V3**4 - TB_V34(IQ_OM2,JT1,JF1)=V3_4 - K_IF3 (IQ_OM2,JT1,JF1)=NINT(DBLE(LBUF) & - +LOG(V3)/LOG(RAISF)) - ! ---------Computes Gamma_2+ et Gamma_3+ angles - C_GA2P=(EPSI_A**2/4.D0+W2**4-(1.D0-W2)**4)/(EPSI_A*W2*W2) - C_GA2P=MAX(MIN(C_GA2P,1.D0),-1.D0) - S_GA2P=SQRT(1.D0-C_GA2P*C_GA2P) - GA2P =ACOS(C_GA2P) - C_GA3P=(EPSI_A**2/4.D0-W2**4+(1.D0-W2)**4)/EPSI_A & - /(1.D0-W2)**2 - C_GA3P=MAX(MIN(C_GA3P,1.D0),-1.D0) - S_GA3P=SQRT(1.D0-C_GA3P*C_GA3P) - GA3P =ACOS(C_GA3P) - ! Shifts the direction indexes - Config. +Delta1 (SIG=1) - K_1P2P(IQ_OM2,JT1,JF1)=NINT(( D0AP+GA2P)/DTETAR & - +DBLE(LBUF)) - K_1P3M(IQ_OM2,JT1,JF1)=NINT(( D0AP-GA3P)/DTETAR & - +DBLE(LBUF)) - K_1P2M(IQ_OM2,JT1,JF1)=NINT(( D0AP-GA2P)/DTETAR & - +DBLE(LBUF)) - K_1P3P(IQ_OM2,JT1,JF1)=NINT(( D0AP+GA3P)/DTETAR & - +DBLE(LBUF)) - ! Shifts the direction indexes - Config. -Delta1 (SIG=-1) - K_1M2P(IQ_OM2,JT1,JF1)=NINT((-D0AP+GA2P)/DTETAR & - +DBLE(LBUF)) - K_1M3M(IQ_OM2,JT1,JF1)=NINT((-D0AP-GA3P)/DTETAR & - +DBLE(LBUF)) - K_1M2M(IQ_OM2,JT1,JF1)=NINT((-D0AP-GA2P)/DTETAR & - +DBLE(LBUF)) - K_1M3P(IQ_OM2,JT1,JF1)=NINT((-D0AP+GA3P)/DTETAR & - +DBLE(LBUF)) - ! - !.........Computes the coupling coefficients (only for Delta_1+ ) - RK0=1.D0 - RK1=V1*V1 - RK2=V2*V2 - RK3=(1.D0+V1-V2)**2 - XK0 = RK0 - YK0 = 0.0D0 - XK1 = RK1*C_D01P - YK1 = RK1*S_D01P - XK2P = RK2*(C_D0AP*C_GA2P-S_D0AP*S_GA2P) - YK2P = RK2*(S_D0AP*C_GA2P+C_D0AP*S_GA2P) - XK2M = RK2*(C_D0AP*C_GA2P+S_D0AP*S_GA2P) - YK2M = RK2*(S_D0AP*C_GA2P-C_D0AP*S_GA2P) - XK3P = RK3*(C_D0AP*C_GA3P-S_D0AP*S_GA3P) - YK3P = RK3*(S_D0AP*C_GA3P+C_D0AP*S_GA3P) - XK3M = RK3*(C_D0AP*C_GA3P+S_D0AP*S_GA3P) - YK3M = RK3*(S_D0AP*C_GA3P-C_D0AP*S_GA3P) - TB_TPM(IQ_OM2,JT1,JF1)=COUPLE( XK0 , YK0 , XK1 , YK1 , XK2P , YK2P , XK3M , YK3M) - TB_TMP(IQ_OM2,JT1,JF1)=COUPLE( XK0 , YK0 , XK1 , YK1 , XK2M , YK2M , XK3P , YK3P) - ! - !.........Computes the multiplicative coefficient for QNL4 - DENO=2.D0*SQRT( (0.5D0*(1.D0+EPSI_A/2.D0)-W2) & - *((W2-0.5D0)**2+0.25D0*(1.D0+EPSI_A)) & - *(0.5D0*(1.D0+SQRT(EPSI_A-1.D0))-W2) ) - TB_FAC(IQ_OM2,JT1,JF1)=1.D0/(DENO*V1*W2*(1.D0-W2)) & - /(1.D0+V1)**5 * W_CHE_OM2* CCC - ! - ENDDO - ! ----------------------------------------------- - !........END OF LOOP 3 OVER OMEGA_2 (CASE Epsilon_A > 1) - ! ----------------------------------------------- - ! - ENDIF - ENDDO - ! ================================================= - ! END OF LOOP 2 OVER THE DELTA_1+ VALUES - ! ================================================= - ! - ENDDO - ! ================================================== - ! END OF LOOP 1 OVER THE F1/F0 RATIOS - ! ================================================== - DEALLOCATE(F1SF) - DEALLOCATE(X_CHE_TE1) - DEALLOCATE(X_CHE_OM2) - DEALLOCATE(X_LEG_OM2) - DEALLOCATE(W_LEG_OM2) - - ! =========================================================== - ! POST-PROCESSING TO ELIMINATE PART OF THE CONFIGURATIONS - ! =========================================================== - ! - !.....It looks, for every value of the ratio V1, for the maximum value - !.....of FACTOR*COUPLING : it is stored in the local table NAXCLA(.) - ! """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - ALLOCATE(MAXCLA(1:GQNF1)) - DO JF1=1,GQNF1 - AUX=0.0D0 - DO JT1=1,GQNT1 - DO IQ_OM2=1,GQNQ_OM2 - AUX=MAX(AUX,TB_FAC(IQ_OM2,JT1,JF1)*TB_TPM(IQ_OM2,JT1,JF1),TB_FAC(IQ_OM2,JT1,JF1)*TB_TMP(IQ_OM2,JT1,JF1)) - ENDDO - ENDDO - MAXCLA(JF1)=AUX - ENDDO - ! - !.....It looks for the max V1 value - ! """""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - AUX=0.0D0 - DO JF1=1,GQNF1 - IF (MAXCLA(JF1).GT.AUX) AUX=MAXCLA(JF1) - ENDDO - - TEST1=SEUIL1*AUX - ! - !.....Set to zero the coupling coefficients not used - ! """"""""""""""""""""""""""""""""""""""""""""""""""""" - NCONF=0 - DO JF1=1,GQNF1 - TEST2 =SEUIL2*MAXCLA(JF1) - DO JT1=1,GQNT1 - DO IQ_OM2=1,GQNQ_OM2 - AAA=TB_FAC(IQ_OM2,JT1,JF1)*TB_TPM(IQ_OM2,JT1,JF1) - CCC=TB_FAC(IQ_OM2,JT1,JF1)*TB_TMP(IQ_OM2,JT1,JF1) - IF ((AAA.GT.TEST1.OR.AAA.GT.TEST2).OR. & - (CCC.GT.TEST1.OR.CCC.GT.TEST2)) THEN - NCONF=NCONF+1 - IDCONF(NCONF,1)=JF1 - IDCONF(NCONF,2)=JT1 - IDCONF(NCONF,3)=IQ_OM2 - ENDIF -#ifdef W3_TGQM - WRITE(993,*) NCONF,JF1,JT1,IQ_OM2,AAA,CCC,(AAA.GT.TEST1.OR.AAA.GT.TEST2), & - (CCC.GT.TEST1.OR.CCC.GT.TEST2) -#endif - ENDDO - ENDDO - ENDDO - DEALLOCATE(MAXCLA) - ! - !..... counts the fraction of the eliminated configurations - ELIM=(1.D0-DBLE(NCONF)/DBLE(NCONFM))*100.D0 -#ifdef W3_TGQM - WRITE(994,*) 'NCONF, ELIM FRACTION:',NCONF,ELIM -#endif - END SUBROUTINE INSNLGQM !/ !/ End of module W3SNL1MD -------------------------------------------- / !/ diff --git a/model/src/w3snl2md.F90 b/model/src/w3snl2md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3snl3md.F90 b/model/src/w3snl3md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3snl4md.F90 b/model/src/w3snl4md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3snl5md.F90 b/model/src/w3snl5md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3snlsmd.F90 b/model/src/w3snlsmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3src0md.F90 b/model/src/w3src0md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3src1md.F90 b/model/src/w3src1md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3src2md.F90 b/model/src/w3src2md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3src3md.F90 b/model/src/w3src3md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3src4md.F90 b/model/src/w3src4md.F90 old mode 100644 new mode 100755 index a1d4423bf..a8698d1d2 --- a/model/src/w3src4md.F90 +++ b/model/src/w3src4md.F90 @@ -666,16 +666,8 @@ SUBROUTINE W3SIN4 (A, CG, K, U, USTAR, DRAT, AS, USDIR, Z0, CD, & ! I got it from, maybe just made up from drag law ... ! #ifdef W3_STAB3 - IF ( ISNAN(AS) ) THEN - ! AS is typically NaN on land and can propagate into the domain by interpolation - Usigma = 0. - ELSE - Usigma = MAX(0.,-0.025*AS) - END IF + Usigma=MAX(0.,-0.025*AS) USTARsigma=(1.0+U/(10.+U))*Usigma -#endif -#ifdef W3_T - WRITE (NDST,9003) AS, Usigma, USTARsigma, U #endif UST=USTAR ISTAB=3 @@ -686,9 +678,6 @@ SUBROUTINE W3SIN4 (A, CG, K, U, USTAR, DRAT, AS, USDIR, Z0, CD, & #endif TAUX = UST**2* COS(USDIR) TAUY = UST**2* SIN(USDIR) -#ifdef W3_T - WRITE (NDST,9001) ISTAB, TAUX, TAUY, UST -#endif ! ! Loop over the resolved part of the spectrum ! @@ -799,9 +788,6 @@ SUBROUTINE W3SIN4 (A, CG, K, U, USTAR, DRAT, AS, USDIR, Z0, CD, & YSTRESS=0.5*(STRESSSTAB(1,2)+STRESSSTAB(2,2)) TAUWNX=0.5*(STRESSSTABN(1,1)+STRESSSTABN(2,1)) TAUWNY=0.5*(STRESSSTABN(1,2)+STRESSSTABN(2,2)) -#endif -#ifdef W3_T - WRITE (NDST,9002) SUM(D), SUM(A), XSTRESS, YSTRESS, TAUWNX, TAUWNY #endif S = D * A ! @@ -882,21 +868,6 @@ SUBROUTINE W3SIN4 (A, CG, K, U, USTAR, DRAT, AS, USDIR, Z0, CD, & ! #ifdef W3_T 9000 FORMAT (' TEST W3SIN4 : COMMON FACT.: ',3E10.3) -9001 FORMAT (' TEST W3SIN4 : ISTAB :',I2/ & - ' TAUX :',E12.3/ & - ' TAUY :',E12.3/ & - ' UST :',E12.3) -9002 FORMAT (' TEST W3SIN4 : SUM(D) :',E12.3/ & - ' SUM(A) :',E12.3/ & - ' STRESSX :',E12.3/ & - ' STRESSY :',E12.3/ & - ' TAUWNX :',E12.3/ & - ' TAUWNY :',E12.3) -9003 FORMAT (' TEST W3SIN4 : AS :',F8.4/ & - ' Usigma :',E12.3/ & - ' USTARsigma :',E12.3/ & - ' U :',E12.3) - #endif !/ !/ End of W3SIN4 ----------------------------------------------------- / @@ -2520,7 +2491,7 @@ SUBROUTINE W3SDS4 (A, K, CG, USTAR, USDIR, DEPTH, DAIR, SRHS, & RETURN END IF ! - WHITECAP(1:4) = 0. + WHITECAP(1:2) = 0. ! ! precomputes integration of Lambda over direction ! times wavelength times a (a=5 in Reul&Chapron JGR 2003) times dk diff --git a/model/src/w3src6md.F90 b/model/src/w3src6md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3srcemd.F90 b/model/src/w3srcemd.F90 old mode 100644 new mode 100755 index a846605d8..e489376d8 --- a/model/src/w3srcemd.F90 +++ b/model/src/w3srcemd.F90 @@ -201,7 +201,12 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & TAUWY, TAUOX, TAUOY, TAUWIX, TAUWIY, TAUWNX,& TAUWNY, PHIAW, CHARN, TWS, PHIOC, WHITECAP, & D50, PSIC, BEDFORM , PHIBBL, TAUBBL, TAUICE,& - PHICE, TAUOCX, TAUOCY, WNMEAN, DAIR, COEF) + PHICE, TAUOCX, TAUOCY, WNMEAN, & +#ifdef W3_COAWST_MODEL + PHIBRKX, PHIBRKY, QB, & + PHICAPX, PHICAPY, & +#endif + DAIR, COEF) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -494,22 +499,24 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & ! !/ ------------------------------------------------------------------- / USE CONSTANTS, ONLY: DWAT, srce_imp_post, srce_imp_pre, & - srce_direct, GRAV, TPI, TPIINV + srce_direct, GRAV, TPI, TPIINV, LPDLIB +#ifdef W3_T + USE CONSTANTS, ONLY: RADE +#endif USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, TH, DMIN, DTMAX, & DTMIN, FACTI1, FACTI2, FACSD, FACHFA, FACP, & XFC, XFLT, XREL, XFT, FXFM, FXPM, DDEN, & FTE, FTF, FHMAX, ECOS, ESIN, IICEDISP, & ICESCALES, IICESMOOTH + USE W3GDATMD, ONLY: FSSOURCE, optionCall + USE W3GDATMD, ONLY: B_JGS_NLEVEL, B_JGS_SOURCE_NONLINEAR, B_JGS_LIMITER +#ifdef W3_REF1 + USE W3GDATMD, ONLY: IOBP, IOBPD, IOBDP, GTYPE, UNGTYPE, REFPARS +#endif USE W3WDATMD, ONLY: TIME USE W3ODATMD, ONLY: NDSE, NDST, IAPROC - USE W3IDATMD, ONLY: INFLAGS2 + USE W3IDATMD, ONLY: INFLAGS2, ICEP2 USE W3DISPMD -#ifdef W3_T - USE CONSTANTS, ONLY: RADE -#endif -#ifdef W3_REF1 - USE W3GDATMD, ONLY: IOBP, IOBPD, GTYPE, UNGTYPE, REFPARS -#endif #ifdef W3_NNT USE W3ODATMD, ONLY: IAPROC, SCREEN, FNMPRE #endif @@ -564,7 +571,6 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #endif #ifdef W3_NL1 USE W3SNL1MD - USE W3GDATMD, ONLY: IQTPE #endif #ifdef W3_NL2 USE W3SNL2MD @@ -638,15 +644,14 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & USE W3SERVMD, ONLY: EXTCDE #endif #ifdef W3_UOST - USE W3UOSTMD, ONLY: UOST_SRCTRMCOMPUTE + USE W3UOSTMD, ONLY : UOST_SRCTRMCOMPUTE #endif #ifdef W3_PDLIB - USE PDLIB_W3PROFSMD, ONLY : B_JAC, ASPAR_JAC, ASPAR_DIAG_ALL - USE yowNodepool, ONLY: PDLIB_I_DIAG, PDLIB_SI - USE W3GDATMD, ONLY: B_JGS_LIMITER, FSSOURCE, optionCall - USE W3GDATMD, ONLY: IOBP_LOC, IOBPD_LOC, B_JGS_LIMITER_FUNC + USE PDLIB_W3PROFSMD, ONLY : B_JAC, ASPAR_JAC, ASPAR_DIAG_SOURCES, ASPAR_DIAG_ALL + USE yowNodepool, ONLY: PDLIB_CCON, NPA, PDLIB_I_DIAG, PDLIB_JA, PDLIB_IA_P, PDLIB_SI + USE W3GDATMD, ONLY: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC, B_JGS_LIMITER_FUNC USE W3WDATMD, ONLY: VA - USE W3PARALL, ONLY: IMEM, LSLOC + USE W3PARALL, ONLY: ONESIXTH, ZERO, THR, IMEM, LSLOC #endif !/ IMPLICIT NONE @@ -675,259 +680,306 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & TAUBBL(2), TAUICE(2), WHITECAP(4), & TAUWIX, TAUWIY, TAUWNX, TAUWNY, & ICEF, TAUOCX, TAUOCY, WNMEAN +#ifdef W3_COAWST_MODEL + REAL, INTENT(INOUT) :: PHIBRKX, PHIBRKY, QB + REAL, INTENT(INOUT) :: PHICAPX, PHICAPY +#endif REAL, INTENT(OUT) :: DTDYN, FCUT REAL, INTENT(IN) :: COEF !/ !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: IK, ITH, IS, IS0, NSTEPS, NKH, NKH1, & - IKS1, IS1, NSPECH, IDT, IERR, ISP - REAL :: DTTOT, FHIGH, DT, AFILT, DAMAX, AFAC, & + INTEGER :: IK, ITH, IS, IS0, NSTEPS, NKH, NKH1,& + IKS1, IS1, NSPECH, IDT, IERR, NKD, ISP + INTEGER :: IOBPIP, IOBPDIP, IOBDPIP +#ifdef W3_S + INTEGER, SAVE :: IENT = 0 +#endif +#ifdef W3_NNT + INTEGER, SAVE :: NDSD = 89, NDSD2 = 88, J +#endif +#ifdef W3_NL5 + INTEGER :: QI5TSTART(2) + REAL :: QR5KURT + INTEGER, PARAMETER :: NL5_SELECT = 1 + REAL, PARAMETER :: NL5_OFFSET = 0. ! explicit dyn. +#endif + REAL :: DTTOT, FHIGH, DT, AFILT, DAMAX, AFAC,& HDT, ZWND, FP, DEPTH, TAUSCX, TAUSCY, FHIGI ! Scaling factor for SIN, SDS, SNL - REAL :: ICESCALELN, ICESCALEIN, ICESCALENL, ICESCALEDS - REAL :: EMEAN, FMEAN, AMAX, CD, Z0, SCAT, & + REAL :: ICESCALELN, ICESCALEIN, ICESCALENL, ICESCALEDS + REAL :: EMEAN, FMEAN, AMAX, CD, Z0, SCAT, & SMOOTH_ICEDISP - REAL :: WN_R(NK), CG_ICE(NK), ALPHA_LIU(NK), ICECOEF2, R(NK) - DOUBLE PRECISION :: ATT, ISO - REAL :: EBAND, DIFF, EFINISH, HSTOT, PHINL, & - FMEAN1, FMEANWS, & - FACTOR, FACTOR2, DRAT, TAUWAX, TAUWAY, & - MWXFINISH, MWYFINISH, A1BAND, B1BAND, & - COSI(2) - REAL :: SPECINIT(NSPEC), SPEC2(NSPEC), FRLOCAL, JAC2 - REAL :: DAM (NSPEC), DAM2(NSPEC), WN2(NSPEC), & - VSLN(NSPEC), & - VSIN(NSPEC), VDIN(NSPEC), & - VSNL(NSPEC), VDNL(NSPEC), & - VSDS(NSPEC), VDDS(NSPEC), & - VSBT(NSPEC), VDBT(NSPEC) - REAL :: VS(NSPEC), VD(NSPEC), EB(NK) - - LOGICAL :: SHAVE - LOGICAL :: LBREAK - LOGICAL, SAVE :: FIRST = .TRUE. - LOGICAL :: PrintDeltaSmDA - REAL :: eInc1, eInc2, eVS, eVD, JAC - REAL :: DeltaSRC(NSPEC) - - REAL :: FOUT(NK,NTH), SOUT(NK,NTH), DOUT(NK,NTH) - REAL, SAVE :: TAUNUX, TAUNUY - LOGICAL, SAVE :: FLTEST = .FALSE., FLAGNN = .TRUE. - -#ifdef W3_OMPG - !$omp threadprivate( TAUNUX, TAUNUY) - !$omp threadprivate( FLTEST, FLAGNN ) - !$omp threadprivate( FIRST ) + REAL :: WN_R(NK), CG_ICE(NK),ALPHA_LIU(NK), ICECOEF2,& + R(NK) + DOUBLE PRECISION :: ATT, ISO +#ifdef W3_ST1 + REAL :: FH1, FH2 #endif - - !/ - !/ ------------------------------------------------------------------- / - !/ Local parameters dependent on compile switch - !/ -#ifdef W3_S - INTEGER, SAVE :: IENT = 0 +#ifdef W3_ST2 + REAL :: FHTRAN, DFH, FACDIA, FACPAR #endif - -#ifdef W3_NNT - INTEGER, SAVE :: NDSD = 89, NDSD2 = 88, J - REAL :: QCERR = 0. !/XNL2 and !/NNT +#ifdef W3_ST3 + REAL :: FMEANS, FH1, FH2 #endif - -#ifdef W3_NL5 - INTEGER :: QI5TSTART(2) - REAL :: QR5KURT - INTEGER, PARAMETER :: NL5_SELECT = 1 - REAL, PARAMETER :: NL5_OFFSET = 0. ! explicit dyn. +#ifdef W3_ST4 + REAL :: FMEANS, FH1, FH2, FAGE, DLWMEAN #endif - + REAL :: QCERR = 0. !/XNL2 and !/NNT #ifdef W3_SEED - REAL :: UC, SLEV + REAL :: UC, SLEV #endif - #ifdef W3_MLIM - REAL :: HM, EM + REAL :: HM, EM #endif - #ifdef W3_NNT - REAL :: FACNN + REAL :: FACNN #endif - #ifdef W3_T - REAL :: DTRAW + REAL :: DTRAW #endif - -#if defined(W3_IC1) || defined(W3_IC2) || defined(W3_IC3) || defined(W3_IC4) || defined(W3_IC5) - REAL :: VSIC(NSPEC), VDIC(NSPEC) + REAL :: EBAND, DIFF, EFINISH, HSTOT, PHINL, & + FMEAN1, FMEANWS, MWXINIT, MWYINIT, & + FACTOR, FACTOR2, DRAT, TAUWAX, TAUWAY, & + MWXFINISH, MWYFINISH, A1BAND, B1BAND, & + COSI(2) + REAL :: SPECINIT(NSPEC), SPEC2(NSPEC), FRLOCAL, JAC2 + REAL :: DAM (NSPEC), DAM2(NSPEC), WN2 (NSPEC), & + VSLN(NSPEC), & + VSIN(NSPEC), VDIN(NSPEC), & + VSNL(NSPEC), VDNL(NSPEC), & + VSDS(NSPEC), VDDS(NSPEC), & +#ifdef W3_ST6 + VSWL(NSPEC), VDWL(NSPEC), & +#endif + VSBT(NSPEC), VDBT(NSPEC), & +#ifdef W3_IC1 + VSIC(NSPEC), VDIC(NSPEC), & +#endif +#ifdef W3_IC2 + VSIC(NSPEC), VDIC(NSPEC), & +#endif +#ifdef W3_IC3 + VSIC(NSPEC), VDIC(NSPEC), & +#endif +#ifdef W3_IC4 + VSIC(NSPEC), VDIC(NSPEC), & +#endif +#ifdef W3_IC5 + VSIC(NSPEC), VDIC(NSPEC), & #endif - #ifdef W3_DB1 - REAL :: VSDB(NSPEC), VDDB(NSPEC) + VSDB(NSPEC), VDDB(NSPEC), & #endif - #ifdef W3_TR1 - REAL :: VSTR(NSPEC), VDTR(NSPEC) + VSTR(NSPEC), VDTR(NSPEC), & #endif - #ifdef W3_BS1 - REAL :: VSBS(NSPEC), VDBS(NSPEC) + VSBS(NSPEC), VDBS(NSPEC), & #endif - #ifdef W3_REF1 - REAL :: VREF(NSPEC) + VREF(NSPEC), & #endif - -#if defined(W3_IS1) || defined(W3_IS2) - REAL :: VSIR(NSPEC), VDIR(NSPEC) +#ifdef W3_IS1 + VSIR(NSPEC), VDIR(NSPEC), & #endif - #ifdef W3_IS2 - REAL :: VDIR2(NSPEC) - DOUBLE PRECISION :: SCATSPEC(NTH) + VSIR(NSPEC), VDIR(NSPEC),VDIR2(NSPEC), & #endif - #ifdef W3_UOST - REAL :: VSUO(NSPEC), VDUO(NSPEC) -#endif - -#ifdef W3_ST1 - REAL :: FH1, FH2 + VSUO(NSPEC), VDUO(NSPEC), & #endif - -#ifdef W3_ST2 - REAL :: FHTRAN, DFH, FACDIA, FACPAR +#ifdef W3_COAWST_MODEL + SPEC3(NSPEC), VS3(NSPEC), VD3(NSPEC), & #endif - + VS(NSPEC), VD(NSPEC), EB(NK) #ifdef W3_ST3 - REAL :: FMEANS, FH1, FH2 + LOGICAL :: LLWS(NSPEC) #endif - #ifdef W3_ST4 - REAL :: FMEANS, FH1, FH2, FAGE, DLWMEAN - REAL :: BRLAMBDA(NSPEC) + LOGICAL :: LLWS(NSPEC) + REAL :: BRLAMBDA(NSPEC) #endif - -#if defined(W3_ST3) || defined(W3_ST4) - LOGICAL :: LLWS(NSPEC) +#ifdef W3_IS2 + DOUBLE PRECISION :: SCATSPEC(NTH) #endif - -#ifdef W3_ST6 - REAL :: VSWL(NSPEC), VDWL(NSPEC) + REAL :: FOUT(NK,NTH), SOUT(NK,NTH), DOUT(NK,NTH) + REAL, SAVE :: TAUNUX, TAUNUY +#ifdef W3_OMPG + !$omp threadprivate( TAUNUX, TAUNUY) #endif - + LOGICAL, SAVE :: FLTEST = .FALSE., FLAGNN = .TRUE. +#ifdef W3_OMPG + !$omp threadprivate( FLTEST, FLAGNN ) +#endif + LOGICAL :: SHAVE + LOGICAL :: LBREAK + LOGICAL, SAVE :: FIRST = .TRUE. +#ifdef W3_OMPG + !$omp threadprivate( FIRST ) +#endif + LOGICAL :: PrintDeltaSmDA + REAL :: eInc1, eInc2, eVS, eVD, JAC + REAL :: DeltaSRC(NSPEC) + REAL, PARAMETER :: DTMINTOT = 0.01 #ifdef W3_PDLIB - REAL :: PreVS, DVS, SIDT, FAKS, MAXDAC + REAL :: PreVS, FAK, DVS, SIDT, FAKS, MAXDAC +#endif +#ifdef W3_COAWST_MODEL + REAL :: oDTG, TAUBRKX, TAUBRKY + REAL :: A2BAND, B2BAND, Hmax_r #endif #ifdef W3_NNT CHARACTER(LEN=17), SAVE :: FNAME = 'test_data_nnn.ww3' #endif - ! - !/ -- End of variable delclarations - ! + !/ + !/ ------------------------------------------------------------------- / + !/ #ifdef W3_S CALL STRACE (IENT, 'W3SRCE') #endif - + ! #ifdef W3_T FLTEST = .TRUE. #endif ! + VDIO = 0. + VSIO = 0. + DEPTH = MAX ( DMIN , D_INP ) + IKS1 = 1 + ICESCALELN = MAX(0.,MIN(1.,1.-ICE*ICESCALES(1))) + ICESCALEIN = MAX(0.,MIN(1.,1.-ICE*ICESCALES(2))) + ICESCALENL = MAX(0.,MIN(1.,1.-ICE*ICESCALES(3))) + ICESCALEDS = MAX(0.,MIN(1.,1.-ICE*ICESCALES(4))) #ifdef W3_IG1 + ! ! Does not integrate source terms for IG band if IGPARS(12) = 0. + ! IF (NINT(IGPARS(12)).EQ.0) IKS1 = NINT(IGPARS(5)) #endif IS1=(IKS1-1)*NTH+1 - - !! Initialise source term arrays: - VD = 0. - VS = 0. - VDIO = 0. - VSIO = 0. - VSBT = 0. - VDBT = 0. - -#if defined(W3_LN0) || defined(W3_LN1) || defined(W3_SEED) + ! +#ifdef W3_LN0 VSLN = 0. #endif - -#if defined(W3_ST0) || defined(W3_ST3) || defined(W3_ST4) +#ifdef W3_LN1 + VSLN = 0. +#endif +#ifdef W3_SEED + VSLN = 0. +#endif +#ifdef W3_ST0 + VSIN = 0. + VDIN = 0. +#endif +#ifdef W3_ST3 + VSIN = 0. + VDIN = 0. +#endif +#ifdef W3_ST4 VSIN = 0. VDIN = 0. #endif -#if defined(W3_NL0) || defined(W3_NL1) +#ifdef W3_NL0 + VSNL = 0. + VDNL = 0. +#endif +#ifdef W3_NL1 VSNL = 0. VDNL = 0. #endif - #ifdef W3_TR1 VSTR = 0. VDTR = 0. #endif - -#if defined(W3_ST0) || defined(W3_ST4) +#ifdef W3_ST0 VSDS = 0. VDDS = 0. #endif - +#ifdef W3_ST4 + VSDS = 0. + VDDS = 0. +#endif + VSBT = 0. + VDBT = 0. #ifdef W3_DB1 VSDB = 0. VDDB = 0. #endif - -#if defined(W3_IC1) || defined(W3_IC2) || defined(W3_IC3) || defined(W3_IC4) || defined(W3_IC5) +#ifdef W3_IC1 + VSIC = 0. + VDIC = 0. +#endif +#ifdef W3_IC2 + VSIC = 0. + VDIC = 0. +#endif +#ifdef W3_IC3 + VSIC = 0. + VDIC = 0. +#endif +#ifdef W3_IC4 VSIC = 0. VDIC = 0. #endif - #ifdef W3_UOST VSUO = 0. VDUO = 0. #endif - -#if defined(W3_IS1) || defined(W3_IS2) +#ifdef W3_IC5 + VSIC = 0. + VDIC = 0. +#endif + ! +#ifdef W3_IS1 VSIR = 0. VDIR = 0. #endif - #ifdef W3_IS2 - VDIR2 = 0. + VSIR = 0. + VDIR = 0. + VDIR2= 0. #endif - + ! #ifdef W3_ST6 VSWL = 0. VDWL = 0. #endif - -#if defined(W3_ST0) || defined(W3_ST1) || defined(W3_ST6) - ZWND = 10. + ! +#ifdef W3_ST0 + ZWND = 10. #endif - -#if defined(W3_ST2) - ZWND = ZWIND +#ifdef W3_ST1 + ZWND = 10. #endif - -#if defined(W3_ST4) - ZWND = ZZWND +#ifdef W3_ST2 + ZWND = ZWIND +#endif +#ifdef W3_ST4 + ZWND = ZZWND +#endif +#ifdef W3_ST6 + ZWND = 10. +#endif +#ifdef W3_COAWST_MODEL + SPEC3 = 0. + VS3 = 0. + VD3 = 0. + oDTG=1.0/DTG #endif ! - ! 1. Preparations --------------------------------------------------- * - ! - DEPTH = MAX ( DMIN , D_INP ) - DRAT = DAIR / DWAT - ICESCALELN = MAX(0.,MIN(1.,1.-ICE*ICESCALES(1))) - ICESCALEIN = MAX(0.,MIN(1.,1.-ICE*ICESCALES(2))) - ICESCALENL = MAX(0.,MIN(1.,1.-ICE*ICESCALES(3))) - ICESCALEDS = MAX(0.,MIN(1.,1.-ICE*ICESCALES(4))) - + DRAT = DAIR / DWAT #ifdef W3_T WRITE (NDST,9000) WRITE (NDST,9001) DEPTH, U10ABS, U10DIR*RADE #endif - + ! + ! 1. Preparations --------------------------------------------------- * + ! ! 1.a Set maximum change and wavenumber arrays. ! !XP = 0.15 @@ -970,7 +1022,15 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & TAUOCX = 0. TAUOCY = 0. WNMEAN = 0. - +#ifdef W3_COAWST_MODEL + PHIBRKX = 0. + PHIBRKY = 0. + QB = 0. + PHICAPX = 0. + PHICAPY = 0. + TAUBRKX = 0. + TAUBRKY = 0. +#endif ! ! TIME is updated in W3WAVEMD prior to the call of W3SCRE, we should ! move 'TIME' one time step backward (QL) @@ -1050,7 +1110,8 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & TAUWX, TAUWY, CD, Z0, CHARN, LLWS, FMEANWS, DLWMEAN) #endif -#if defined(W3_DEBUGSRC) && defined(W3_ST4) +#ifdef W3_DEBUGSRC +#ifdef W3_ST4 IF (IX == DEBUG_NODE) THEN WRITE(740+IAPROC,*) '1: out value USTAR=', USTAR, ' USTDIR=', USTDIR WRITE(740+IAPROC,*) '1: out value EMEAN=', EMEAN, ' FMEAN=', FMEAN @@ -1059,6 +1120,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & WRITE(740+IAPROC,*) '1: out value ALPHA=', CHARN, ' FMEANWS=', FMEANWS END IF #endif +#endif #ifdef W3_ST4 CALL W3SIN4 ( SPEC, CG1, WN2, U10ABS, USTAR, DRAT, AS, & @@ -1066,7 +1128,8 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & VSIN, VDIN, LLWS, IX, IY, BRLAMBDA ) END IF #endif -#if defined(W3_DEBUGSRC) && defined(W3_ST4) +#ifdef W3_DEBUGSRC +#ifdef W3_ST4 IF (IX == DEBUG_NODE) THEN WRITE(740+IAPROC,*) '1: U10DIR=', U10DIR, ' Z0=', Z0, ' CHARN=', CHARN WRITE(740+IAPROC,*) '1: USTAR=', USTAR, ' U10ABS=', U10ABS, ' AS=', AS @@ -1078,6 +1141,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & WRITE(740+IAPROC,*) '1: W3SIN4(min/max/sum)VDIN=', minval(VDIN), maxval(VDIN), sum(VDIN) END IF #endif +#endif #ifdef W3_ST4 CALL W3SPR4 (SPEC, CG1, WN1, EMEAN, FMEAN, FMEAN1, WNMEAN, & @@ -1137,7 +1201,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #endif #ifdef W3_ST4 ! Introduces a Long & Resio (JGR2007) type dependance on wave age +#endif ! !/ST4 FAGE = FFXFA*TANH(0.3*U10ABS*FMEANWS*TPI/GRAV) +#ifdef W3_ST4 FAGE = 0. FHIGH = MAX( (FFXFM + FAGE ) * MAX(FMEAN1,FMEANWS), FFXPM / USTAR) FHIGI = FFXFA * FMEAN1 @@ -1201,12 +1267,14 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & VSIN, VDIN, LLWS, IX, IY, BRLAMBDA ) #endif -#if defined(W3_DEBUGSRC) && defined(W3_ST4) +#ifdef W3_DEBUGSRC +#ifdef W3_ST4 IF (IX == DEBUG_NODE) THEN WRITE(740+IAPROC,*) '2 : W3SIN4(min/max/sum)VSIN=', minval(VSIN), maxval(VSIN), sum(VSIN) WRITE(740+IAPROC,*) '2 : W3SIN4(min/max/sum)VDIN=', minval(VDIN), maxval(VDIN), sum(VDIN) END IF #endif +#endif #ifdef W3_ST6 CALL W3SIN6 ( SPEC, CG1, WN2, U10ABS, USTAR, USTDIR, CD, DAIR, & @@ -1216,20 +1284,16 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & ! 2.b Nonlinear interactions. ! #ifdef W3_NL1 - IF (IQTPE.GT.0) THEN - CALL W3SNL1 ( SPEC, CG1, WNMEAN*DEPTH, VSNL, VDNL ) - ELSE - CALL W3SNLGQM ( SPEC, CG1, WN1, DEPTH, VSNL, VDNL ) - END IF + CALL W3SNL1 ( SPEC, CG1, WNMEAN*DEPTH, VSNL, VDNL ) #endif #ifdef W3_NL2 - CALL W3SNL2 ( SPEC, CG1, DEPTH, VSNL, VDNL ) + CALL W3SNL2 ( SPEC, CG1, DEPTH, VSNL, VDNL ) #endif #ifdef W3_NL3 - CALL W3SNL3 ( SPEC, CG1, WN1, DEPTH, VSNL, VDNL ) + CALL W3SNL3 ( SPEC, CG1, WN1, DEPTH, VSNL, VDNL ) #endif #ifdef W3_NL4 - CALL W3SNL4 ( SPEC, CG1, WN1, DEPTH, VSNL, VDNL ) + CALL W3SNL4 ( SPEC, CG1, WN1, DEPTH, VSNL, VDNL ) #endif #ifdef W3_NL5 CALL W3SNL5 ( SPEC, CG1, WN1, FMEAN, QI5TSTART, & @@ -1263,12 +1327,15 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & CALL W3SDS4 ( SPEC, WN1, CG1, USTAR, USTDIR, DEPTH, DAIR, VSDS, & VDDS, IX, IY, BRLAMBDA, WHITECAP, DLWMEAN ) #endif -#if defined(W3_DEBUGSRC) && defined(W3_ST4) + +#ifdef W3_DEBUGSRC +#ifdef W3_ST4 IF (IX == DEBUG_NODE) THEN WRITE(740+IAPROC,*) '2 : W3SDS4(min/max/sum)VSDS=', minval(VSDS), maxval(VSDS), sum(VSDS) WRITE(740+IAPROC,*) '2 : W3SDS4(min/max/sum)VDDS=', minval(VDDS), maxval(VDDS), sum(VDDS) END IF #endif +#endif #ifdef W3_ST6 CALL W3SDS6 ( SPEC, CG1, WN1, VSDS, VDDS ) @@ -1278,8 +1345,12 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & IF (.NOT. FSSOURCE .or. LSLOC) THEN #endif #ifdef W3_DB1 - CALL W3SDB1 ( IX, SPEC, DEPTH, EMEAN, FMEAN, WNMEAN, CG1, & +! jcw here is the depth limited breaking + CALL W3SDB1 ( IX, SPEC, DEPTH, EMEAN, FMEAN, WNMEAN, CG1, & LBREAK, VSDB, VDDB ) +! recompute QB + Hmax_r=0.45*(MAX(DEPTH,0.01)) + QB=MIN(1.0,1.0-EXP(-(HSTOT/SQRT(2.)/Hmax_r)**15.0)) #endif #ifdef W3_PDLIB ENDIF @@ -1330,7 +1401,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & 8888 FORMAT (1X,I8.8,1X,I6.6,F8.1,L2,F8.2) WRITE (NDSD,ERR=801,IOSTAT=IERR) IX, IY, TIME, NSTEPS, & DTTOT, FLAGNN, DEPTH, U10ABS, U10DIR +#endif ! +#ifdef W3_NNT IF ( FLAGNN ) THEN DO IK=1, NK FACNN = TPI * SIG(IK) / CG1(IK) @@ -1385,7 +1458,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_PDLIB IF (B_JGS_LIMITER_FUNC == 2) THEN DO IK=1, NK - JAC = CG1(IK)/CLATSL + JAC = CG1(IK)/CLATSL JAC2 = 1./TPI/SIG(IK) FRLOCAL = SIG(IK)*TPIINV #ifdef W3_ST6 @@ -1410,9 +1483,11 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_ST6 VS(IS) = VS(IS) + VSWL(IS) #endif -#if defined(W3_TR1) && !defined(W3_PDLIB) +#ifndef W3_PDLIB +#ifdef W3_TR1 VS(IS) = VS(IS) + VSTR(IS) #endif +#endif #ifdef W3_BS1 VS(IS) = VS(IS) + VSBS(IS) #endif @@ -1424,30 +1499,34 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_ST6 VD(IS) = VD(IS) + VDWL(IS) #endif -#if defined(W3_TR1) && !defined(W3_PDLIB) +#ifndef W3_PDLIB +#ifdef W3_TR1 VD(IS) = VD(IS) + VDTR(IS) #endif +#endif #ifdef W3_BS1 VD(IS) = VD(IS) + VDBS(IS) #endif #ifdef W3_UOST VD(IS) = VD(IS) + VDUO(IS) #endif - DAMAX = MIN ( DAM(IS) , MAX ( XREL*SPECINIT(IS) , AFILT ) ) - AFAC = 1. / MAX( 1.E-10 , ABS(VS(IS)/DAMAX) ) + DAMAX = MIN ( DAM(IS) , MAX ( XREL*SPECINIT(IS) , AFILT ) ) + AFAC = 1. / MAX( 1.E-10 , ABS(VS(IS)/DAMAX) ) #ifdef W3_NL5 IF (NL5_SELECT .EQ. 1) THEN - DT = MIN ( DT , AFAC / ( MAX ( 1.E-10, & + DT = MIN ( DT , AFAC / ( MAX ( 1.E-10, & 1. + NL5_OFFSET*AFAC*MIN(0.,VD(IS)) ) ) ) ELSE #endif - DT = MIN ( DT , AFAC / ( MAX ( 1.E-10, & + DT = MIN ( DT , AFAC / ( MAX ( 1.E-10, & 1. + OFFSET*AFAC*MIN(0.,VD(IS)) ) ) ) #ifdef W3_NL5 ENDIF #endif END DO ! end of loop on IS + !VD = 0 + !VS = 0 ! DT = MAX ( 0.5, DT ) ! The hardcoded min. dt is a problem for certain cases e.g. laborotary scale problems. ! @@ -1455,11 +1534,11 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_T DTRAW = DT #endif - IDT = 1 + INT ( 0.99*(DTG-DTTOT)/DT ) ! number of iterations - DT = (DTG-DTTOT)/REAL(IDT) ! actualy time step - SHAVE = DT.LT.DTMIN .AND. DT.LT.DTG-DTTOT ! limiter check ... + IDT = 1 + INT ( 0.99*(DTG-DTTOT)/DT ) ! number of iterations + DT = (DTG-DTTOT)/REAL(IDT) ! actualy time step + SHAVE = DT.LT.DTMIN .AND. DT.LT.DTG-DTTOT ! limiter check ... SHAVEIO = SHAVE - DT = MAX ( DT , MIN (DTMIN,DTG-DTTOT) ) ! override dt with input time step or last time step if it is bigger ... anyway the limiter is on! + DT = MAX ( DT , MIN (DTMIN,DTG-DTTOT) ) ! override dt with input time step or last time step if it is bigger ... anyway the limiter is on! ! #ifdef W3_NL5 DT = INT(DT) * 1.0 @@ -1657,7 +1736,6 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & RETURN ! return everything is done for the implicit ... END IF ! srce_imp_pre -! --end W3_PDLIB #endif ! #ifdef W3_T @@ -1666,6 +1744,28 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & ! ! 5. Increment spectrum --------------------------------------------- * ! +#ifdef W3_COAWST_MODEL + SPEC3 = SPEC !EM set SPEC3 before VS VD changes + ! sum VS2 VD2 for stress calc + DO IS=IS1, NSPECH + VS3(IS) = VSLN(IS) + VSIN(IS) + VSNL(IS) + VD3(IS) = VDIN(IS) + VDNL(IS) + END DO + IF ( SHAVE ) THEN + DO IS=IS1, NSPECH + eInc1 = VS3(IS) * DT / MAX ( 1. , (1.-HDT*VD3(IS))) + eInc2 = SIGN ( MIN (DAM(IS),ABS(eInc1)) , eInc1 ) + SPEC3(IS) = MAX ( 0. , SPEC3(IS)+eInc2 ) + END DO + ELSE + ! + DO IS=IS1, NSPECH + eInc1 = VS3(IS) * DT / MAX ( 1. , (1.-HDT*VD3(IS))) + SPEC3(IS) = MAX ( 0. , SPEC3(IS)+eInc1 ) + END DO + END IF +#endif + IF (srce_call .eq. srce_direct) THEN IF ( SHAVE ) THEN DO IS=IS1, NSPECH @@ -1682,6 +1782,10 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & END IF ! #ifdef W3_DB1 +! +! we need to lose the breaking dissip energy, SPEC is decreased. +! so the MWX/YFINISH below has the loss of breaking in it. +! DO IS=IS1, NSPECH eInc1 = VSDB(IS) * DT / MAX ( 1. , (1.-HDT*VDDB(IS))) SPEC(IS) = MAX ( 0. , SPEC(IS)+eInc1 ) @@ -1692,7 +1796,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & eInc1 = VDTR(IS) * DT / MAX ( 1. , (1.-HDT*VDTR(IS))) SPEC(IS) = MAX ( 0. , SPEC(IS)+eInc1 ) END DO -#endif +#endif #ifdef W3_DEBUGSRC IF (IX == DEBUG_NODE) WRITE(44,'(1EN15.4)') SUM(VSIN) @@ -1713,7 +1817,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & WRITE(740+IAPROC,*) ' srce_direct : sum(VDTOT)=', sum(MIN(0. , VD)) END IF #endif - END IF ! srce_call .eq. srce_direct + END IF + + ! ! 5.b Computes ! atmos->wave flux PHIAW-------------------------------- * @@ -1728,27 +1834,56 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & ! Wave direction is "direction to" ! therefore there is a PLUS sign for the stress +#ifdef W3_COAWST_MODEL + A1BAND = 0. + B1BAND = 0. + A2BAND = 0. + B2BAND = 0. +#endif DO ITH=1, NTH IS = (IK-1)*NTH + ITH COSI(1)=ECOS(IS) COSI(2)=ESIN(IS) PHIAW = PHIAW + (VSIN(IS))* DT * FACTOR & / MAX ( 1. , (1.-HDT*VDIN(IS))) ! semi-implict integration scheme - PHIBBL= PHIBBL- (VSBT(IS))* DT * FACTOR & / MAX ( 1. , (1.-HDT*VDBT(IS))) ! semi-implict integration scheme PHINL = PHINL + VSNL(IS)* DT * FACTOR & / MAX ( 1. , (1.-HDT*VDNL(IS))) ! semi-implict integration scheme IF (VSIN(IS).GT.0.) WHITECAP(3) = WHITECAP(3) + SPEC(IS) * FACTOR HSTOT = HSTOT + SPEC(IS) * FACTOR +#ifdef W3_COAWST_MODEL +# ifdef W3_DB1 +! subtract VSDB bc it is negative, want to make positive + A1BAND=A1BAND - VSDB(IS) * DT * FACTOR * ECOS(ITH) & + / MAX ( 1. , (1.-HDT*VDDB(IS))) + B1BAND=B1BAND - VSDB(IS) * DT * FACTOR * ESIN(ITH) & + / MAX ( 1. , (1.-HDT*VDDB(IS))) +# endif +! subtract VSDS bc it is negative, want to make positive + A2BAND=A2BAND - VSDS(IS) * DT * FACTOR * ECOS(ITH) & + / MAX ( 1. , (1.-HDT*VDDS(IS))) + B2BAND=B2BAND - VSDS(IS) * DT * FACTOR * ESIN(ITH) & + / MAX ( 1. , (1.-HDT*VDDS(IS))) +#endif END DO +#ifdef W3_COAWST_MODEL +! Here we compute breaking stress in W/m2 + PHIBRKX = PHIBRKX + A1BAND + PHIBRKY = PHIBRKY + B1BAND + PHICAPX = PHICAPX + A2BAND + PHICAPY = PHICAPY + B2BAND +! Here we compute breaking stress in N/m2 + TAUBRKX=TAUBRKX + A1BAND * WN1(IK)/SIG(IK) + TAUBRKY=TAUBRKY + B1BAND * WN1(IK)/SIG(IK) +#endif END DO - WHITECAP(3) = 4. * SQRT(WHITECAP(3)) - HSTOT =4.*SQRT(HSTOT) - TAUWIX = TAUWIX + TAUWX * DRAT * DT - TAUWIY = TAUWIY + TAUWY * DRAT * DT - TAUWNX = TAUWNX + TAUWAX * DRAT * DT - TAUWNY = TAUWNY + TAUWAY * DRAT * DT + WHITECAP(3)=4.*SQRT(WHITECAP(3)) + HSTOT=4.*SQRT(HSTOT) + TAUWIX= TAUWIX+ TAUWX * DRAT *DT + TAUWIY= TAUWIY+ TAUWY * DRAT *DT + TAUWNX= TAUWNX+ TAUWAX * DRAT *DT + TAUWNY= TAUWNY+ TAUWAY * DRAT *DT ! MISSING: TAIL TO BE ADDED ? ! #ifdef W3_NLS @@ -1801,7 +1936,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & FHIGH = MIN ( SIG(NK) , MAX ( FH1 , FH2 ) ) NKH = MAX ( 2 , MIN ( NKH1 , & INT ( FACTI2 + FACTI1*LOG(MAX(1.E-7,FHIGH)) ) ) ) +#endif ! +#ifdef W3_ST1 IF ( FLTEST ) WRITE (NDST,9060) & FH1*TPIINV, FH2*TPIINV, FHIGH*TPIINV, NKH #endif @@ -1812,7 +1949,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & DFH = FHIGH - FHTRAN NKH = MAX ( 1 , & INT ( FACTI2 + FACTI1*LOG(MAX(1.E-7,FHTRAN)) ) ) +#endif ! +#ifdef W3_ST2 IF ( FLTEST ) WRITE (NDST,9061) FHTRAN, FHIGH, NKH #endif ! @@ -1822,7 +1961,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & FHIGH = MIN ( SIG(NK) , MAX ( FH1 , FH2 ) ) NKH = MAX ( 2 , MIN ( NKH1 , & INT ( FACTI2 + FACTI1*LOG(MAX(1.E-7,FHIGH)) ) ) ) +#endif ! +#ifdef W3_ST3 IF ( FLTEST ) WRITE (NDST,9062) & FH1*TPIINV, FH2*TPIINV, FHIGH*TPIINV, NKH #endif @@ -1831,6 +1972,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & ! Introduces a Long & Resio (JGR2007) type dependance on wave age FAGE = FFXFA*TANH(0.3*U10ABS*FMEANWS*TPI/GRAV) FH1 = (FFXFM+FAGE) * FMEAN1 +#endif + +#ifdef W3_ST4 FH2 = FFXPM / USTAR FHIGH = MIN ( SIG(NK) , MAX ( FH1 , FH2 ) ) NKH = MAX ( 2 , MIN ( NKH1 , & @@ -1845,7 +1989,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & ENDIF NKH = MAX ( 2 , MIN ( NKH1 , & INT ( FACTI2 + FACTI1*LOG(MAX(1.E-7,FHIGH)) ) ) ) +#endif ! +#ifdef W3_ST6 IF ( FLTEST ) WRITE (NDST,9063) FHIGH*TPIINV, NKH #endif ! @@ -1895,6 +2041,21 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & + 0. END DO END DO +#ifdef W3_COAWST_MODEL + DO IK=NKH+1, NK +#ifdef W3_ST2 + FACDIA = MAX ( 0. , MIN ( 1., (SIG(IK)-FHTRAN)/DFH) ) + FACPAR = MAX ( 0. , 1.-FACDIA ) +#endif + DO ITH=1, NTH + SPEC3(ITH+(IK-1)*NTH) = SPEC3(ITH+(IK-2)*NTH) * FACHFA & +#ifdef W3_ST2 + * FACDIA + FACPAR * SPEC3(ITH+(IK-1)*NTH) & +#endif + + 0. + END DO + END DO +#endif ! ! 6.e Update wave-supported stress----------------------------------- * ! @@ -1916,18 +2077,14 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_NL5 CALL TICK21(QI5TSTART, DT) #endif - IF (srce_call .eq. srce_imp_post) THEN EXIT ENDIF - IF ( DTTOT .GE. 0.9999*DTG ) THEN - ! IF (IX == DEBUG_NODE) WRITE(*,*) 'DTTOT, DTG', DTTOT, DTG + ! IF (IX == DEBUG_NODE) WRITE(*,*) 'DTTOT, DTG', DTTOT, DTG EXIT ENDIF - END DO ! INTEGRATION LOOP - #ifdef W3_DEBUGSRC IF (IX .eq. DEBUG_NODE) THEN WRITE(740+IAPROC,*) 'NSTEPS=', NSTEPS @@ -1951,7 +2108,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & 800 CONTINUE WRITE (NDSE,8000) FNAME, IERR CALL EXTCDE (1) +#endif ! +#ifdef W3_NNT 801 CONTINUE WRITE (NDSE,8001) IERR CALL EXTCDE (2) @@ -1977,7 +2136,11 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & A1BAND = 0. B1BAND = 0. DO ITH=1, NTH +#ifdef W3_COAWST_MODEL + DIFF = SPECINIT(ITH+(IK-1)*NTH)-SPEC3(ITH+(IK-1)*NTH) +#else DIFF = SPECINIT(ITH+(IK-1)*NTH)-SPEC(ITH+(IK-1)*NTH) +#endif EBAND = EBAND + DIFF A1BAND = A1BAND + DIFF*ECOS(ITH) B1BAND = B1BAND + DIFF*ESIN(ITH) @@ -1990,7 +2153,16 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & END DO ! ! Transformation in momentum flux in m^2 / s^2 - ! + +#ifdef W3_COAWST_MODEL + TAUOX=(GRAV*MWXFINISH+TAUWIX-TAUBBL(1))*oDTG + TAUOY=(GRAV*MWYFINISH+TAUWIY-TAUBBL(2))*oDTG + TAUWIX=TAUWIX*oDTG + TAUWIY=TAUWIY*oDTG + TAUWNX=TAUWNX*oDTG + TAUWNY=TAUWNY*oDTG + TAUBBL(:)=TAUBBL(:)*oDTG +#else TAUOX=(GRAV*MWXFINISH+TAUWIX-TAUBBL(1))/DTG TAUOY=(GRAV*MWYFINISH+TAUWIY-TAUBBL(2))/DTG TAUWIX=TAUWIX/DTG @@ -1998,15 +2170,27 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & TAUWNX=TAUWNX/DTG TAUWNY=TAUWNY/DTG TAUBBL(:)=TAUBBL(:)/DTG +#endif TAUOCX=DAIR*COEF*COEF*USTAR*USTAR*COS(USTDIR) + DWAT*(TAUOX-TAUWIX) TAUOCY=DAIR*COEF*COEF*USTAR*USTAR*SIN(USTDIR) + DWAT*(TAUOY-TAUWIY) ! ! Transformation in wave energy flux in W/m^2=kg / s^3 ! +#ifdef W3_COAWST_MODEL + PHIOC =DWAT*GRAV*(EFINISH+PHIAW-PHIBBL)*oDTG + PHIAW =DWAT*GRAV*PHIAW *oDTG + PHINL =DWAT*GRAV*PHINL *oDTG + PHIBBL=DWAT*GRAV*PHIBBL*oDTG + PHIBRKX=DWAT*GRAV*PHIBRKX*oDTG + PHIBRKY=DWAT*GRAV*PHIBRKY*oDTG + PHICAPX=DWAT*GRAV*PHICAPX*oDTG + PHICAPY=DWAT*GRAV*PHICAPY*oDTG +#else PHIOC =DWAT*GRAV*(EFINISH+PHIAW-PHIBBL)/DTG PHIAW =DWAT*GRAV*PHIAW /DTG PHINL =DWAT*GRAV*PHINL /DTG PHIBBL=DWAT*GRAV*PHIBBL/DTG +#endif ! ! 10.1 Adds ice scattering and dissipation: implicit integration---------------- * ! INFLAGS2(4) is true if ice concentration was ever read during @@ -2044,12 +2228,13 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & R(:)=1 ! In case IC2 is defined but not IS2 ! #ifdef W3_IC1 - CALL W3SIC1 ( SPEC,DEPTH, CG1, IX, IY, VSIC, VDIC ) + CALL W3SIC1 ( SPEC,DEPTH, CG1, IX, IY, VSIC, VDIC ) #endif #ifdef W3_IS2 CALL W3SIS2 ( SPEC, DEPTH, ICE, ICEH, ICEF, ICEDMAX, IX, IY, & VSIR, VDIR, VDIR2, WN1, CG1, WN_R, CG_ICE, R ) #endif + #ifdef W3_IC2 CALL W3SIC2 ( SPEC, DEPTH, ICEH, ICEF, CG1, WN1,& IX, IY, VSIC, VDIC, WN_R, CG_ICE, ALPHA_LIU, R) @@ -2184,6 +2369,11 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & ELSE CHARN = AALPHA ENDIF +# ifdef W3_COAWST_MODEL +! recompute the stresses for tranfer to ocean. + TAUOCX=DAIR*COEF*COEF*USTAR*USTAR*COS(USTDIR) ! + DWAT*(TAUOX-TAUWIX) + TAUOCY=DAIR*COEF*COEF*USTAR*USTAR*SIN(USTDIR) ! + DWAT*(TAUOY-TAUWIY) +# endif #endif #ifdef W3_FLD2 IF (U10ABS.GT.10. .and. HSTOT.gt.0.5) then @@ -2201,7 +2391,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & IF (IX .eq. DEBUG_NODE) THEN WRITE(740+IAPROC,*) '5 : sum(SPEC)=', sum(SPEC) END IF -#endif +#endif #ifdef W3_REF1 IF (REFLEC(1).GT.0.OR.REFLEC(2).GT.0.OR.(REFLEC(4).GT.0.AND.BERG.GT.0)) THEN @@ -2287,6 +2477,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_T 9020 FORMAT (' TEST W3SRCE : NSTEP : ',I4,' DTTOT :',F6.1) 9021 FORMAT (' TEST W3SRCE : NKH (3X) : ',2I3,I6) +#endif + ! +#ifdef W3_T 9040 FORMAT (' TEST W3SRCE : DTRAW, DT, SHAVE :',2F6.1,2X,L1) #endif ! diff --git a/model/src/w3str1md.F90 b/model/src/w3str1md.F90 old mode 100644 new mode 100755 index d8067abd7..d92dd8692 --- a/model/src/w3str1md.F90 +++ b/model/src/w3str1md.F90 @@ -515,7 +515,7 @@ SUBROUTINE W3STR1 (A, AOLD, CG, WN, DEPTH, IX, S, D) AUX2 = WN0*DEP* (G9DEP+(2./15.)*GRAV*DEP_3*WN0**2-(2./5.)*W0**2*DEP_2) RINT = AUX1 / AUX2 FT = PTRIAD(1) * C0 * CG(IK) * RINT**2 * SINBPH - SA(ITH,IK) = MAX(0.,FT * ( EM * EM - 2. * EM * E0)) ! 1/(m²*s²) * m4 = m²/s² !!! [m²/s] + SA(ITH,IK) = MAX(0.,FT * ( EM * EM - 2. * EM * E0)) ! 1/(m²*s²) * m4 = m²/s² !!! [m²/s] END DO END DO diff --git a/model/src/w3strkmd.F90 b/model/src/w3strkmd.F90 old mode 100644 new mode 100755 index d02a22f7b..a776a36bb --- a/model/src/w3strkmd.F90 +++ b/model/src/w3strkmd.F90 @@ -2375,7 +2375,7 @@ SUBROUTINE timeTrackingV2 (sysA ,maxSys ,tpTimeKnob , & ( (REAL(olsize(:)) - & REAL(sysMem(ind2(:))%nPoints) )/& (0.50*MAX(REAL(sysMem(ind2(:))%nPoints),0.001)) )**2 - ! Remove GoF entries which exceed predifined tolerances + ! Remove GoF entries which exceed predifined tolerances DO ii = 1,SIZE(ind2) WRITE(20,*) 'Testing: ii,olsize(ii),size,frac =',& ii,olsize(ii),sysMem(ind2(ii))%nPoints,& diff --git a/model/src/w3swldmd.F90 b/model/src/w3swldmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3tidemd.F90 b/model/src/w3tidemd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3timemd.F90 b/model/src/w3timemd.F90 old mode 100644 new mode 100755 index 00a8a952f..11376969f --- a/model/src/w3timemd.F90 +++ b/model/src/w3timemd.F90 @@ -72,9 +72,6 @@ MODULE W3TIMEMD USE W3SERVMD, ONLY: STRACE #endif ! - ! module default - implicit none - PUBLIC ! INTEGER, PRIVATE :: PRFTB(8) @@ -134,6 +131,8 @@ SUBROUTINE TICK21 ( TIME, DTIME ) ! !/ ------------------------------------------------------------------- / !/ + IMPLICIT NONE + !/ !/ ------------------------------------------------------------------- / !/ Parameter list !/ @@ -245,6 +244,7 @@ INTEGER FUNCTION IYMD21 ( NYMD ,M ) ! !/ ------------------------------------------------------------------- / !/ + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -383,6 +383,7 @@ REAL FUNCTION DSEC21 ( TIME1, TIME2 ) ! !/ ------------------------------------------------------------------- / !/ + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -504,6 +505,7 @@ INTEGER FUNCTION MYMD21 ( NYMD ) ! !/ ------------------------------------------------------------------- / !/ + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -632,6 +634,7 @@ REAL FUNCTION TDIFF ( T1, T2 ) ! !/ ------------------------------------------------------------------- / !/ + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -711,6 +714,7 @@ SUBROUTINE STME21 ( TIME , DTME21 ) ! !/ ------------------------------------------------------------------- / !/ + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / !/ Parameter list @@ -761,6 +765,7 @@ INTEGER FUNCTION JULDAY(id,mm,iyyy) ! !/ ------------------------------------------------------------------- / !/ + IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / INTEGER(KIND=4), INTENT(in) :: id,mm,iyyy @@ -2012,27 +2017,7 @@ SUBROUTINE T2ISO(TIME,ISODT) !/ End of T2ISO ------------------------------------------------------ / !/ END SUBROUTINE T2ISO - !> Create a timestring for custom user filenames - !! @details Creates a character string of form YYYY-MM-DD-SSSSS - !! @param[in] time(2) YYYYMMDD HHMMSS - !! @param[out] user_timestring YYYY-MM-DD-SSSSS - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine set_user_timestring(time, user_timestring) - integer , intent(in) :: time(2) - character(len=16), intent(out) :: user_timestring - ! local variables - integer :: yy,mm,dd,hh,mn,ss,totsec - yy = time(1)/10000 - mm = (time(1)-yy*10000)/100 - dd = (time(1)-yy*10000-mm*100) - hh = time(2)/10000 - mn = (time(2)-hh*10000)/100 - ss = (time(2)-hh*10000-mn*100) - totsec = hh*3600+mn*60+ss - write(user_timestring,'(i4.4,a,i2.2,a,i2.2,a,i5.5)')yy,'-',mm,'-',dd,'-',totsec - end subroutine set_user_timestring !/ End of module W3TIMEMD -------------------------------------------- / !/ END MODULE W3TIMEMD diff --git a/model/src/w3triamd.F90 b/model/src/w3triamd.F90 old mode 100644 new mode 100755 index a97bed7e4..9fac503b6 --- a/model/src/w3triamd.F90 +++ b/model/src/w3triamd.F90 @@ -578,18 +578,12 @@ SUBROUTINE GET_BOUNDARY_STATUS(STATUS) !/ ! integer*2, intent(out) :: STATUS(NX) - integer, allocatable :: collected(:), nextvert(:), prevvert(:) + INTEGER :: COLLECTED(NX), NEXTVERT(NX), PREVVERT(NX) INTEGER :: ISFINISHED, INEXT, IPREV INTEGER :: IPNEXT, IPPREV, ZNEXT, IP, I, IE #ifdef W3_S CALL STRACE (IENT, 'VA_SETUP_IOBPD') #endif - allocate(collected(nx)) - allocate(nextvert(nx)) - allocate(prevvert(nx)) - nextvert = 0 - prevvert = 0 - STATUS(:) = 0 DO IE=1,NTRI DO I=1,3 @@ -656,11 +650,6 @@ SUBROUTINE GET_BOUNDARY_STATUS(STATUS) EXIT END IF END DO - - deallocate(collected) - deallocate(nextvert) - deallocate(prevvert) - END SUBROUTINE GET_BOUNDARY_STATUS !/ -------------------------------------------------------------------/ @@ -863,10 +852,9 @@ SUBROUTINE UG_GETOPENBOUNDARY(TMPSTA,ZBIN,ZLIM) !/ Local parameters !/ INTEGER :: IBC, IX - integer, allocatable :: mask(:) + INTEGER :: MASK(NX) INTEGER*2 :: STATUS(NX) ! - allocate(mask(nx)) MASK(:)=1 CALL SET_IOBP (MASK, STATUS) ! @@ -882,8 +870,6 @@ SUBROUTINE UG_GETOPENBOUNDARY(TMPSTA,ZBIN,ZLIM) IF ( (TMPSTA(1,IX).EQ.1) .AND. (STATUS(IX).EQ.0) .AND. (ZBIN(1,IX) .LT. ZLIM)) TMPSTA(1,IX) = 2 END IF END DO - - deallocate(mask) ! END SUBROUTINE UG_GETOPENBOUNDARY !/ ------------------------------------------------------------------- / @@ -978,14 +964,14 @@ SUBROUTINE SPATIAL_GRID I2 = TRIGP(2,K) I3 = TRIGP(3,K) -!AR: todo call this only for global grid +!AR: todo call this only for global grid CALL FIX_PERIODCITY(I1,I2,I3,XGRD,YGRD,PT) ! ! cross product of edge-vector (orientated anticlockwise) ! - TRIA(K) = REAL( (PT(2,2)-PT(1,2)) & - *(PT(1,1)-PT(3,1)) & - +(PT(3,2)-PT(1,2)) & + TRIA(K) = REAL( (PT(2,2)-PT(1,2)) & + *(PT(1,1)-PT(3,1)) & + +(PT(3,2)-PT(1,2)) & *(PT(2,1)-PT(1,1)) )*0.5 ! ! test on negative triangle area, which means that the orientiation is not as assumed to be anticw. @@ -1207,8 +1193,8 @@ SUBROUTINE COUNT(TRIGPTEMP) !/ ------------------------------------------------------------------- / !/ local parameter - integer, allocatable :: conn(:) - INTEGER :: COUNTER, IP, IE, I, J, N(3) + INTEGER :: CONN(NX) + INTEGER :: COUNTER, IP, IE, I, J, N(3) #ifdef W3_S INTEGER :: IENT = 0 #endif @@ -1217,7 +1203,7 @@ SUBROUTINE COUNT(TRIGPTEMP) #ifdef W3_S CALL STRACE (IENT, 'COUNT') #endif - allocate(conn(nx)) + COUNTRI=0 COUNTOT=0 CONN(:)= 0 @@ -1248,7 +1234,6 @@ SUBROUTINE COUNT(TRIGPTEMP) ENDDO COUNTOT=J - deallocate(conn) END SUBROUTINE COUNT !/---------------------------------------------------------------------------- @@ -1410,11 +1395,12 @@ SUBROUTINE AREA_SI(IMOD) INTEGER :: COUNTER,ifound,alreadyfound INTEGER :: I, J, K, II INTEGER :: IP, IE, POS, POS_I, POS_J, POS_K, IP_I, IP_J, IP_K - INTEGER :: I1, I2, I3, IP2 + INTEGER :: I1, I2, I3, IP2, CHILF(NX) + INTEGER :: TMP(NX), CELLVERTEX(NX,COUNTRI,2) INTEGER :: COUNT_MAX DOUBLE PRECISION :: TRIA03 INTEGER, ALLOCATABLE :: PTABLE(:,:) - integer, allocatable :: cellvertex(:,:,:), tmp(:) + #ifdef W3_S INTEGER :: IENT = 0 #endif @@ -1439,20 +1425,18 @@ SUBROUTINE AREA_SI(IMOD) SI(I2) = SI(I2) + TRIA03 SI(I3) = SI(I3) + TRIA03 ENDDO - allocate(cellvertex(nx,countri,2)) - allocate(tmp(nx)) CELLVERTEX(:,:,:) = 0 ! Stores for each node the Elementnumbers of the connected Elements ! and the Position of the Node in the Element Index - tmp = 0 + CHILF = 0 DO IE = 1, NTRI DO J=1,3 I = TRIGP(J,IE)!INE(J,IE) - TMP(I) = TMP(I)+1 - CELLVERTEX(I,TMP(I),1) = IE - CELLVERTEX(I,TMP(I),2) = J + CHILF(I) = CHILF(I)+1 + CELLVERTEX(I,CHILF(I),1) = IE + CELLVERTEX(I,CHILF(I),2) = J END DO ENDDO ! @@ -1470,7 +1454,6 @@ SUBROUTINE AREA_SI(IMOD) END DO INDEX_CELL(IP+1)=J+1 END DO - deallocate(cellvertex) IF (.NOT. FSNIMP) RETURN @@ -1590,7 +1573,6 @@ SUBROUTINE AREA_SI(IMOD) END DO END DO - deallocate(tmp) DEALLOCATE(PTABLE) END SUBROUTINE AREA_SI @@ -2123,11 +2105,9 @@ SUBROUTINE UG_GRADIENTS (PARAM, DIFFX, DIFFY) REAL :: DIFFXTMP, DIFFYTMP REAL :: DEDX(3), DEDY(3) REAL :: DVDXIE, DVDYIE - REAL :: WEI_LOCAL(NSEAL) - real, allocatable :: wei(:) + REAL :: WEI(NX), WEI_LOCAL(NSEAL) REAL*8 :: RTMP(NSEAL) - allocate(wei(nx)) DIFFX = 0. DIFFY = 0. ! @@ -2186,7 +2166,6 @@ SUBROUTINE UG_GRADIENTS (PARAM, DIFFX, DIFFY) CALL PDLIB_exchange1Dreal(DIFFX(1,:)) CALL PDLIB_exchange1Dreal(DIFFY(1,:)) #endif - deallocate(wei) ! END SUBROUTINE UG_GRADIENTS !/ ------------------------------------------------------------------- / @@ -2403,21 +2382,14 @@ SUBROUTINE SET_IOBP (MASK, STATUS) INTEGER, INTENT(IN) :: MASK(NX) INTEGER*2, INTENT(OUT) :: STATUS(NX) ! - integer, allocatable :: collected(:), nextvert(:), prevvert(:) - INTEGER :: ISFINISHED !, INEXT, IPREV - INTEGER :: INEXT(3), IPREV(3) - INTEGER :: ZNEXT, IP, I, IE, IPNEXT, IPPREV, COUNT + INTEGER :: COLLECTED(NX), NEXTVERT(NX), PREVVERT(NX) + INTEGER :: ISFINISHED !, INEXT, IPREV + INTEGER :: INEXT(3), IPREV(3) + INTEGER :: ZNEXT, IP, I, IE, IPNEXT, IPPREV, COUNT integer nb0, nb1, nbM1 STATUS = -1 INEXT=(/ 2, 3, 1 /) !IPREV=1+MOD(I+1,3) IPREV=(/ 3, 1, 2 /) !INEXT=1+MOD(I,3) - - allocate(collected(nx)) - allocate(nextvert(nx)) - allocate(prevvert(nx)) - nextvert = 0 - prevvert = 0 - DO IE=1,NTRI ! If one of the points of the triangle is masked out (land) then do as if triangle does not exist... ! IF ((MASK(TRIGP(1,IE)).GT.0).AND.(MASK(TRIGP(2,IE)).GT.0).AND.(MASK(TRIGP(3,IE)).GT.0)) THEN @@ -2484,9 +2456,6 @@ SUBROUTINE SET_IOBP (MASK, STATUS) STATUS = 1 CALL GET_BOUNDARY(NX, NTRI, TRIGP, STATUS, PREVVERT, NEXTVERT) - deallocate(collected) - deallocate(nextvert) - deallocate(prevvert) !#ifdef MPI_PARALL_GRID ! CALL exchange_p2di(STATUS) !#endif @@ -2827,7 +2796,7 @@ SUBROUTINE TRIANG_INDEXES(I, INEXT, IPREV) END SUBROUTINE TRIANG_INDEXES !/ ------------------------------------------------------------------- / - + !> !> @brief Redefines the values of the boundary points and angle pointers !> based on the MAPSTA array. @@ -2934,7 +2903,7 @@ SUBROUTINE SET_UG_IOBP() REAL (KIND = 8) :: DYP1, DYP2, DYP3, eDet1, eDet2, EVX, EVY REAL(KIND=8), PARAMETER :: THR = TINY(1.) INTEGER :: I1, I2, I3 - integer, allocatable :: itmp(:), nextvert(:), prevvert(:) + INTEGER :: ITMP(NX), NEXTVERT(NX), PREVVERT(NX) CHARACTER(60) :: FNAME #ifdef W3_S INTEGER, SAVE :: IENT = 0 @@ -2947,11 +2916,6 @@ SUBROUTINE SET_UG_IOBP() #ifdef W3_S CALL STRACE (IENT, 'SETUGIOBP') #endif - allocate(itmp(nx)) - allocate(nextvert(nx)) - allocate(prevvert(nx)) - nextvert = 0 - prevvert = 0 ! !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! 2. Searches for boundary points @@ -3065,9 +3029,6 @@ SUBROUTINE SET_UG_IOBP() END IF END DO #endif - deallocate(itmp) - deallocate(nextvert) - deallocate(prevvert) ! ! Recomputes the angles used in the gradients estimation ! diff --git a/model/src/w3uno2md.F90 b/model/src/w3uno2md.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3uostmd.F90 b/model/src/w3uostmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3updtmd.F90 b/model/src/w3updtmd.F90 old mode 100644 new mode 100755 index 4e517d50a..337e4539e --- a/model/src/w3updtmd.F90 +++ b/model/src/w3updtmd.F90 @@ -589,6 +589,9 @@ SUBROUTINE W3UWND ( FLFRST, VGX, VGY ) USE W3WDATMD, ONLY: TIME, ASF USE W3ADATMD, ONLY: DW, CX, CY, UA, UD, U10, U10D, AS, & UA0, UAI, UD0, UDI, AS0, ASI +#ifdef W3_CURSP + USE W3ADATMD, ONLY: CXTH, CYTH +#endif USE W3IDATMD, ONLY: TW0, WX0, WY0, DT0, TWN, WXN, WYN, DTN, FLCUR !/ IMPLICIT NONE @@ -696,6 +699,8 @@ SUBROUTINE W3UWND ( FLFRST, VGX, VGY ) ! DO ISEA=1, NSEA ! +#ifdef W3_AIR_WAVES +#else UA(ISEA) = UA0(ISEA) + RD * UAI(ISEA) #ifdef W3_WNT2 UI2 = SQRT ( RD2 * UA0(ISEA)**2 + & @@ -703,6 +708,7 @@ SUBROUTINE W3UWND ( FLFRST, VGX, VGY ) UA(ISEA) = UA(ISEA) * MIN(1.25,UI2/MAX(1.E-7,UA(ISEA))) #endif UD(ISEA) = UD0(ISEA) + RD * UDI(ISEA) +#endif #ifdef W3_MGW UXR = UA(ISEA)*COS(UD(ISEA)) + VGX UYR = UA(ISEA)*SIN(UD(ISEA)) + VGY @@ -741,8 +747,13 @@ SUBROUTINE W3UWND ( FLFRST, VGX, VGY ) ! #ifdef W3_RWND DO ISEA=1, NSEA +#ifdef W3_CURSP + UXR = UA(ISEA)*COS(UD(ISEA)) - RWINDC*CXTH(ISEA,1) + UYR = UA(ISEA)*SIN(UD(ISEA)) - RWINDC*CYTH(ISEA,1) +#else UXR = UA(ISEA)*COS(UD(ISEA)) - RWINDC*CX(ISEA) UYR = UA(ISEA)*SIN(UD(ISEA)) - RWINDC*CY(ISEA) +#endif U10 (ISEA) = MAX ( 0.001 , SQRT(UXR**2+UYR**2) ) U10D(ISEA) = MOD ( TPI+ATAN2(UYR,UXR) , TPI ) END DO diff --git a/model/src/w3uqckmd.F90 b/model/src/w3uqckmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3wavemd.F90 b/model/src/w3wavemd.F90 old mode 100644 new mode 100755 index ef3e20d75..dffe00b15 --- a/model/src/w3wavemd.F90 +++ b/model/src/w3wavemd.F90 @@ -482,7 +482,9 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_OASICM USE W3IGCMMD, ONLY: SND_FIELDS_TO_ICE #endif - +#if defined W3_AIR_WAVES || defined W3_WAVES_OCEAN + USE CWSTWVCP +#endif #ifdef W3_PDLIB USE PDLIB_FIELD_VEC, only : DO_OUTPUT_EXCHANGES USE PDLIB_W3PROFSMD, ONLY: ASPAR_JAC, ASPAR_DIAG_ALL, B_JAC @@ -491,13 +493,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_TIMINGS USE W3PARALL, only : PRINT_MY_TIME #endif -#ifdef W3_PIO - use wav_restart_mod , only : write_restart - use wav_history_mod , only : write_history -#endif - use w3odatmd , only : histwr, rstwr, use_historync, use_restartnc, user_restfname - use w3odatmd , only : verboselog - use w3timemd , only : set_user_timestring +#ifdef W3_COAWST_MODEL + USE CWSTWVCP + USE MCT_COUPLER_PARAMS +#endif ! #ifdef W3_MPI INCLUDE "mpif.h" @@ -506,7 +505,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & !/ ------------------------------------------------------------------- / !/ Parameter list !/ - INTEGER, INTENT(IN) :: IMOD, TEND(2),ODAT(40) + INTEGER, INTENT(IN) :: IMOD, TEND(2),ODAT(35) LOGICAL, INTENT(IN), OPTIONAL :: STAMP, NO_OUT #ifdef W3_OASIS INTEGER, INTENT(IN), OPTIONAL :: ID_LCOMM @@ -572,8 +571,8 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! LOGICAL :: FLACT, FLZERO, FLFRST, FLMAP, TSTAMP,& SKIP_O, FLAG_O, FLDDIR, READBC, & - FLAG0 = .FALSE., FLOUTG = .false., FLPFLD, & - FLPART, LOCAL, FLOUTG2 = .false. + FLAG0 = .FALSE., FLOUTG, FLPFLD, & + FLPART, LOCAL, FLOUTG2 ! #ifdef W3_MPI LOGICAL :: FLGMPI(0:8) @@ -607,9 +606,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & REAL, ALLOCATABLE :: BACSPEC(:) REAL :: BACANGL #endif - integer :: memunit - character(len=16) :: user_timestring !YYYY-MM-DD-SSSSS - character(len=256) :: fname + integer :: memunit !/ ------------------------------------------------------------------- / ! 0. Initializations ! @@ -745,10 +742,12 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_T WRITE (NDST,9011) DTL0 #endif +#if !defined W3_COAWST_MODEL IF ( DTL0 .LT. 0. ) THEN IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1001) CALL EXTCDE ( 2 ) END IF +#endif ELSE DTL0 = 0. END IF @@ -765,10 +764,12 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_T WRITE (NDST,9012) DTTST1, DTTST2, DTTST3 #endif +#if !defined W3_COAWST_MODEL IF ( DTTST1.LT.0. .OR. DTTST2.LT.0. .OR. DTTST3.LT.0. ) THEN IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1002) CALL EXTCDE ( 3 ) END IF +#endif IF ( DTTST2.EQ.0..AND. ITIME.EQ.0 ) THEN IDACT(7:7) = 'F' TOFRST = TIME @@ -1026,6 +1027,9 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & IF ( DTTST .EQ. 0. ) THEN IT0 = 0 IF ( .NOT.FLZERO ) ITIME = ITIME - 1 +#ifdef W3_COAWST_MODEL + IF ( .NOT.FLZERO ) ITIME_COAWST = ITIME_COAWST - 1 +#endif NT = 0 ELSE IT0 = 1 @@ -1069,6 +1073,9 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & call print_memcheck(memunit, 'memcheck_____:'//' WW3_WAVE TIME LOOP 0') ! ITIME = ITIME + 1 +#ifdef W3_COAWST_MODEL + IF ( .NOT.FLZERO ) ITIME_COAWST = ITIME_COAWST + 1 +#endif ! DTG = REAL(NINT(DTGA+DTRES+0.0001)) DTRES = DTRES + DTGA - DTG @@ -1117,7 +1124,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_TIMINGS CALL PRINT_MY_TIME("W3WAVE, step 6.4.1") #endif +#ifdef W3_WAVES_OCEAN +#else CALL W3UCUR ( FLFRST ) +#endif call print_memcheck(memunit, 'memcheck_____:'//' WW3_WAVE TIME LOOP 3b') @@ -1131,13 +1141,27 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_DEBUGDCXDX WRITE(740+IAPROC,*) 'Before call to UG_GRADIENT for assigning DCXDX/DCXDY array' #endif +#ifdef W3_CURSP + DO IP=1,NK + CALL UG_GRADIENTS(CXTH(:,IP), DCXDXTH(:,:,IP), DCXDYTH(:,:,IP)) + CALL UG_GRADIENTS(CYTH(:,IP), DCYDXTH(:,:,IP), DCYDYTH(:,:,IP)) + END DO +#else CALL UG_GRADIENTS(CX, DCXDX, DCXDY) CALL UG_GRADIENTS(CY, DCYDX, DCYDY) +#endif UGDTUPDATE=.TRUE. CFLXYMAX = 0. ELSE +#ifdef W3_CURSP + DO IP=1,NK + CALL W3DZXY(CXTH(1:UBOUND(CX,1),IP),'m/s',DCXDXTH(:,:,IP), DCXDYTH(:,:,IP)) !CX GRADIENT + CALL W3DZXY(CYTH(1:UBOUND(CY,1),IP),'m/s',DCYDXTH(:,:,IP), DCYDYTH(:,:,IP)) !CY GRADIENT + END DO +#else CALL W3DZXY(CX(1:UBOUND(CX,1)),'m/s',DCXDX, DCXDY) !CX GRADIENT CALL W3DZXY(CY(1:UBOUND(CY,1)),'m/s',DCYDX, DCYDY) !CY GRADIENT +#endif ENDIF !! End GTYPE ! call print_memcheck(memunit, 'memcheck_____:'//' WW3_WAVE TIME LOOP 4') @@ -1553,6 +1577,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & TWS(JSEA), PHIOC(JSEA), TMP1, D50, PSIC, TMP2, & PHIBBL(JSEA), TMP3, TMP4, PHICE(JSEA), & TAUOCX(JSEA), TAUOCY(JSEA), WNMEAN(JSEA), & +#ifdef W3_COAWST_MODEL + PHIBRKX(JSEA), PHIBRKY(JSEA), QB(JSEA), & + PHICAPX(JSEA), PHICAPY(JSEA), & +#endif RHOAIR(ISEA), ASF(ISEA)) IF (.not. LSLOC) THEN VSTOT(:,JSEA) = VSioDummy @@ -1770,12 +1798,21 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & DCDX(:,IY,IXrel), DCDY(:,IY,IXrel), VA(:,JSEA)) #endif #ifdef W3_PR2 +# ifdef W3_CURSP + CALL W3KTP2 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & + CG(:,ISEA), WN(:,ISEA), DEPTH, & + DDDX(IY,IXrel), DDDY(IY,IXrel), CXTH(ISEA,:), & + CYTH(ISEA,:), DCXDXTH(IY,IXrel,:), DCXDYTH(IY,IXrel,:), & + DCYDXTH(IY,IXrel,:), DCYDYTH(IY,IXrel,:), & + DCDX(:,IY,IXrel), DCDY(:,IY,IXrel), VA(:,JSEA)) +# else CALL W3KTP2 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & CG(:,ISEA), WN(:,ISEA), DEPTH, & DDDX(IY,IXrel), DDDY(IY,IXrel), CX(ISEA), & CY(ISEA), DCXDX(IY,IXrel), DCXDY(IY,IXrel), & DCYDX(IY,IXrel), DCYDY(IY,IXrel), & DCDX(:,IY,IXrel), DCDY(:,IY,IXrel), VA(:,JSEA)) +# endif #endif #ifdef W3_PR3 CALL W3KTP3 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & @@ -2093,12 +2130,21 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & DCDX(:,IY,IXrel), DCDY(:,IY,IXrel), VA(:,JSEA)) #endif #ifdef W3_PR2 +# ifdef W3_CURSP + CALL W3KTP2 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & + CG(:,ISEA), WN(:,ISEA), DEPTH, & + DDDX(IY,IXrel), DDDY(IY,IXrel), CXTH(ISEA,:), & + CYTH(ISEA,:), DCXDXTH(IY,IXrel,:), DCXDYTH(IY,IXrel,:), & + DCYDXTH(IY,IXrel,:), DCYDYTH(IY,IXrel,:), & + DCDX(:,IY,IXrel), DCDY(:,IY,IXrel), VA(:,JSEA)) +# else CALL W3KTP2 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & CG(:,ISEA), WN(:,ISEA), DEPTH, & DDDX(IY,IXrel), DDDY(IY,IXrel), CX(ISEA), & CY(ISEA), DCXDX(IY,IXrel), DCXDY(IY,IXrel), & DCYDX(IY,IXrel), DCYDY(IY,IXrel), & DCDX(:,IY,IXrel), DCDY(:,IY,IXrel), VA(:,JSEA)) +# endif #endif #ifdef W3_PR3 CALL W3KTP3 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & @@ -2227,6 +2273,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & TWS(JSEA),PHIOC(JSEA), TMP1, D50, PSIC, TMP2, & PHIBBL(JSEA), TMP3, TMP4, PHICE(JSEA), & TAUOCX(JSEA), TAUOCY(JSEA), WNMEAN(JSEA), & +#ifdef W3_COAWST_MODEL + PHIBRKX(JSEA), PHIBRKY(JSEA), QB(JSEA), & + PHICAPX(JSEA), PHICAPY(JSEA), & +#endif RHOAIR(ISEA), ASF(ISEA)) ELSE #endif @@ -2253,6 +2303,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & TWS(JSEA), PHIOC(JSEA), TMP1, D50, PSIC,TMP2, & PHIBBL(JSEA), TMP3, TMP4 , PHICE(JSEA), & TAUOCX(JSEA), TAUOCY(JSEA), WNMEAN(JSEA), & +#ifdef W3_COAWST_MODEL + PHIBRKX(JSEA), PHIBRKY(JSEA), QB(JSEA), & + PHICAPX(JSEA), PHICAPY(JSEA), & +#endif RHOAIR(ISEA), ASF(ISEA)) #ifdef W3_PDLIB END IF @@ -2303,6 +2357,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & END DO IF (IT.GT.0) DTG=DTGTEMP #endif + + + + ! ! ! 3.8 Update global time step. @@ -2315,7 +2373,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & DTG = DTTST / REAL(NT-IT) END IF ! - IF ( FLACT .AND. IT.NE.NT .AND. IAPROC.EQ.NAPLOG .and. verboselog) THEN + IF ( FLACT .AND. IT.NE.NT .AND. IAPROC.EQ.NAPLOG ) THEN CALL STME21 ( TIME , IDTIME ) IF ( IDLAST .NE. TIME(1) ) THEN WRITE (NDSO,900) ITIME, IPASS, IDTIME(01:19), IDACT, OUTID @@ -2335,7 +2393,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #endif ! ! - END DO ! DO IT = IT0, NT + END DO #ifdef W3_TIMINGS CALL PRINT_MY_TIME("W3WAVE, step 6.21.1") @@ -2356,31 +2414,6 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! Delay if data assimilation time. ! ! -#ifdef W3_PIO - if (dsec21(time,tend) == 0.0) then ! req'd in case waves are running in slow loop - - if (use_historync) then - floutg = .false. - floutg2 = .false. - if (histwr) then - call w3cprt (imod) - call w3outg (va, flpfld, .true., .false. ) - call write_history(tend) - end if - end if - - if (use_restartnc) then - if (rstwr) then - call set_user_timestring(tend,user_timestring) - fname = trim(user_restfname)//trim(user_timestring)//'.nc' - call write_restart(trim(fname), va, mapsta+8*mapst2) - end if - end if - - end if -#endif - - IF ( TOFRST(1) .EQ. -1 ) THEN DTTST = 1. ELSE @@ -2408,33 +2441,30 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! ! 4.b Processing and MPP preparations ! - if (.not. use_historync) then - IF ( FLOUT(1) ) THEN - FLOUTG = DSEC21(TIME,TONEXT(:,1)).EQ.0. - ELSE - FLOUTG = .FALSE. - END IF - ! - IF ( FLOUT(7) ) THEN - FLOUTG2 = DSEC21(TIME,TONEXT(:,7)).EQ.0. - ELSE - FLOUTG2 = .FALSE. - END IF - ! - FLPART = .FALSE. - IF ( FLOUT(1) .AND. FLPFLD ) FLPART = FLPART .OR. DSEC21(TIME,TONEXT(:,1)).EQ.0. - IF ( FLOUT(6) ) FLPART = FLPART .OR. DSEC21(TIME,TONEXT(:,6)).EQ.0. - ! + IF ( FLOUT(1) ) THEN + FLOUTG = DSEC21(TIME,TONEXT(:,1)).EQ.0. + ELSE + FLOUTG = .FALSE. + END IF + ! + IF ( FLOUT(7) ) THEN + FLOUTG2 = DSEC21(TIME,TONEXT(:,7)).EQ.0. + ELSE + FLOUTG2 = .FALSE. + END IF + ! + FLPART = .FALSE. + IF ( FLOUT(1) .AND. FLPFLD ) FLPART = FLPART .OR. DSEC21(TIME,TONEXT(:,1)).EQ.0. + IF ( FLOUT(6) ) FLPART = FLPART .OR. DSEC21(TIME,TONEXT(:,6)).EQ.0. + ! #ifdef W3_T - WRITE (NDST,9042) LOCAL, FLPART, FLOUTG + WRITE (NDST,9042) LOCAL, FLPART, FLOUTG #endif - ! - IF ( LOCAL .AND. FLPART ) CALL W3CPRT ( IMOD ) - IF ( LOCAL .AND. (FLOUTG .OR. FLOUTG2) ) then - CALL W3OUTG ( VA, FLPFLD, FLOUTG, FLOUTG2 ) - end if - end if ! if (.not. use_historync) then ! + IF ( LOCAL .AND. FLPART ) CALL W3CPRT ( IMOD ) + IF ( LOCAL .AND. (FLOUTG .OR. FLOUTG2) ) then + CALL W3OUTG ( VA, FLPFLD, FLOUTG, FLOUTG2 ) + end if ! #ifdef W3_MPI FLGMPI = .FALSE. @@ -2442,7 +2472,8 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #endif ! #ifdef W3_MPI - IF ( (FLOUTG) .OR. (FLOUTG2 .AND. SBSED) ) THEN + IF ( ( (DSEC21(TIME,TONEXT(:,1)).EQ.0.) .AND. FLOUT(1) ) .OR. & + ( (DSEC21(TIME,TONEXT(:,7)).EQ.0.) .AND. FLOUT(7) .AND. SBSED ) ) THEN IF (.NOT. LPDLIB) THEN IF (NRQGO.NE.0 ) THEN #endif @@ -2503,35 +2534,33 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #endif ! #ifdef W3_MPI - if (.not. use_restartnc) then - IF ( FLOUT(4) .AND. NRQRS.NE.0 ) THEN - IF ( DSEC21(TIME,TONEXT(:,4)).EQ.0. ) THEN - CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI ) - FLGMPI(4) = .TRUE. - NRQMAX = MAX ( NRQMAX , NRQRS ) + IF ( FLOUT(4) .AND. NRQRS.NE.0 ) THEN + IF ( DSEC21(TIME,TONEXT(:,4)).EQ.0. ) THEN + CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI ) + FLGMPI(4) = .TRUE. + NRQMAX = MAX ( NRQMAX , NRQRS ) #endif #ifdef W3_MPIT - WRITE (NDST,9043) '4 ', NRQRS, NRQMAX, NAPRST + WRITE (NDST,9043) '4 ', NRQRS, NRQMAX, NAPRST #endif #ifdef W3_MPI - END IF END IF + END IF #endif - ! + ! #ifdef W3_MPI - IF ( FLOUT(8) .AND. NRQRS.NE.0 ) THEN - IF ( DSEC21(TIME,TONEXT(:,8)).EQ.0. ) THEN - CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI ) - FLGMPI(8) = .TRUE. - NRQMAX = MAX ( NRQMAX , NRQRS ) + IF ( FLOUT(8) .AND. NRQRS.NE.0 ) THEN + IF ( DSEC21(TIME,TONEXT(:,8)).EQ.0. ) THEN + CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI ) + FLGMPI(8) = .TRUE. + NRQMAX = MAX ( NRQMAX , NRQRS ) #endif #ifdef W3_MPIT - WRITE (NDST,9043) '8 ', NRQRS, NRQMAX, NAPRST + WRITE (NDST,9043) '8 ', NRQRS, NRQMAX, NAPRST #endif #ifdef W3_MPI - END IF END IF - end if ! if (.not. use_restartnc) + END IF #endif ! #ifdef W3_MPI @@ -2569,6 +2598,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & call print_memcheck(memunit, 'memcheck_____:'//' WW3_WAVE AFTER TIME LOOP 2') ! ! 4.c Reset next output time + ! TOFRST(1) = -1 TOFRST(2) = 0 @@ -2590,7 +2620,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_SBS .OR. ( J .EQ. 7 ) & #endif - .and. .not. use_historync) THEN + ) THEN IF ( IAPROC .EQ. NAPFLD ) THEN #ifdef W3_MPI IF ( FLGMPI(1) ) CALL MPI_WAITALL ( NRQGO2, IRQGO2, STATIO, IERR_MPI ) @@ -2600,11 +2630,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_SBS IF ( J .EQ. 1 ) THEN #endif - CALL W3IOGO( 'WRITE', NDS(7), ITEST, IMOD & -#ifdef W3_ASCII - ,NDS(14) & -#endif - ) + CALL W3IOGO( 'WRITE', NDS(7), ITEST, IMOD ) #ifdef W3_SBS ENDIF #endif @@ -2635,11 +2661,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! Gets the necessary spectral data ! CALL W3IOPE ( VA ) - CALL W3IOPO ( 'WRITE', NDS(8), ITEST, IMOD & -#ifdef W3_ASCII - ,NDS(15) & -#endif - ) + CALL W3IOPO ( 'WRITE', NDS(8), ITEST, IMOD ) END IF ! ELSE IF ( J .EQ. 3 ) THEN @@ -2647,7 +2669,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! Track output ! CALL W3IOTR ( NDS(11), NDS(12), VA, IMOD ) - ELSE IF ( J .EQ. 4 .and. .not. use_restartnc) THEN + ELSE IF ( J .EQ. 4 ) THEN CALL W3IORS ('HOT', NDS(6), XXX, IMOD, FLOUT(8) ) ITEST = RSTYPE ELSE IF ( J .EQ. 5 ) THEN @@ -2728,7 +2750,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! If there is a second stream of restart files then J=8 and FLOUT(8)=.TRUE. J=8 - IF ( FLOUT(J) .and. .not. use_restartnc) THEN + IF ( FLOUT(J) ) THEN ! ! 4.d Perform output ! @@ -2791,7 +2813,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! ! 5. Update log file ------------------------------------------------ / ! - IF ( IAPROC.EQ.NAPLOG .and. verboselog) THEN + IF ( IAPROC.EQ.NAPLOG ) THEN ! CALL STME21 ( TIME , IDTIME ) IF ( FLCUR ) THEN @@ -2827,6 +2849,16 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & IDACT = ' ' OUTID = ' ' FLACT = .FALSE. +#if defined W3_AIR_WAVES || defined W3_WAVES_OCEAN + ! jcw bottom of wavemd calling the coupler + ! IMOD is the grid number, ITIME is a bad counter. It steps for + ! updates to the forcings. So we made a clean counter. + IF ( (ITIME_COAWST.EQ.0) .OR. (.NOT.FLZERO) ) THEN + IF (IMOD.eq.Nwav_grids) THEN + CALL COAWST_CPL (ITIME_COAWST) + END IF + END IF +#endif ! ! 6. If time is not ending time, branch back to 2 ------------------- / ! @@ -2844,7 +2876,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & WRITE (SCREEN,951) STTIME END IF - IF ( IAPROC .EQ. NAPLOG .and. verboselog) WRITE (NDSO,902) + IF ( IAPROC .EQ. NAPLOG ) WRITE (NDSO,902) ! DEALLOCATE(FIELD) DEALLOCATE(TAUWX, TAUWY) diff --git a/model/src/w3wavset.F90 b/model/src/w3wavset.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3wdasmd.F90 b/model/src/w3wdasmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/w3wdatmd.F90 b/model/src/w3wdatmd.F90 old mode 100644 new mode 100755 index 848f3858f..3ed8db4e1 --- a/model/src/w3wdatmd.F90 +++ b/model/src/w3wdatmd.F90 @@ -142,6 +142,9 @@ MODULE W3WDATMD INTEGER :: TIME00(2) INTEGER :: TIMEEND(2) #endif +#ifdef W3_COAWST_MODEL + INTEGER :: TIMEEND(2) +#endif #ifdef W3_NL5 INTEGER :: QI5TBEG(2) REAL, POINTER :: QR5TIM0(:), QR5CVK0(:, :), QR5TMIX(:) @@ -175,6 +178,9 @@ MODULE W3WDATMD INTEGER, POINTER :: TIME00(:) INTEGER, POINTER :: TIMEEND(:) #endif +#ifdef W3_COAWST_MODEL + INTEGER, POINTER :: TIMEEND(:) +#endif #ifdef W3_NL5 INTEGER, POINTER :: QI5TBEG(:) REAL, POINTER :: QR5TIM0(:), QR5CVK0(:, :), QR5TMIX(:) @@ -767,6 +773,9 @@ SUBROUTINE W3SETW ( IMOD, NDSE, NDST ) #endif #ifdef W3_NL5 QI5TBEG => WDATAS(IMOD)%QI5TBEG +#endif +#ifdef W3_COAWST_MODEL + TIMEEND => WDATAS(IMOD)%TIMEEND #endif TLEV => WDATAS(IMOD)%TLEV TICE => WDATAS(IMOD)%TICE diff --git a/model/src/wav_comp_nuopc.F90 b/model/src/wav_comp_nuopc.F90 deleted file mode 100644 index fadabb10a..000000000 --- a/model/src/wav_comp_nuopc.F90 +++ /dev/null @@ -1,1788 +0,0 @@ -!> @file wav_comp_nuopc -!! -!> A NUOPC interface for WAVEWATCH III using the CMEPS mediator -!! -!> @details This module contains the base functionality of a mesh-based -!! NUOPC cap for WW3. It contains the only public entry point, SetServices -!! which registers all of the user-provided subroutines accessed by the NUOPC -!! layer. These include the user-routines to advertise the standard names of the -!! import and export fields (InitializeAdvertise), initialize the Wave model and -!! and realize the required fields within the import and export States on an -!! ESMF Mesh (InitializeRealize), fill the export State with initial values -!! (DataInitialize), advance the model one timestep (ModelAdvance), manage the -!! component clock (ModelSetRunClock), and finalize the component model at the -!! (ModelFinalize). -!! -!! The module wav_import_export includes the public routines to advertise and -!! realize the import and export fields called during the InitializeAdvertise and -!! InitializRealize phases, respectively and to fill the import and export states -!! during the ModelAdvance phase. -!! -!! The module wav_shr_mod contains public routines to access basic ESMF functions -!! and reduce code duplication. -!! -!> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov -!> @date 01-05-2022 -module wav_comp_nuopc - - use ESMF - use NUOPC , only : NUOPC_CompDerive, NUOPC_CompSetEntryPoint, NUOPC_CompSpecialize - use NUOPC , only : NUOPC_CompFilterPhaseMap, NUOPC_IsUpdated, NUOPC_IsAtTime - use NUOPC , only : NUOPC_CompAttributeGet, NUOPC_Advertise - use NUOPC , only : NUOPC_SetAttribute, NUOPC_CompAttributeGet, NUOPC_CompAttributeSet - use NUOPC_Model , only : model_routine_SS => SetServices - use NUOPC_Model , only : model_label_Advance => label_Advance - use NUOPC_Model , only : model_label_DataInitialize => label_DataInitialize - use NUOPC_Model , only : model_label_SetRunClock => label_SetRunClock - use NUOPC_Model , only : model_label_Finalize => label_Finalize - use NUOPC_Model , only : NUOPC_ModelGet, SetVM - use wav_kind_mod , only : r8=>shr_kind_r8, i8=>shr_kind_i8, i4=>shr_kind_i4 - use wav_kind_mod , only : cl=>shr_kind_cl, cs=>shr_kind_cs - use wav_import_export , only : advertise_fields, realize_fields, nseal_cpl - use wav_shr_mod , only : state_diagnose, state_getfldptr, state_fldchk - use wav_shr_mod , only : chkerr, state_setscalar, state_getscalar, alarmInit, ymd2date - use wav_shr_mod , only : wav_coupling_to_cice, nwav_elev_spectrum - use wav_shr_mod , only : merge_import, dbug_flag - use w3odatmd , only : nds, iaproc, napout - use w3odatmd , only : runtype, user_histfname, user_restfname, verboselog - use w3odatmd , only : use_historync, use_restartnc, restart_from_binary, logfile_is_assigned - use w3odatmd , only : time_origin, calendar_name, elapsed_secs - use wav_shr_mod , only : casename, multigrid, inst_suffix, inst_index, unstr_mesh, standalone - use wav_wrapper_mod , only : ufs_settimer, ufs_logtimer, ufs_file_setlogunit, wtime -#ifndef W3_CESMCOUPLED - use wmwavemd , only : wmwave - use wmupdtmd , only : wmupd2 - use wmmdatmd , only : mdse, mdst, nrgrd, improc, nmproc, wmsetm, stime, etime - use wmmdatmd , only : nmpscr - use w3updtmd , only : w3uini - use w3adatmd , only : flcold, fliwnd - use shr_is_restart_fh_mod , only : init_is_restart_fh, is_restart_fh, is_restart_fh_type -#endif - use constants , only : is_esmf_component - - implicit none - private ! except - - public :: SetServices - public :: SetVM - private :: InitializeP0 - private :: InitializeAdvertise - private :: InitializeRealize - private :: ModelSetRunClock - private :: ModelAdvance - private :: ModelFinalize - - include "mpif.h" - - !-------------------------------------------------------------------------- - ! Private module data - !-------------------------------------------------------------------------- - - character(len=CL) :: flds_scalar_name = '' !< the default scalar field name - integer :: flds_scalar_num = 0 !< the default number of scalar fields - integer :: flds_scalar_index_nx = 0 !< the default size of the scalar field nx - integer :: flds_scalar_index_ny = 0 !< the default size of the scalar field ny - logical :: profile_memory = .false. !< default logical to control use of ESMF - !! memory profiling - - logical :: root_task = .false. !< logical to indicate root task -#ifdef W3_CESMCOUPLED - logical :: cesmcoupled = .true. !< logical to indicate CESM use case -#else - logical :: cesmcoupled = .false. !< logical to indicate non-CESM use case - type(is_restart_fh_type) :: restartfh_info ! For flexible restarts in UFS -#endif - integer, allocatable :: tend(:,:) !< the ending time of ModelAdvance when - !! run with multigrid=true - integer :: ymd !< current year-month-day - integer :: tod !< current time of day (sec) - integer :: time0(2) !< start time stored as yyyymmdd,hhmmss - integer :: timen(2) !< end time stored as yyyymmdd,hhmmss - integer :: nu_timer !< simple timer log, unused except by UFS - logical :: runtimelog = .false. !< logical flag for writing runtime log files - character(*), parameter :: modName = "(wav_comp_nuopc)" !< the name of this module - character(*), parameter :: u_FILE_u = & !< a character string for an ESMF log message - __FILE__ - - !=============================================================================== -contains - !=============================================================================== - !> The public entry point. The NUOPC SetService method registers all of the - !! user-provided subroutines in the module with the NUOPC layer - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine SetServices(gcomp, rc) - type(ESMF_GridComp) :: gcomp - integer, intent(out) :: rc - - character(len=*),parameter :: subname=trim(modName)//':(SetServices) ' - - rc = ESMF_SUCCESS - call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - ! the NUOPC gcomp component will register the generic methods - call NUOPC_CompDerive(gcomp, model_routine_SS, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! switching to IPD versions - call ESMF_GridCompSetEntryPoint(gcomp, ESMF_METHOD_INITIALIZE, & - userRoutine=InitializeP0, phase=0, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! set entry point for methods that require specific implementation - call NUOPC_CompSetEntryPoint(gcomp, ESMF_METHOD_INITIALIZE, & - phaseLabelList=(/"IPDv01p1"/), userRoutine=InitializeAdvertise, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call NUOPC_CompSetEntryPoint(gcomp, ESMF_METHOD_INITIALIZE, & - phaseLabelList=(/"IPDv01p3"/), userRoutine=InitializeRealize, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! attach specializing method(s) - - call NUOPC_CompSpecialize(gcomp, specLabel=model_label_DataInitialize, & - specRoutine=DataInitialize, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call NUOPC_CompSpecialize(gcomp, specLabel=model_label_Advance, & - specRoutine=ModelAdvance, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_MethodRemove(gcomp, label=model_label_SetRunClock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call NUOPC_CompSpecialize(gcomp, specLabel=model_label_SetRunClock, & - specRoutine=ModelSetRunClock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call NUOPC_CompSpecialize(gcomp, specLabel=model_label_Finalize, & - specRoutine=ModelFinalize, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine SetServices - - !=============================================================================== - !> Switch to IPDv01 by filtering all other phaseMap entries - !! - !> @details Called by NUOPC to set the version of the Initialize Phase Definition - !! (IPD) to use. - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[in] importState an ESMF_State object for import fields - !! @param[in] exportState an ESMF_State object for export fields - !! @param[in] clock an ESMF_Clock object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine InitializeP0(gcomp, importState, exportState, clock, rc) - type(ESMF_GridComp) :: gcomp - type(ESMF_State) :: importState, exportState - type(ESMF_Clock) :: clock - integer, intent(out) :: rc - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! Switch to IPDv01 by filtering all other phaseMap entries - - call NUOPC_CompFilterPhaseMap(gcomp, ESMF_METHOD_INITIALIZE, acceptStringList=(/"IPDv01p"/), rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - end subroutine InitializeP0 - - !=============================================================================== - !> Read configuration attributes and advertise the import/export fields - - !> @details Called by NUOPC to read configuration attributes and to advertise the - !! import and export fields. The configuration attributes are used to control run - !! time settings, such as ESMF memory profiling, additional debug logging, multigrid - !! mode and character strings for specific use cases. A set of configuration attributes - !! is also read to describe any scalar fields to be added to a state. For coupling - !! with the wave model, only a scalar field for the dimensions of the wave model - !! is required. The scalar field is added to the export state to communicate to the - !! CMEPS mediator the domain dimensions of the wave model in order to write - !! mediator history and restart files. The attribute ScalarFieldName sets the name - !! of the scalar field in the export state, the ScalarFieldCount sets the - !! dimensionality of the scalar field and the ScalarFieldIdxGridNX (NY) set the - !! index of the NX or NY dimension in the scalar field. - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[in] importState an ESMF_State object for import fields - !! @param[in] exportState an ESMF_State object for export fields - !! @param[in] clock an ESMF_Clock object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) - - use wav_shr_flags, only : w3_pdlib_flag - - ! input/output arguments - type(ESMF_GridComp) :: gcomp - type(ESMF_State) :: importState, exportState - type(ESMF_Clock) :: clock - integer, intent(out) :: rc - - ! local variables - character(len=CL) :: logmsg - logical :: isPresent, isSet - character(len=CL) :: cvalue - character(len=*), parameter :: subname=trim(modName)//':(InitializeAdvertise) ' - !------------------------------------------------------------------------------- - - call ufs_settimer(wtime) - rc = ESMF_SUCCESS - call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - !---------------------------------------------------------------------------- - ! advertise fields - !---------------------------------------------------------------------------- - - call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldName", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - flds_scalar_name = trim(cvalue) - call ESMF_LogWrite(trim(subname)//' flds_scalar_name = '//trim(flds_scalar_name), ESMF_LOGMSG_INFO) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - call ESMF_LogWrite(trim(subname)//'Need to set attribute ScalarFieldName',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - - call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldCount", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - read(cvalue, *) flds_scalar_num - write(logmsg,*) flds_scalar_num - call ESMF_LogWrite(trim(subname)//' flds_scalar_num = '//trim(logmsg), ESMF_LOGMSG_INFO) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - call ESMF_LogWrite(trim(subname)//'Need to set attribute ScalarFieldCount',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - - call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldIdxGridNX", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - read(cvalue,*) flds_scalar_index_nx - write(logmsg,*) flds_scalar_index_nx - call ESMF_LogWrite(trim(subname)//' : flds_scalar_index_nx = '//trim(logmsg), ESMF_LOGMSG_INFO) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - call ESMF_LogWrite(trim(subname)//'Need to set attribute ScalarFieldIdxGridNX',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - - call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldIdxGridNY", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - read(cvalue,*) flds_scalar_index_ny - write(logmsg,*) flds_scalar_index_ny - call ESMF_LogWrite(trim(subname)//' : flds_scalar_index_ny = '//trim(logmsg), ESMF_LOGMSG_INFO) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - call ESMF_LogWrite(trim(subname)//'Need to set attribute ScalarFieldIdxGridNY',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - - call NUOPC_CompAttributeGet(gcomp, name="ProfileMemory", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - read(cvalue,*) profile_memory - call ESMF_LogWrite(trim(subname)//': profile_memory = '//trim(cvalue), ESMF_LOGMSG_INFO) - end if - - call NUOPC_CompAttributeGet(gcomp, name="merge_import", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - if (trim(cvalue) == '.true.') then - merge_import = .true. - end if - end if - if (merge_import) then - if (w3_pdlib_flag) then - call ESMF_LogWrite('Merge_import is not valid with PDLIB', ESMF_LOGMSG_INFO) - call ESMF_Finalize(endflag=ESMF_END_ABORT) - end if - end if - - call NUOPC_CompAttributeGet(gcomp, name='dbug_flag', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - read(cvalue,*) dbug_flag - end if - write(logmsg,'(A,i6)') trim(subname)//': Wave cap dbug_flag is ',dbug_flag - call ESMF_LogWrite(trim(logmsg), ESMF_LOGMSG_INFO) - - ! Get casename - call NUOPC_CompAttributeGet(gcomp, name="case_name", value=casename, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - write(logmsg,'(A)') trim(subname)//': Wave casename setting : '//trim(casename) - call ESMF_LogWrite(trim(logmsg), ESMF_LOGMSG_INFO) - - ! Get component instance - call NUOPC_CompAttributeGet(gcomp, name="inst_suffix", isPresent=isPresent, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - if (isPresent) then - call NUOPC_CompAttributeGet(gcomp, name="inst_suffix", value=inst_suffix, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - cvalue = inst_suffix(2:) - read(cvalue, *) inst_index - else - inst_suffix = "" - inst_index=1 - endif - - ! Get Multigrid setting - multigrid = .false. - call NUOPC_CompAttributeGet(gcomp, name='multigrid', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - multigrid=(trim(cvalue)=="true") - end if - write(logmsg,'(A,l)') trim(subname)//': Wave multigrid setting is ',multigrid - call ESMF_LogWrite(trim(logmsg), ESMF_LOGMSG_INFO) - - ! Determine wave-ice coupling - wav_coupling_to_cice = .false. - call NUOPC_CompAttributeGet(gcomp, name='wav_coupling_to_cice', value=cvalue, isPresent=isPresent, & - isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - read(cvalue,*) wav_coupling_to_cice - end if - write(logmsg,'(A,l)') trim(subname)//': Wave wav_coupling_to_cice setting is ',wav_coupling_to_cice - call ESMF_LogWrite(trim(logmsg), ESMF_LOGMSG_INFO) - - ! Determine Runtime logging - call NUOPC_CompAttributeGet(gcomp, name="RunTimeLog", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) runtimelog=(trim(cvalue)=="true") - write(logmsg,*) runtimelog - call ESMF_LogWrite(trim(subname)//': RunTimeLog = '//trim(logmsg), ESMF_LOGMSG_INFO) - if (runtimelog) then - call ufs_file_setLogUnit('./log.ww3.timer',nu_timer,runtimelog) - end if - - ! Determine if this is standalone run - call NUOPC_CompAttributeGet(gcomp, name="standalone", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - if (trim(cvalue) == '.true.' .or. trim(cvalue) == 'true') then - standalone = .true. - end if - end if - write(logmsg,'(A,l)') trim(subname)//': Standalone setting is ', standalone - call ESMF_LogWrite(trim(logmsg), ESMF_LOGMSG_INFO) - - ! Determine verbose native WW3 logging - call NUOPC_CompAttributeGet(gcomp, name="verboselog", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) verboselog=(trim(cvalue)=="true") - write(logmsg,*) verboselog - call ESMF_LogWrite('WW3_cap: Verbose WW3 native logging is = '//trim(logmsg), ESMF_LOGMSG_INFO) - - call advertise_fields(importState, exportState, flds_scalar_name, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine InitializeAdvertise - - !======================================================================== - !> Realize the import and export fields. - - !> @details Called by NUOPC to realize the import and export fields - !! for the wave model. After the wave model initializes, the global index - !! for all sea points is retrieved using the WW3 mapsf array. A global index - !! array is then constructed which contains both land and sea points, with - !! the land points at the end of the array. An ESMF Distgrid object is created - !! using this global index array. The distgrid is then transfered to the ESMF - !! Mesh provided for the wave model domain. If the provided Mesh does not contain - !! a grid mask, then the internal WW3 mask is transfered to the Mesh, otherwise - !! the mask provided with the mesh file will be used. This mask is used by - !! CMEPS to map to and from the wave model. Once the mesh has been created, the - !! advertised fields are realized on the mesh. - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[in] importState an ESMF_State object for import fields - !! @param[in] exportState an ESMF_State object for export fields - !! @param[in] clock an ESMF_Clock object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) - - use w3odatmd , only : w3nout, w3seto, naproc, naperr - use w3timemd , only : stme21 - use w3adatmd , only : w3naux, w3seta - use w3idatmd , only : w3seti, w3ninp - use w3gdatmd , only : nk, nseal, nsea, nx, ny, mapsf, w3nmod, w3setg - use w3gdatmd , only : rlgtype, ungtype, gtype - use w3wdatmd , only : va, time, w3ndat, w3dimw, w3setw - use w3parall , only : init_get_isea -#ifndef W3_CESMCOUPLED - use wminitmd , only : wminit, wminitnml - use wmunitmd , only : wmuget, wmuset -#endif - use wav_shel_inp , only : set_shel_io - use wav_history_mod , only : wav_history_init - use wav_pio_mod , only : wav_pio_init - use wav_shr_mod , only : diagnose_mesh, write_meshdecomp, wav_loginit -#ifdef W3_PDLIB - use yowNodepool , only : ng -#endif - - ! input/output variables - type(ESMF_GridComp) :: gcomp - type(ESMF_State) :: importState - type(ESMF_State) :: exportState - type(ESMF_Clock) :: clock - integer, intent(out) :: rc - - ! local variables - type(ESMF_DistGrid) :: distGrid - type(ESMF_Mesh) :: Emesh - type(ESMF_Array) :: elemMaskArray - type(ESMF_VM) :: vm - type(ESMF_Time) :: esmfTime, startTime, currTime, stopTime - type(ESMF_TimeInterval) :: TimeOffset - type(ESMF_TimeInterval) :: TimeStep - type(ESMF_Calendar) :: calendar - type(ESMF_Info) :: info - character(CL) :: cvalue - integer :: shrlogunit - integer :: yy,mm,dd,hh,ss - integer :: start_ymd ! start date (yyyymmdd) - integer :: start_tod ! start time of day (sec) - integer :: stop_ymd ! stop date (yyyymmdd) - integer :: stop_tod ! stop time of day (sec) - integer :: ix, iy - character(CL) :: starttype - integer :: ntrace(2) - integer :: n, jsea,isea, ncnt - integer :: nlnd, nlnd_global, nlnd_local - integer :: my_lnd_start, my_lnd_end - integer, allocatable, target :: mask_global(:) - integer, allocatable, target :: mask_local(:) - integer, allocatable :: gindex_lnd(:) - integer, allocatable :: gindex_sea(:) - integer, allocatable :: gindex(:) - integer(i4) :: maskmin - integer(i4), pointer :: meshmask(:) - character(23) :: dtme21 - integer :: iam, mpi_comm, num_threads - character(ESMF_MAXSTR) :: msgString - character(ESMF_MAXSTR) :: diro - character(CL) :: logfile - logical :: local - integer :: imod, idsi, idso, idss, idst, idse - integer :: mds(15) ! Note that nds is set to this in w3initmod - integer :: stdout - integer :: petcount - real(r8) :: toff - logical :: isPresent, isSet - character(ESMF_MAXSTR) :: preamb = './' - character(ESMF_MAXSTR) :: ifname = 'ww3_multi.inp' - character(len=*), parameter :: subname = '(wav_comp_nuopc:InitializeRealize)' - ! ------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - call ufs_settimer(wtime) - !-------------------------------------------------------------------- - ! Set up data structures - !-------------------------------------------------------------------- - - if (.not. multigrid) then - call w3nmod ( 1, 6, 6 ) - call w3ndat ( 6, 6 ) - call w3naux ( 6, 6 ) - call w3nout ( 6, 6 ) - call w3ninp ( 6, 6 ) - - call w3setg ( 1, 6, 6 ) - call w3setw ( 1, 6, 6 ) - call w3seta ( 1, 6, 6 ) - call w3seto ( 1, 6, 6 ) - call w3seti ( 1, 6, 6 ) - end if - - !---------------------------------------------------------------------------- - ! Generate local mpi comm - !---------------------------------------------------------------------------- - - call ESMF_GridCompGet(gcomp, vm=vm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_VMGet(vm, mpiCommunicator=mpi_comm, peCount=petcount, localPet=iam, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_InfoGetFromHost(gcomp, info=info, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_InfoGet(info, key="/NUOPC/Hint/PePerPet/MaxCount", value=num_threads, default=1, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - -#ifndef W3_CESMCOUPLED - nmproc = petcount -#else - naproc = petcount -#endif - - ! naproc,iproc, napout, naperr are not available until after wminit -#ifndef W3_CESMCOUPLED - improc = iam + 1 - if (multigrid) then - nmpscr = 1 - is_esmf_component = .true. - else - iaproc = iam + 1 - naproc = nmproc - napout = 1 - naperr = 1 - end if - if (improc == 1) root_task = .true. -#else - iaproc = iam + 1 - napout = 1 - naperr = 1 - if (iaproc == napout) root_task = .true. -#endif - - !-------------------------------------------------------------------- - ! IO set-up - !-------------------------------------------------------------------- - - if (cesmcoupled) then - shrlogunit = 6 - if ( root_task ) then - call NUOPC_CompAttributeGet(gcomp, name="diro", value=diro, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call NUOPC_CompAttributeGet(gcomp, name="logfile", value=logfile, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - open (newunit=stdout, file=trim(diro)//"/"//trim(logfile)) - logfile_is_assigned = .true. - else - stdout = 6 - endif - else - if ( root_task ) then - open (newunit=stdout, file='log.ww3') - logfile_is_assigned = .true. - else - stdout = 6 - end if - end if - - if (.not. multigrid) call set_shel_io(stdout,mds,ntrace) - - if ( root_task ) then - write(stdout,'(a)')' *** WAVEWATCH III Program shell *** ' - write(stdout,'(a)')'===============================================' - write(stdout,'(/)') - write(stdout,'(a,l)')' Wave wav_coupling_to_cice setting is ',wav_coupling_to_cice - end if - - !-------------------------------------------------------------------- - ! Initialize run type - !-------------------------------------------------------------------- - - call NUOPC_CompAttributeGet(gcomp, name='start_type', value=starttype, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if ( trim(starttype) == trim('startup')) then - runtype = "initial" - else if (trim(starttype) == trim('continue') ) then - runtype = "continue" - else if (trim(starttype) == trim('branch')) then - runtype = "branch" - end if - if ( root_task ) then - write(stdout,'(a)') ' WW3 runtype is '//trim(runtype) - end if - call ESMF_LogWrite('WW3 runtype is '//trim(runtype), ESMF_LOGMSG_INFO) - - !-------------------------------------------------------------------- - ! Time initialization - !-------------------------------------------------------------------- - - ! TIME0 = from ESMF clock - ! NOTE - are not setting TIMEN here - - if ( root_task ) then - write(stdout,'(a)')' Time interval : ' - write(stdout,'(a)')'--------------------------------------------------' - end if - - call ESMF_ClockPrint(clock, options="startTime", preString="Model Start Time: ", & - unit=msgString, rc=rc) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - call ESMF_ClockPrint(clock, options="currTime", preString="Model Current Time: ", & - unit=msgString, rc=rc) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - call ESMF_ClockGet( clock, startTime=startTime, currTime=currTime, rc=rc) - TimeOffset = currTime - startTime - call ESMF_TimeIntervalGet(TimeOffset, h_r8=toff, rc=rc) - write(msgstring,'(a,g14.7)')'TimeOffset: CurrTime - StartTime = ',toff - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - ! Initial run or restart run - if ( runtype == "initial") then - call ESMF_ClockGet( clock, startTime=esmfTime, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return -#ifndef W3_CESMCOUPLED - esmfTime = esmfTime + TimeOffset -#endif - else - call ESMF_ClockGet( clock, currTime=esmfTime, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - endif - ! Determine time attributes for history output - call ESMF_TimeGet( startTime, timeString=time_origin, calendar=calendar, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - time_origin = 'seconds since '//time_origin(1:10)//' '//time_origin(12:19) - !call ESMF_ClockGet(clock, calendar=calendar) - if (calendar == ESMF_CALKIND_GREGORIAN) then - calendar_name = 'standard' - else if (calendar == ESMF_CALKIND_NOLEAP) then - calendar_name = 'noleap' - end if - call ESMF_TimeGet( esmfTime, yy=yy, mm=mm, dd=dd, s=start_tod, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ymd2date(yy, mm, dd, start_ymd) - - hh = start_tod/3600 - mm = (start_tod - (hh * 3600))/60 - ss = start_tod - (hh*3600) - (mm*60) - - time0(1) = start_ymd - time0(2) = hh*10000 + mm*100 + ss - - call ESMF_ClockGet( clock, stopTime=stopTime, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeGet( stopTime, yy=yy, mm=mm, dd=dd, s=stop_tod, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ymd2date(yy, mm, dd, stop_ymd) - - hh = stop_tod/3600 - mm = (stop_tod - (hh * 3600))/60 - ss = stop_tod - (hh*3600) - (mm*60) - - timen(1) = stop_ymd - timen(2) = hh*10000 + mm*100 + ss - - call stme21 ( time0 , dtme21 ) - if ( root_task ) then - write (stdout,'(a)')' Starting time : '//trim(dtme21) - write (stdout,'(a,i8,2x,i8)') ' start_ymd, stop_ymd = ',start_ymd, stop_ymd - end if -#ifndef W3_CESMCOUPLED - stime = time0 - etime = timen -#endif - - !-------------------------------------------------------------------- - ! Initialize PIO. This needs to be done prior to the call to w3init - ! in order to read the restart file. The filename strings must also - ! be available - !-------------------------------------------------------------------- - - if (cesmcoupled) then - if (len_trim(inst_suffix) > 0) then - user_restfname = trim(casename)//'.ww3'//trim(inst_suffix)//'.r.' - user_histfname = trim(casename)//'.ww3'//trim(inst_suffix)//'.hi.' - else - user_restfname = trim(casename)//'.ww3.r.' - user_histfname = trim(casename)//'.ww3.hi.' - endif - - ! netcdf is used for CESM history and restart - use_historync = .true. - use_restartnc = .true. - else - call NUOPC_CompAttributeGet(gcomp, name='use_restartnc', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - use_restartnc=(trim(cvalue)=="true") - end if - if (root_task) write(stdout,'(a,l4)') trim(subname)//': Wave use_restartnc setting is ',use_restartnc - - ! user filenaming is required with netcdf restarts or restart_from_binary. If netcdf restarts are not used, - ! only native WW3 file naming is possible - if (use_restartnc) then - user_restfname = trim(casename)//'.ww3.r.' - if (root_task) write(stdout,'(a)') trim(subname)//': Custom restart prefix is '//trim(user_restfname) - end if - - call NUOPC_CompAttributeGet(gcomp, name='use_historync', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - use_historync=(trim(cvalue)=="true") - end if - if (root_task) write(stdout,'(a,l4)') trim(subname)//': Wave use_historync setting is ',use_historync - - ! user filenaming is optional with netcdf output. If netcdf history is not used, only native WW3 - ! naming is possible - if (use_historync) then - call NUOPC_CompAttributeGet(gcomp, name='user_histname', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (trim(cvalue)=="true") then - user_histfname = trim(casename)//'.ww3.hi.' - if (root_task) write(stdout,'(a)') trim(subname)//': Custom history prefix is '//trim(user_histfname) - else - user_histfname = '' - end if - end if - end if ! if (cesmcoupled) - - ! allow startup from binary restarts as special case - if (use_restartnc) then - call NUOPC_CompAttributeGet(gcomp, name='restart_from_binary', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - restart_from_binary=(trim(cvalue)=="true") - end if - if (root_task) write(stdout,'(a,l4)') trim(subname)//': Wave restart_from_binary setting is ',restart_from_binary - end if - - if (use_restartnc .or. use_historync) then - call wav_pio_init(gcomp, mpi_comm, stdout, naproc/num_threads, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - !-------------------------------------------------------------------- - ! Wave model initialization - !-------------------------------------------------------------------- - -#ifndef W3_CESMCOUPLED - if (multigrid) then - call ESMF_UtilIOUnitGet(idsi); open(unit=idsi, status='scratch') - call ESMF_UtilIOUnitGet(idso); open(unit=idso, status='scratch') - call ESMF_UtilIOUnitGet(idss); open(unit=idss, status='scratch') - call ESMF_UtilIOUnitGet(idst); open(unit=idst, status='scratch') - call ESMF_UtilIOUnitGet(idse); open(unit=idse, status='scratch') - close(idsi); close(idso); close(idss); close(idst); close(idse) - - if ( trim(ifname) == 'ww3_multi.nml' ) then - call wminitnml ( idsi, idso, idss, idst, idse, trim(ifname), & - mpi_comm, preamb=preamb ) - else - call wminit ( idsi, idso, idss, idst, idse, trim(ifname), & - mpi_comm, preamb=preamb ) - endif - - allocate(tend(2,nrgrd)) - do imod = 1,nrgrd - tend(1,imod) = etime(1) - tend(2,imod) = etime(2) - end do - call ESMF_LogWrite(trim(subname)//' done = wminit', ESMF_LOGMSG_INFO) - else - call waveinit_ufs(gcomp, stdout, ntrace, mpi_comm, mds, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if -#else - time = time0 - call ESMF_ClockGet( clock, timeStep=timeStep, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call waveinit_cesm(gcomp, ntrace, mpi_comm, mds, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return -#endif - !call mpi_barrier ( mpi_comm, ierr ) - if ( root_task ) then - inquire(unit=stdout, name=logfile) - write(*,'(a)')'WW3 log written to '//trim(logfile) - end if - - if (wav_coupling_to_cice) then - if (nwav_elev_spectrum .gt. nk) then - call ESMF_LogWrite('nwav_elev_spectrum is greater than nk ', ESMF_LOGMSG_INFO) - call ESMF_Finalize(endflag=ESMF_END_ABORT) - end if - end if - - !-------------------------------------------------------------------- - ! Mesh initialization - !-------------------------------------------------------------------- - - if (gtype .eq. ungtype) then - unstr_mesh = .true. - else - unstr_mesh = .false. - end if - - ! Create a global index array for sea points. - ! - ! Note that nsea is the global number of sea points - and nseal is the local - ! number of sea points. For the unstr mesh, the nsea points are on mesh nodes. - ! We will use the gindex to set the element distgrid of a dual mesh. A dual mesh - ! contains the mesh nodes at the center of each element. For the domain decomposition - ! case (PDLIB), set a value of the local sea points on this processor minus the - ! ghost points. -#ifdef W3_PDLIB - nseal_cpl = nseal - ng -#else - nseal_cpl = nseal -#endif - allocate(gindex_sea(nseal_cpl)) - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - gindex_sea(jsea) = ix + (iy-1)*nx - end do - - if (unstr_mesh) then - ! create distGrid from global index array of sea points with no ghost points - DistGrid = ESMF_DistGridCreate(arbSeqIndexList=gindex_sea, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - ! create a global index array for non-sea (i.e. land points) - allocate(mask_global(nx*ny), mask_local(nx*ny)) - mask_local(:) = 0 - mask_global(:) = 0 - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - mask_local(ix + (iy-1)*nx) = 1 - end do - call ESMF_VMAllReduce(vm, sendData=mask_local, recvData=mask_global, count=nx*ny, & - reduceflag=ESMF_REDUCE_MAX, rc=rc) - - nlnd_global = nx*ny - nsea - nlnd_local = nlnd_global / naproc - my_lnd_start = nlnd_local*iam + min(iam, mod(nlnd_global, naproc)) + 1 - if (iam < mod(nlnd_global, naproc)) then - nlnd_local = nlnd_local + 1 - end if - my_lnd_end = my_lnd_start + nlnd_local - 1 - - allocate(gindex_lnd(my_lnd_end - my_lnd_start + 1)) - ncnt = 0 - do n = 1,nx*ny - if (mask_global(n) == 0) then ! this is a land point - ncnt = ncnt + 1 - if (ncnt >= my_lnd_start .and. ncnt <= my_lnd_end) then - gindex_lnd(ncnt - my_lnd_start + 1) = n - end if - end if - end do - deallocate(mask_global) - deallocate(mask_local) - - ! create a global index that includes both sea and land - but put land at the end - nlnd = (my_lnd_end - my_lnd_start + 1) - allocate(gindex(nlnd + nseal_cpl)) - do ncnt = 1,nlnd + nseal - if (ncnt <= nseal_cpl) then - gindex(ncnt) = gindex_sea(ncnt) - else - gindex(ncnt) = gindex_lnd(ncnt-nseal_cpl) - end if - end do - - ! create distGrid from global index array - DistGrid = ESMF_DistGridCreate(arbSeqIndexList=gindex, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - ! get the mesh file name - call NUOPC_CompAttributeGet(gcomp, name='mesh_wav', value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! read in the mesh with the the DistGrid - EMesh = ESMF_MeshCreate(filename=trim(cvalue), fileformat=ESMF_FILEFORMAT_ESMFMESH, & - elementDistgrid=Distgrid,rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (dbug_flag > 5) then - if (unstr_mesh) then - call diagnose_mesh(EMesh, size(gindex_sea), 'EMesh', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - deallocate(gindex_sea) - else - call diagnose_mesh(EMesh, size(gindex), 'EMesh', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - deallocate(gindex) - deallocate(gindex_sea) - deallocate(gindex_lnd) - end if - end if - - if (.not. unstr_mesh) then - ! obtain the mesh mask and find the minimum value across all PEs - call ESMF_MeshGet(EMesh, elementDistgrid=Distgrid, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_DistGridGet(Distgrid, localDe=0, elementCount=ncnt, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - allocate(meshmask(ncnt)) - elemMaskArray = ESMF_ArrayCreate(Distgrid, farrayPtr=meshmask, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_MeshGet(Emesh, elemMaskArray=elemMaskArray, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_VMAllFullReduce(vm, sendData=meshmask, recvData=maskmin, count=ncnt, & - reduceflag=ESMF_REDUCE_MIN, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (maskmin == 1) then - ! replace mesh mask with internal mask - meshmask(:) = 0 - meshmask(1:nseal_cpl) = 1 - call ESMF_MeshSet(mesh=EMesh, elementMask=meshmask, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - end if - - if (dbug_flag > 5) then - call ESMF_ArrayWrite(elemMaskArray, 'meshmask.nc', variableName = 'mask', & - overwrite=.true., rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - deallocate(meshmask) - end if - - if (dbug_flag > 5) then - call write_meshdecomp(Emesh, 'emesh', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - !-------------------------------------------------------------------- - ! Realize the actively coupled fields - !-------------------------------------------------------------------- - call realize_fields(gcomp, mesh=Emesh, flds_scalar_name=flds_scalar_name, & - flds_scalar_num=flds_scalar_num, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - -#ifndef W3_CESMCOUPLED - !TODO: when is this required? - if (multigrid) then - do imod = 1,nrgrd - call w3setg ( imod, mdse, mdst ) - call w3setw ( imod, mdse, mdst ) - call w3seta ( imod, mdse, mdst ) - call w3seti ( imod, mdse, mdst ) - call w3seto ( imod, mdse, mdst ) - call wmsetm ( imod, mdse, mdst ) - local = iaproc .gt. 0 .and. iaproc .le. naproc - if ( local .and. flcold .and. fliwnd ) call w3uini( va ) - enddo - end if -#endif - !-------------------------------------------------------------------- - ! Intialize the list of requested output variables for netCDF output. - ! This needs to occur after mod_def has been read in w3init since - ! some variables are available only if they are defined in the mod_def - !-------------------------------------------------------------------- - - if (use_historync) then - call wav_history_init(stdout) - end if - - !-------------------------------------------------------------------- - ! Write the header string for WW3 native logging - !-------------------------------------------------------------------- - - if (root_task) then - if (verboselog) call wav_loginit(stdout) - end if - - if (root_task) call ufs_logtimer(nu_timer,time,start_tod,'InitializeRealize time: ',runtimelog,wtime) - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine InitializeRealize - - !=============================================================================== - !> Initialize the field values in the export state - !! - !> @details Called by NUOPC to initialize the field values in the export state and - !! the values for the scalar field which describes the wave model global domain - !! size. - !! - !! @param gcomp an ESMF_GridComp object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine DataInitialize(gcomp, rc) - - use wav_import_export, only : calcRoughl - use w3gdatmd , only : nx, ny - - ! input/output variables - type(ESMF_GridComp) :: gcomp - integer, intent(out) :: rc - - ! local variables - type(ESMF_State) :: exportState - real(r8), pointer :: z0rlen(:) - real(r8), pointer :: sw_lamult(:) - real(r8), pointer :: sw_lasl(:) - real(r8), pointer :: sw_ustokes(:) - real(r8), pointer :: sw_vstokes(:) - real(r8), pointer :: wave_elevation_spectrum(:,:) - character(len=*),parameter :: subname = '(wav_comp_nuopc:DataInitialize)' - ! ------------------------------------------------------------------- - - !-------------------------------------------------------------------- - ! Create export state - !-------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - call NUOPC_ModelGet(gcomp, exportState=exportState, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (state_fldchk(exportState, 'Sw_lamult')) then - call state_getfldptr(exportState, 'Sw_lamult', sw_lamult, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_lamult (:) = 1. - endif - if (state_fldchk(exportState, 'Sw_lasl')) then - call state_getfldptr(exportState, 'Sw_lasl', sw_lasl, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! note: the default value of this surface layer averaged Langmuir number - ! should be a large number to be consistent with lamult=1., ustokes=0., - ! and vstokes=0. - sw_lasl (:) = 1.e6 - endif - if (state_fldchk(exportState, 'Sw_ustokes')) then - call state_getfldptr(exportState, 'Sw_ustokes', sw_ustokes, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_ustokes(:) = 0. - endif - if (state_fldchk(exportState, 'Sw_vstokes')) then - call state_getfldptr(exportState, 'Sw_vstokes', sw_vstokes, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_vstokes(:) = 0. - endif - if (state_fldchk(exportState, 'Sw_z0')) then - call state_getfldptr(exportState, 'Sw_z0', z0rlen, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcRoughl(z0rlen) - endif - if (wav_coupling_to_cice) then - call state_getfldptr(exportState, 'Sw_elevation_spectrum', wave_elevation_spectrum, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - wave_elevation_spectrum(:,:) = 0. - endif - - if (.not. unstr_mesh) then - ! Set global grid size scalars in export state - call State_SetScalar(dble(nx), flds_scalar_index_nx, exportState, flds_scalar_name, flds_scalar_num, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call State_SetScalar(dble(ny), flds_scalar_index_ny, exportState, flds_scalar_name, flds_scalar_num, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - if ( dbug_flag > 5) then - call state_diagnose(exportState, 'at DataInitialize ', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine DataInitialize - - !===================================================================== - !> Called by NUOPC to advance the model a single timestep - !! - !> @details At each model advance, the call to import_fields fills the - !! import state with the updated values. If a history alarm is present - !! and ringing, a logical to write a wave history file is set true. The - !! wave model itself is then advanced during which a history file will - !! be written via a call to w3iogonc in place of w3iogo. The export - !! fields at the current model Advance are filled in export_fields - !! - !! @param gcomp an ESMF_GridComp object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine ModelAdvance(gcomp, rc) - - !------------------------ - ! Run WW3 - !------------------------ - - use w3wavemd , only : w3wave - use w3wdatmd , only : time, w3setw - use wav_import_export , only : import_fields, export_fields - use wav_shel_inp , only : odat - use w3odatmd , only : rstwr, histwr - - ! arguments: - type(ESMF_GridComp) :: gcomp - integer, intent(out) :: rc - - ! local variables - type(ESMF_State) :: importState - type(ESMF_State) :: exportState - type(ESMF_Clock) :: clock - type(ESMF_Alarm) :: alarm - type(ESMF_TimeInterval) :: timeStep, elapsedTime - type(ESMF_Time) :: currTime, nextTime, startTime, stopTime - integer :: yy,mm,dd,hh,ss - integer :: imod - logical :: write_restartfh - !integer :: shrlogunit ! original log unit and level - character(ESMF_MAXSTR) :: msgString - character(len=*),parameter :: subname = '(wav_comp_nuopc:ModelAdvance) ' - !------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - !------------ - ! query the Component for its importState, exportState and clock - !------------ - call ESMF_GridCompGet(gcomp, importState=importState, exportState=exportState, clock=clock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_ClockPrint(clock, options="currTime", preString="------>Advancing WAV from: ", & - unit=msgString, rc=rc) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - call ESMF_ClockGet(clock, startTime=startTime, currTime=currTime, timeStep=timeStep, rc=rc) - call ESMF_TimePrint(currTime + timeStep, preString="--------------------------------> to: ", & - unit=msgString, rc=rc) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - - !------------ - ! Determine time info - !------------ - call ESMF_ClockGet( clock, currTime=currTime, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeGet( currTime, yy=yy, mm=mm, dd=dd, s=tod, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ymd2date(yy, mm, dd, ymd) - hh = tod/3600 - mm = (tod - (hh * 3600))/60 - ss = tod - (hh*3600) - (mm*60) - time0(1) = ymd - time0(2) = hh*10000 + mm*100 + ss - if (dbug_flag > 5) then - if ( root_task ) write(nds(1),'(a,3i4,i10)') 'ymd2date currTime wav_comp_nuopc hh,mm,ss,ymd', hh,mm,ss,ymd - end if - if (root_task) call ufs_logtimer(nu_timer,time,tod,'ModelAdvance time since last step: ',runtimelog,wtime) - call ufs_settimer(wtime) - - ! use next time; the NUOPC clock is not updated - ! until the end of the time interval - call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeGet( nextTime, yy=yy, mm=mm, dd=dd, s=tod, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - elapsedTime = nextTime - startTime - call ESMF_TimeIntervalGet(elapsedTime, s_i8=elapsed_secs,rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ymd2date(yy, mm, dd, ymd) - hh = tod/3600 - mm = (tod - (hh * 3600))/60 - ss = tod - (hh*3600) - (mm*60) - - timen(1) = ymd - timen(2) = hh*10000 + mm*100 + ss - - time = time0 -#ifndef W3_CESMCOUPLED - if (multigrid) then - do imod = 1,nrgrd - tend(1,imod) = timen(1) - tend(2,imod) = timen(2) - end do - end if -#endif - - !------------ - ! Obtain import data from import state - !------------ - call import_fields(gcomp, time0, timen, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - !------------ - ! Run the wave model for the given interval - !------------ - if(profile_memory) call ESMF_VMLogMemInfo("Entering WW3 Run : ") - - ! Determine if time to write ww3 restart files - call ESMF_ClockGetAlarm(clock, alarmname='alarm_restart', alarm=alarm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (ESMF_AlarmIsRinging(alarm, rc=rc)) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - rstwr = .true. - call ESMF_AlarmRingerOff( alarm, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - rstwr = .false. - endif -#ifndef W3_CESMCOUPLED - call is_restart_fh(clock, restartfh_info, write_restartfh) - if (write_restartfh) rstwr = .true. -#endif - - ! Determine if time to write ww3 history files - call ESMF_ClockGetAlarm(clock, alarmname='alarm_history', alarm=alarm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (ESMF_AlarmIsRinging(alarm, rc=rc)) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - histwr = .true. - call ESMF_AlarmRingerOff( alarm, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - histwr = .false. - endif - - ! Advance the wave model -#ifndef W3_CESMCOUPLED - if (multigrid) then - call wmwave ( tend ) - else - call w3wave ( 1, odat, timen ) - end if -#else - call w3wave ( 1, odat, timen ) -#endif - if(profile_memory) call ESMF_VMLogMemInfo("Exiting WW3 Run : ") - - !------------ - ! Create export state - !------------ - - call export_fields(gcomp, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - if (root_task) call ufs_logtimer(nu_timer,time,tod,'ModelAdvance time: ',runtimelog,wtime) - call ufs_settimer(wtime) - - end subroutine ModelAdvance - - !=============================================================================== - !> Called by NUOPC to manage the model clock - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine ModelSetRunClock(gcomp, rc) - - use wav_shel_inp , only : odat - ! input/output variables - type(ESMF_GridComp) :: gcomp - integer, intent(out) :: rc - - ! local variables - type(ESMF_Clock) :: mclock, dclock - type(ESMF_Time) :: mcurrtime, dcurrtime - type(ESMF_Time) :: mstoptime - type(ESMF_Time) :: mstarttime - type(ESMF_TimeInterval) :: mtimestep, dtimestep - character(ESMF_MAXSTR) :: msgString - logical :: isPresent - logical :: isSet - character(len=256) :: cvalue - character(len=256) :: restart_option ! Restart option units - integer :: restart_n ! Number until restart interval - integer :: restart_ymd ! Restart date (YYYYMMDD) - type(ESMF_ALARM) :: restart_alarm - character(len=256) :: stop_option ! Stop option units - integer :: stop_n ! Number until stop interval - integer :: stop_ymd ! Stop date (YYYYMMDD) - type(ESMF_ALARM) :: stop_alarm - character(len=256) :: history_option ! History option units - integer :: history_n ! Number until history interval - integer :: history_ymd ! History date (YYYYMMDD) - type(ESMF_ALARM) :: history_alarm - character(len=128) :: name - integer :: alarmcount, dt_cpl - character(len=*),parameter :: subname=trim(modName)//':(ModelSetRunClock) ' - - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - ! query the Component for its clocks - call NUOPC_ModelGet(gcomp, driverClock=dclock, modelClock=mclock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_ClockGet(dclock, currTime=dcurrtime, timeStep=dtimestep, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_ClockGet(mclock, currTime=mcurrtime, timeStep=mtimestep, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - !-------------------------------- - ! force model clock currtime and timestep to match driver and set stoptime - !-------------------------------- - - mstoptime = mcurrtime + dtimestep - call ESMF_ClockSet(mclock, currTime=dcurrtime, timeStep=dtimestep, stopTime=mstoptime, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - !-------------------------------- - ! set restart, stop and history alarms - !-------------------------------- - - call ESMF_ClockGetAlarmList(mclock, alarmlistflag=ESMF_ALARMLIST_ALL, alarmCount=alarmCount, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (alarmCount == 0) then - - call ESMF_ClockGet(mclock, startTime=mStartTime, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_GridCompGet(gcomp, name=name, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_LogWrite(trim(subname)//'setting alarms for ' // trim(name), ESMF_LOGMSG_INFO) - - !---------------- - ! Restart alarm - !---------------- - call NUOPC_CompAttributeGet(gcomp, name="restart_option", isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - call NUOPC_CompAttributeGet(gcomp, name="restart_option", value=restart_option, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call NUOPC_CompAttributeGet(gcomp, name="restart_n", value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) restart_n - - call NUOPC_CompAttributeGet(gcomp, name="restart_ymd", value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) restart_ymd - - call alarmInit(mclock, restart_alarm, restart_option, & - opt_n = restart_n, & - opt_ymd = restart_ymd, & - RefTime = mCurrTime, & - alarmname = 'alarm_restart', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_AlarmSet(restart_alarm, clock=mclock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return -#ifndef W3_CESMCOUPLED - call ESMF_TimeIntervalGet( dtimestep, s=dt_cpl, rc=rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call init_is_restart_fh(mcurrTime, dt_cpl, root_task, restartfh_info) -#endif - - end if - - !---------------- - ! Stop alarm - !---------------- - call NUOPC_CompAttributeGet(gcomp, name="stop_option", value=stop_option, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call NUOPC_CompAttributeGet(gcomp, name="stop_n", value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) stop_n - - call NUOPC_CompAttributeGet(gcomp, name="stop_ymd", value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) stop_ymd - - call alarmInit(mclock, stop_alarm, stop_option, & - opt_n = stop_n, & - opt_ymd = stop_ymd, & - RefTime = mCurrTime, & - alarmname = 'alarm_stop', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_AlarmSet(stop_alarm, clock=mclock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - !---------------- - ! History alarm - !---------------- - call NUOPC_CompAttributeGet(gcomp, name="history_option", isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - call NUOPC_CompAttributeGet(gcomp, name='history_option', value=history_option, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call NUOPC_CompAttributeGet(gcomp, name="history_n", value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) history_n - - call NUOPC_CompAttributeGet(gcomp, name="history_ymd", value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*) history_ymd - - call alarmInit(mclock, history_alarm, history_option, & - opt_n = history_n, & - opt_ymd = history_ymd, & - RefTime = mStartTime, & - alarmname = 'alarm_history', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_AlarmSet(history_alarm, clock=mclock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - ! If attribute is not present - write history output at stride frequency - history_option = 'nseconds' - history_n = odat(3) - history_ymd = -999 - call alarmInit(mclock, history_alarm, history_option, & - opt_n = history_n, & - opt_ymd = history_ymd, & - RefTime = mStartTime, & - alarmname = 'alarm_history', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_AlarmSet(history_alarm, clock=mclock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - write(msgString,'(a,i10)')' History will be written at field%stride freq ',history_n - call ESMF_LogWrite(trim(subname)//trim(msgString), ESMF_LOGMSG_INFO) - end if - end if - - !-------------------------------- - ! Advance model clock to trigger alarms then reset model clock back to currtime - !-------------------------------- - - call ESMF_ClockAdvance(mclock,rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_ClockSet(mclock, currTime=dcurrtime, timeStep=dtimestep, stopTime=mstoptime, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine ModelSetRunClock - - !=============================================================================== - !> Called by NUOPC at the end of the run to clean up. - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine ModelFinalize(gcomp, rc) - - ! input/output variables - type(ESMF_GridComp) :: gcomp - integer, intent(out) :: rc - - ! local variables - character(*), parameter :: F00 = "('(ww3_comp_nuopc) ',8a)" - character(*), parameter :: F91 = "('(ww3_comp_nuopc) ',73('-'))" - character(len=*),parameter :: subname=trim(modName)//':(ModelFinalize) ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - if ( root_task ) then - write(nds(1),F91) - write(nds(1),F00) 'WW3: end of main integration loop' - write(nds(1),F91) - end if - - call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - if(root_task) call ufs_logtimer(nu_timer,timen,tod,'ModelFinalize time: ',runtimelog,wtime) - - end subroutine ModelFinalize - - !=============================================================================== - !> Initialize the wave model for the CESM use case - !! - !> @details Calls public routine read_shel_config to read the ww3_shel.inp or - !! ww3_shel.nml file. Calls w3init to initialize the wave model - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[in] ntrace unit numbers for trace - !! @param[in] mpi_comm an mpi communicator - !! @param[in] mds unit numbers - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine waveinit_cesm(gcomp, ntrace, mpi_comm, mds, rc) - - ! Initialize ww3 for cesm (called from InitializeRealize) - - use w3initmd , only : w3init - use w3gdatmd , only : dtcfl, dtcfli, dtmax, dtmin - use w3idatmd , only : inflags1, inflags2 - use w3odatmd , only : initfile - use wav_shr_mod , only : casename - use wav_shr_mod , only : inst_index, inst_name, inst_suffix - use wav_shr_mod , only : wav_coupling_to_cice - use wav_shel_inp , only : read_shel_config - use wav_shel_inp , only : npts, odat, iprt, x, y, pnames, prtfrm - use wav_shel_inp , only : flgrd, flgd, flgr2, flg2 - - ! input/output variables - type(ESMF_GridComp) :: gcomp - integer , intent(in) :: ntrace(:) - integer , intent(in) :: mpi_comm - integer , intent(in) :: mds(:) - integer , intent(out) :: rc - - ! local variables - integer :: ierr - integer :: unitn ! namelist unit number - !integer :: shrlogunit - logical :: isPresent, isSet - real(r8) :: dtmax_in ! Maximum overall time step. - real(r8) :: dtmin_in ! Minimum dynamic time step for source - real(r8) :: dtcfl_in ! Maximum CFL time step X-Y propagation. - real(r8) :: dtcfli_in ! Maximum CFL time step X-Y propagation intra-spectral - integer :: stdout - character(len=*), parameter :: subname = '(wav_comp_nuopc:wavinit_cesm)' - ! ------------------------------------------------------------------- - - namelist /ww3_inparm/ initfile, dtcfl, dtcfli, dtmax, dtmin - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - inst_name = "WAV"//trim(inst_suffix) - ! Read namelist (set initfile in w3odatmd) - if ( root_task ) then - open (newunit=unitn, file='wav_in'//trim(inst_suffix), status='old') - read (unitn, ww3_inparm, iostat=ierr) - if (ierr /= 0) then - call ESMF_LogWrite(trim(subname)//' problem reading ww3_inparm namelist',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - end if - close (unitn) - - ! Write out input - stdout = mds(1) - write(stdout,*) - write(stdout,'(a)')' --------------------------------------------------' - write(stdout,'(a)')' Initializations : ' - write(stdout,'(a)')' --------------------------------------------------' - write(stdout,'(a)')' Case Name is '//trim(casename) - write(stdout,'(a)') trim(subname)//' inst_name = '//trim(inst_name) - write(stdout,'(a)') trim(subname)//' inst_suffix = '//trim(inst_suffix) - write(stdout,'(a,i4)') trim(subname)//' inst_index = ',inst_index - write(stdout,'(a)')' Read in ww3_inparm namelist from wav_in'//trim(inst_suffix) - write(stdout,'(a)')' initfile = '//trim(initfile) - write(stdout,'(a, 2x, f10.3)')' dtcfl = ',dtcfl - write(stdout,'(a, 2x, f10.3)')' dtcfli = ',dtcfli - write(stdout,'(a, 2x, f10.3)')' dtmax = ',dtmax - write(stdout,'(a, 2x, f10.3)')' dtmin = ',dtmin - write(stdout,*) - end if - - ! ESMF does not have a broadcast for chars - call mpi_bcast(initfile, len(initfile), MPI_CHARACTER, 0, mpi_comm, ierr) - if (ierr /= MPI_SUCCESS) then - call ESMF_LogWrite(trim(subname)//' error in mpi broadcast for initfile ', & - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - end if - call mpi_bcast(dtcfl, 1, MPI_INTEGER, 0, mpi_comm, ierr) - if (ierr /= MPI_SUCCESS) then - call ESMF_LogWrite(trim(subname)//' error in mpi broadcast for dtcfl ',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - end if - call mpi_bcast(dtcfli, 1, MPI_INTEGER, 0, mpi_comm, ierr) - if (ierr /= MPI_SUCCESS) then - call ESMF_LogWrite(trim(subname)//' error in mpi broadcast for dtcfli ',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - end if - call mpi_bcast(dtmax, 1, MPI_INTEGER, 0, mpi_comm, ierr) - if (ierr /= MPI_SUCCESS) then - call ESMF_LogWrite(trim(subname)//' error in mpi broadcast for dtmax ',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - end if - call mpi_bcast(dtmin, 1, MPI_INTEGER, 0, mpi_comm, ierr) - if (ierr /= MPI_SUCCESS) then - call ESMF_LogWrite(trim(subname)//' error in mpi broadcast for dtmax ',& - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - end if - dtmax_in = dtmax - dtcfl_in = dtcfl - dtcfli_in = dtcfli - dtmin_in = dtmin - - ! Read the namelist settings in ww3_shel.nml - call ESMF_LogWrite(trim(subname)//' call read_shel_config', ESMF_LOGMSG_INFO) - call read_shel_config(mpi_comm, mds, time0_overwrite=time0, timen_overwrite=timen) - - ! NOTE: that wavice_coupling must be set BEFORE the call to advertise_fields - ! So the current mechanism is to force the inflags1(-7) and inflags1(-3) be set to true - ! if wavice coupling is active - ! NOTE: - ! inflags1(-7) = nml_input%forcing%ice_param1 - ! inflags1(-3) = nml_input%forcing%ice_param5 - - ! Force inflags2 to be false - otherwise inflags2 will be set to inflags1 and answers will change - ! Need to set this to .false. to avoid scaling of ice in section 4. of w3srcemed. - ! inflags2(4) is true if ice concentration was ever read during this simulation - ! Currently IC4 is used in cesm - inflags2(:) = .false. - if (wav_coupling_to_cice) then - inflags2(4) = .true. ! inflags2(4) is true if ice concentration was read during initialization - inflags1(-7) = .true. ! ice thickness - inflags2(-7) = .true. ! ice thickness - inflags1(-3) = .true. ! ice floe size - inflags2(-3) = .true. ! ice floe size - else - inflags1(-7) = .false. ! ice thickness - inflags2(-7) = .false. ! ice thickness - inflags1(-3) = .false. ! ice floe size - inflags2(-3) = .false. ! ice floe size - end if - - ! Read in initial/restart data and initialize the model - ! ww3 read initialization occurs in w3iors (which is called by initmd in module w3initmd) - ! ww3 always starts up from a 'restart' file type - ! For a startup (including hybrid) or branch run the restart file is obtained from 'initfile' - ! For a continue run, the restart filename upon read is created from the time(1:2) array - ! flgr2 is flags for coupling output, not ready yet so keep .false. - ! 1 is model number - ! IsMulti does not appear to be used, setting to .false. - - call ESMF_LogWrite(trim(subname)//' call w3init', ESMF_LOGMSG_INFO) - call w3init ( 1, .false., 'ww3', mds, ntrace, odat, flgrd, flgr2, flgd, flg2, & - npts, x, y, pnames, iprt, prtfrm, mpi_comm ) - - ! NOTE: these need to be set again AFTER w3init is run - since these values will be overwritten - ! by the read of mod_def.ww3 - dtmax = dtmax_in - dtcfl = dtcfl_in - dtcfli = dtcfli_in - dtmin = dtmin_in - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - end subroutine waveinit_cesm - - !=============================================================================== - !> Initialize the wave model for the UWM use case - !! - !> @details Calls public routine read_shel_config to read the ww3_shel.inp or - !! ww3_shel.nml file. Calls w3init to initialize the wave model - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[in] stdout the logfile unit on the root task - !! @param[in] ntrace unit numbers for trace - !! @param[in] mpi_comm an mpi communicator - !! @param[in] mds unit numbers - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine waveinit_ufs( gcomp, stdout, ntrace, mpi_comm, mds, rc) - - ! Initialize ww3 for ufs (called from InitializeRealize) - - use w3odatmd , only : fnmpre, addrstflds, rstfldlist, rstfldcnt - use w3gdatmd , only : dtcfl, dtcfli, dtmax, dtmin - use w3initmd , only : w3init - use w3servmd , only : strsplit - use w3timemd , only : set_user_timestring - use wav_shel_inp , only : read_shel_config - use wav_shel_inp , only : npts, odat, iprt, x, y, pnames, prtfrm - use wav_shel_inp , only : flgrd, flgd, flgr2, flg2 - - ! input/output variables - type(ESMF_GridComp) :: gcomp - integer, intent(in) :: stdout - integer, intent(in) :: ntrace(:) - integer, intent(in) :: mpi_comm - integer, intent(in) :: mds(:) - integer, intent(out) :: rc - - ! local variables - logical :: isPresent, isSet - character(len=CL) :: cvalue - character(len=CL) :: logmsg - character(len=CL) :: fldrst = '' - character(len=100) :: tmplist(100) = '' - integer :: dt_in(4) - integer :: i, cnt - character(len=*), parameter :: subname = '(wav_comp_nuopc:wavinit_ufs)' - ! ------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - fnmpre = './' - if (root_task) write(stdout,'(a)') trim(subname)//' call read_shel_config' - call read_shel_config(mpi_comm, mds, time0_overwrite=time0, timen_overwrite=timen, rstfldlist=fldrst) - - ! Define any additional restart fields - if(len_trim(fldrst) > 0) then - addrstflds = .true. - call strsplit(fldrst, tmplist) - do i = 1,size(rstfldlist) - rstfldlist(i) = trim(tmplist(i)) - if (len_trim(rstfldlist(i)) > 0) rstfldcnt = rstfldcnt + 1 - end do - end if - - if (root_task) write(stdout,'(a,/)') trim(subname)//' call w3init' - call w3init ( 1, .false., 'ww3', mds, ntrace, odat, flgrd, flgr2, flgd, flg2, & - npts, x, y, pnames, iprt, prtfrm, mpi_comm ) - - write(cvalue,'(4f10.1)')dtmax,dtcfl,dtcfli,dtmin - write(logmsg,'(a)')trim(subname)//': WW3 timesteps from mod_def '//trim(cvalue) - - call NUOPC_CompAttributeGet(gcomp, name='dt_in', isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - call NUOPC_CompAttributeGet(gcomp, name='dt_in', value=cvalue, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - read(cvalue,*)dt_in - dtmax = real(dt_in(1),4) - dtcfl = real(dt_in(2),4) - dtcfli = real(dt_in(3),4) - dtmin = real(dt_in(4),4) - end if - - ! log info - if (root_task) then - write(stdout,'(a)') trim(logmsg) - write(cvalue,'(4f10.1)')dtmax,dtcfl,dtcfli,dtmin - write(stdout,'(a)') trim(subname)//': WW3 timesteps '//trim(cvalue) - - if (addrstflds) then - do i = 1,rstfldcnt - write(stdout,'(a,i3,a)') trim(subname)//': WW3 additional restart field : ',i,' '//trim(rstfldlist(i)) - end do - else - write(stdout,'(/,a)') trim(subname)//': WW3 NO additional restart fields will be written ' - end if - end if - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - end subroutine waveinit_ufs - -end module wav_comp_nuopc diff --git a/model/src/wav_history_mod.F90 b/model/src/wav_history_mod.F90 deleted file mode 100644 index e7a3e71a9..000000000 --- a/model/src/wav_history_mod.F90 +++ /dev/null @@ -1,914 +0,0 @@ -!> @file wav_history_mod -!! -!> @brief Manage gridded model output as netCDF using PIO -!! -!> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov -!> @date 01-05-2022 -module wav_history_mod - - use constants , only : rade - use w3parall , only : init_get_isea - use w3gdatmd , only : xgrd, ygrd - use w3gdatmd , only : nk, nx, ny, mapsf, mapsta, nsea - use w3odatmd , only : undef - use w3adatmd , only : mpi_comm_wave - use wav_import_export , only : nseal_cpl - use wav_pio_mod , only : pio_iotype, pio_ioformat, wav_pio_subsystem - use wav_pio_mod , only : handle_err, wav_pio_initdecomp - use pio - use netcdf - - implicit none - - private - - public :: wav_history_init - public :: write_history - public :: varatts - public :: outvars - - ! used/reused in module - integer :: isea, jsea, ix, iy, ierr - - real, allocatable, target :: var3ds(:,:) - real, allocatable, target :: var3dm(:,:) - real, allocatable, target :: var3dp(:,:) - real, allocatable, target :: var3dk(:,:) - - ! output variable for (nx,ny,nz) fields - real, pointer :: var3d(:,:) - - type(file_desc_t) :: pioid - type(var_desc_t) :: varid - type(io_desc_t) :: iodesc2d !2d only - type(io_desc_t) :: iodesc2dint !2d only, integer - type(io_desc_t) :: iodesc3ds !s-axis variables - type(io_desc_t) :: iodesc3dm !m-axis variables - type(io_desc_t) :: iodesc3dp !p-axis variables - type(io_desc_t) :: iodesc3dk !k-axis variables - - ! variable attributes - type :: varatts - character(len= 5) :: tag - character(len=10) :: var_name - character(len=48) :: long_name - character(len=10) :: unit_name - character(len= 2) :: dims - logical :: validout - end type varatts - - type(varatts), dimension(:), allocatable :: outvars - - !=============================================================================== -contains - !=============================================================================== - !> Write the requested list of fields using parallel netCDF via PIO - !! - !! @param[in] timen the timestamp for the file - !! - !> author DeniseWorthen@noaa.gov - !> @date 08-26-2024 - subroutine write_history ( timen ) - - use w3odatmd , only : fnmpre - use w3gdatmd , only : filext, trigp, ntri, ungtype, gtype - use w3servmd , only : extcde - use w3wdatmd , only : wlv, ice, icef, iceh, berg, ust, ustdir, asf, rhoair - use w3gdatmd , only : e3df, p2msf, us3df, usspf - use w3odatmd , only : noswll - use w3odatmd , only : ndso, iaproc - use w3adatmd , only : dw, ua, ud, as, cx, cy, taua, tauadir - use w3adatmd , only : hs, wlm, t02, t0m1, t01, fp0, thm, ths, thp0, wbt, wnmean - use w3adatmd , only : dtdyn - use w3adatmd , only : fcut, aba, abd, uba, ubd, sxx, syy, sxy - use w3adatmd , only : phs, ptp, plp, pdir, psi, pws, pwst, pnr - use w3adatmd , only : pthp0, pqp, ppe, pgw, psw, ptm1, pt1, pt2 - use w3adatmd , only : pep, tauox, tauoy, tauwix, tauwiy - use w3adatmd , only : phiaw, phioc, tusx, tusy, prms, tpms - use w3adatmd , only : ussx, ussy, mssx, mssy, mscx, mscy - use w3adatmd , only : tauwnx, tauwny, charn, tws, bhd - use w3adatmd , only : phibbl, taubbl, whitecap, bedforms, cge, ef - use w3adatmd , only : cflxymax, cflthmax, cflkmax, p2sms, us3d - use w3adatmd , only : hsig, phice, tauice - use w3adatmd , only : stmaxe, stmaxd, hmaxe, hcmaxe, hmaxd, hcmaxd, ussp, tauocx, tauocy - use w3adatmd , only : usshx, usshy - - use w3timemd , only : set_user_timestring - use w3odatmd , only : time_origin, calendar_name, elapsed_secs - use w3odatmd , only : user_histfname - !TODO: use unstr_mesh from wav_shr_mod; currently fails due to CI - !use wav_shr_mod , only : unstr_mesh - - integer, intent(in) :: timen(2) - - ! local variables - integer ,target :: dimid3(3) - integer ,target :: dimid4(4) - integer ,pointer :: dimid(:) - character(len=1024) :: fname - character(len=12) :: vname - character(len=16) :: user_timestring !YYYY-MM-DD-SSSSS - - integer :: n, xtid, ytid, xeid, ztid, stid, mtid, ptid, ktid, timid, nmode - integer :: len_s, len_m, len_p, len_k - logical :: s_axis = .false., m_axis = .false., p_axis = .false., k_axis = .false. - - integer :: lmap(nseal_cpl) - - ! ------------------------------------------------------------- - ! create the netcdf file - ! ------------------------------------------------------------- - - ! native WW3 file naming - if (len_trim(user_histfname) == 0) then - write(fname,'(a,i8.8,a1,i6.6,a)')trim(fnmpre),timen(1),'.',timen(2),'.out_grd.ww3.nc' - else - call set_user_timestring(timen,user_timestring) - fname = trim(user_histfname)//trim(user_timestring)//'.nc' - end if - - pioid%fh = -1 - nmode = pio_clobber - ! only applies to classic NETCDF files. - if (pio_iotype == PIO_IOTYPE_NETCDF .or. pio_iotype == PIO_IOTYPE_PNETCDF) then - nmode = ior(nmode,pio_ioformat) - endif - ierr = pio_createfile(wav_pio_subsystem, pioid, pio_iotype, trim(fname), nmode) - call handle_err(ierr, 'pio_create') - if (iaproc == 1) write(ndso,'(a)')' Writing history file '//trim(fname) - - len_s = noswll + 1 ! 0:noswll - len_m = p2msf(3)-p2msf(2) + 1 ! ? - len_p = usspf(2) ! partitions - len_k = e3df(3,1) - e3df(2,1) + 1 ! frequencies - - ! define the dimensions required for the requested gridded fields - do n = 1,size(outvars) - if (outvars(n)%validout) then - if(trim(outvars(n)%dims) == 's')s_axis = .true. - if(trim(outvars(n)%dims) == 'm')m_axis = .true. - if(trim(outvars(n)%dims) == 'p')p_axis = .true. - if(trim(outvars(n)%dims) == 'k')k_axis = .true. - end if - end do - - ! allocate arrays if needed - if (s_axis) allocate(var3ds(1:nseal_cpl,len_s)) - if (m_axis) allocate(var3dm(1:nseal_cpl,len_m)) - if (p_axis) allocate(var3dp(1:nseal_cpl,len_p)) - if (k_axis) allocate(var3dk(1:nseal_cpl,len_k)) - - ierr = pio_def_dim(pioid, 'nx', nx, xtid) - ierr = pio_def_dim(pioid, 'ny', ny, ytid) - ierr = pio_def_dim(pioid, 'time', PIO_UNLIMITED, timid) - - if (s_axis) ierr = pio_def_dim(pioid, 'noswll', len_s, stid) - if (m_axis) ierr = pio_def_dim(pioid, 'nm' , len_m, mtid) - if (p_axis) ierr = pio_def_dim(pioid, 'np' , len_p, ptid) - if (k_axis) ierr = pio_def_dim(pioid, 'freq' , len_k, ktid) - if (gtype .eq. ungtype) then - ierr = pio_def_dim(pioid, 'ne' , ntri, xeid) - ierr = pio_def_dim(pioid, 'nn' , 3, ztid) - end if - - ! define the time variable - ierr = pio_def_var(pioid, 'time', PIO_DOUBLE, (/timid/), varid) - call handle_err(ierr,'def_timevar') - ierr = pio_put_att(pioid, varid, 'units', trim(time_origin)) - call handle_err(ierr,'def_time_units') - ierr = pio_put_att(pioid, varid, 'calendar', trim(calendar_name)) - call handle_err(ierr,'def_time_calendar') - - ! define the spatial axis variables (lat,lon) - ierr = pio_def_var(pioid, 'lon', PIO_DOUBLE, (/xtid,ytid/), varid) - call handle_err(ierr,'def_lonvar') - ierr = pio_put_att(pioid, varid, 'units', 'degrees_east') - ierr = pio_def_var(pioid, 'lat', PIO_DOUBLE, (/xtid,ytid/), varid) - call handle_err(ierr,'def_latvar') - ierr = pio_put_att(pioid, varid, 'units', 'degrees_north') - - ! add mapsta - ierr = pio_def_var(pioid, 'mapsta', PIO_INT, (/xtid, ytid, timid/), varid) - call handle_err(ierr, 'def_mapsta') - ierr = pio_put_att(pioid, varid, 'units', 'unitless') - ierr = pio_put_att(pioid, varid, 'long_name', 'map status') - ierr = pio_put_att(pioid, varid, '_FillValue', nf90_fill_int) - - if (gtype .eq. ungtype) then - ierr = pio_def_var(pioid, 'nconn', PIO_INT, (/ztid,xeid/), varid) - call handle_err(ierr,'def_nodeconnections') - ierr = pio_put_att(pioid, varid, 'units', 'unitless') - ierr = pio_put_att(pioid, varid, 'long_name', 'node connectivity') - end if - - ! define the variables - dimid3(1:2) = (/xtid, ytid/) - dimid4(1:2) = (/xtid, ytid/) - do n = 1,size(outvars) - if (trim(outvars(n)%dims) == 's') then - dimid4(3:4) = (/stid, timid/) - dimid => dimid4 - else if (trim(outvars(n)%dims) == 'm') then - dimid4(3:4) = (/mtid, timid/) - dimid => dimid4 - else if (trim(outvars(n)%dims) == 'p') then - dimid4(3:4) = (/ptid, timid/) - dimid => dimid4 - else if (trim(outvars(n)%dims) == 'k') then - dimid4(3:4) = (/ktid, timid/) - dimid => dimid4 - else - dimid3(3) = timid - dimid => dimid3 - end if - - ierr = pio_def_var(pioid, trim(outvars(n)%var_name), PIO_REAL, dimid, varid) - call handle_err(ierr, 'define variable '//trim((outvars(n)%var_name))) - ierr = pio_put_att(pioid, varid, 'units' , trim(outvars(n)%unit_name)) - ierr = pio_put_att(pioid, varid, 'long_name' , trim(outvars(n)%long_name)) - ierr = pio_put_att(pioid, varid, '_FillValue', undef) - end do - ! end variable definitions - ierr = pio_enddef(pioid) - call handle_err(ierr, 'end variable definition') - - call wav_pio_initdecomp(iodesc2d) - call wav_pio_initdecomp(iodesc2dint, use_int=.true.) - if (s_axis)call wav_pio_initdecomp(len_s, iodesc3ds) - if (m_axis)call wav_pio_initdecomp(len_m, iodesc3dm) - if (p_axis)call wav_pio_initdecomp(len_p, iodesc3dp) - if (k_axis)call wav_pio_initdecomp(len_k, iodesc3dk) - - ! write the time and spatial axis values (lat,lon,time) - ierr = pio_inq_varid(pioid, 'lat', varid) - call handle_err(ierr, 'inquire variable lat ') - ierr = pio_put_var(pioid, varid, transpose(ygrd)) - call handle_err(ierr, 'put lat') - - ierr = pio_inq_varid(pioid, 'lon', varid) - call handle_err(ierr, 'inquire variable lon ') - ierr = pio_put_var(pioid, varid, transpose(xgrd)) - call handle_err(ierr, 'put lon') - - ierr = pio_inq_varid(pioid, 'time', varid) - call handle_err(ierr, 'inquire variable time ') - ierr = pio_put_var(pioid, varid, (/1/), real(elapsed_secs,8)) - call handle_err(ierr, 'put time') - - if (gtype .eq. ungtype) then - ierr = pio_inq_varid(pioid, 'nconn', varid) - call handle_err(ierr, 'inquire variable nconn ') - ierr = pio_put_var(pioid, varid, trigp) - call handle_err(ierr, 'put trigp') - end if - - ! TODO: tried init decomp w/ use_int=.true. but getting garbage - ! land values....sea values OK - ! mapsta is global - lmap(:) = 0 - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - lmap(jsea) = mapsta(iy,ix) - end do - ierr = pio_inq_varid(pioid, 'mapsta', varid) - call handle_err(ierr, 'inquire variable mapsta ') - call pio_setframe(pioid, varid, int(1,kind=Pio_Offset_Kind)) - call pio_write_darray(pioid, varid, iodesc2dint, lmap, ierr) - call handle_err(ierr, 'put variable mapsta') - - ! write the requested variables - do n = 1,size(outvars) - vname = trim(outvars(n)%var_name) - if (trim(outvars(n)%dims) == 's') then - var3d => var3ds - ! Group 4 - if(vname .eq. 'PHS') call write_var3d(iodesc3ds, vname, phs (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PTP') call write_var3d(iodesc3ds, vname, ptp (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PLP') call write_var3d(iodesc3ds, vname, plp (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PDIR') call write_var3d(iodesc3ds, vname, pdir (1:nseal_cpl,0:noswll), fldir='true' ) - if(vname .eq. 'PSI') call write_var3d(iodesc3ds, vname, psi (1:nseal_cpl,0:noswll), fldir='true' ) - if(vname .eq. 'PWS') call write_var3d(iodesc3ds, vname, pws (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PDP') call write_var3d(iodesc3ds, vname, pthp0 (1:nseal_cpl,0:noswll), fldir='true' ) - if(vname .eq. 'PQP') call write_var3d(iodesc3ds, vname, pqp (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PPE') call write_var3d(iodesc3ds, vname, ppe (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PGW') call write_var3d(iodesc3ds, vname, pgw (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PSW') call write_var3d(iodesc3ds, vname, psw (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PTM1') call write_var3d(iodesc3ds, vname, ptm1 (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PT1') call write_var3d(iodesc3ds, vname, pt1 (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PT2') call write_var3d(iodesc3ds, vname, pt2 (1:nseal_cpl,0:noswll) ) - if(vname .eq. 'PEP') call write_var3d(iodesc3ds, vname, pep (1:nseal_cpl,0:noswll) ) - - else if (trim(outvars(n)%dims) == 'm') then ! m axis - var3d => var3dm - ! Group 6 - if (vname .eq. 'P2SMS') call write_var3d(iodesc3dm, vname, p2sms (1:nseal_cpl,p2msf(2):p2msf(3)) ) - - else if (trim(outvars(n)%dims) == 'p') then ! partition axis - var3d => var3dp - ! Group 6 - if (vname .eq. 'USSPX') call write_var3d(iodesc3dp, vname, ussp (1:nseal_cpl, 1:usspf(2)) ) - if (vname .eq. 'USSPY') call write_var3d(iodesc3dp, vname, ussp (1:nseal_cpl,nk+1:nk+usspf(2)) ) - - else if (trim(outvars(n)%dims) == 'k') then ! freq axis - var3d => var3dk - ! Group 3 - if(vname .eq. 'EF') call write_var3d(iodesc3dk, vname, ef (1:nseal_cpl,e3df(2,1):e3df(3,1)) ) - if(vname .eq. 'TH1M') call write_var3d(iodesc3dk, vname, ef (1:nseal_cpl,e3df(2,2):e3df(3,2)) ) - if(vname .eq. 'STH1M') call write_var3d(iodesc3dk, vname, ef (1:nseal_cpl,e3df(2,3):e3df(3,3)) ) - if(vname .eq. 'TH2M') call write_var3d(iodesc3dk, vname, ef (1:nseal_cpl,e3df(2,4):e3df(3,4)) ) - if(vname .eq. 'STH2M') call write_var3d(iodesc3dk, vname, ef (1:nseal_cpl,e3df(2,5):e3df(3,5)) ) - !TODO: wn has reversed indices (1:nk, 1:nseal_cpl) - ! Group 6 - if (vname .eq. 'US3DX') call write_var3d(iodesc3dk, vname, us3d (1:nseal_cpl, us3df(2):us3df(3)) ) - if (vname .eq. 'US3DY') call write_var3d(iodesc3dk, vname, us3d (1:nseal_cpl,nk+us3df(2):nk+us3df(3)) ) - - else - ! Group 1 - if (vname .eq. 'DW') call write_var2d(vname, dw (1:nsea), init0='false', global='true') - if (vname .eq. 'CX') call write_var2d(vname, cx (1:nsea), init0='false', global='true') - if (vname .eq. 'CY') call write_var2d(vname, cy (1:nsea), init0='false', global='true') - if (vname .eq. 'UAX') call write_var2d(vname, ua (1:nsea), dir=cos(ud(1:nsea)), init0='false', global='true') - if (vname .eq. 'UAY') call write_var2d(vname, ua (1:nsea), dir=sin(ud(1:nsea)), init0='false', global='true') - if (vname .eq. 'AS') call write_var2d(vname, as (1:nsea), init0='false', global='true') - if (vname .eq. 'WLV') call write_var2d(vname, wlv (1:nsea), init0='false', global='true') - if (vname .eq. 'ICE') call write_var2d(vname, ice (1:nsea), init0='false', global='true') - if (vname .eq. 'IBG') call write_var2d(vname, berg (1:nsea), init0='false', global='true') - if (vname .eq. 'TAUX') call write_var2d(vname, taua (1:nsea), dir=cos(tauadir(1:nsea)), init0='false', global='true') - if (vname .eq. 'TAUY') call write_var2d(vname, taua (1:nsea), dir=sin(tauadir(1:nsea)), init0='false', global='true') - if (vname .eq. 'RHOAIR') call write_var2d(vname, rhoair (1:nsea), init0='false', global='true') - if (vname .eq. 'ICEH') call write_var2d(vname, iceh (1:nsea), init0='false', global='true') - if (vname .eq. 'ICEF') call write_var2d(vname, icef (1:nsea), init0='false', global='true') - - ! Group 2 - if (vname .eq. 'HS') call write_var2d(vname, hs (1:nseal_cpl) ) - if (vname .eq. 'WLM') call write_var2d(vname, wlm (1:nseal_cpl) ) - if (vname .eq. 'T02') call write_var2d(vname, t02 (1:nseal_cpl) ) - if (vname .eq. 'T0M1') call write_var2d(vname, t0m1 (1:nseal_cpl) ) - if (vname .eq. 'T01') call write_var2d(vname, t01 (1:nseal_cpl) ) - if (vname .eq. 'FP0') call write_var2d(vname, fp0 (1:nseal_cpl) ) - if (vname .eq. 'THM') call write_var2d(vname, thm (1:nseal_cpl), fldir='true' ) - if (vname .eq. 'THS') call write_var2d(vname, ths (1:nseal_cpl), fldir='true' ) - if (vname .eq. 'THP0') call write_var2d(vname, thp0 (1:nseal_cpl), fldir='true' ) - if (vname .eq. 'HSIG') call write_var2d(vname, hsig (1:nseal_cpl) ) - if (vname .eq. 'STMAXE') call write_var2d(vname, stmaxe (1:nseal_cpl) ) - if (vname .eq. 'STMAXD') call write_var2d(vname, stmaxd (1:nseal_cpl) ) - if (vname .eq. 'HMAXE') call write_var2d(vname, hmaxe (1:nseal_cpl) ) - if (vname .eq. 'HCMAXE') call write_var2d(vname, hcmaxe (1:nseal_cpl) ) - if (vname .eq. 'HMAXD') call write_var2d(vname, hmaxd (1:nseal_cpl) ) - if (vname .eq. 'HCMAXD') call write_var2d(vname, hcmaxd (1:nseal_cpl) ) - if (vname .eq. 'WBT') call write_var2d(vname, wbt (1:nseal_cpl) ) - if (vname .eq. 'WNMEAN') call write_var2d(vname, wnmean (1:nseal_cpl), init0='false') - - ! Group 4 - if(vname .eq. 'PWST') call write_var2d(vname, pwst (1:nseal_cpl) ) - if(vname .eq. 'PNR') call write_var2d(vname, pnr (1:nseal_cpl) ) - - ! Group 5 - if (vname .eq. 'USTX') call write_var2d(vname, ust (1:nseal_cpl)*asf(1:nseal_cpl), dir=cos(ustdir(1:nseal_cpl)), usemask='true') - if (vname .eq. 'USTY') call write_var2d(vname, ust (1:nseal_cpl)*asf(1:nseal_cpl), dir=sin(ustdir(1:nseal_cpl)), usemask='true') - if (vname .eq. 'CHARN') call write_var2d(vname, charn (1:nseal_cpl) ) - if (vname .eq. 'CGE') call write_var2d(vname, cge (1:nseal_cpl) ) - if (vname .eq. 'PHIAW') call write_var2d(vname, phiaw (1:nseal_cpl), init2='true') - if (vname .eq. 'TAUWIX') call write_var2d(vname, tauwix (1:nseal_cpl), init2='true') - if (vname .eq. 'TAUWIY') call write_var2d(vname, tauwiy (1:nseal_cpl), init2='true') - if (vname .eq. 'TAUWNX') call write_var2d(vname, tauwnx (1:nseal_cpl), init2='true') - if (vname .eq. 'TAUWNY') call write_var2d(vname, tauwny (1:nseal_cpl), init2='true') - if (vname .eq. 'WCC') call write_var2d(vname, whitecap (1:nseal_cpl,1), init2='true') - if (vname .eq. 'WCF') call write_var2d(vname, whitecap (1:nseal_cpl,2), init2='true') - if (vname .eq. 'WCH') call write_var2d(vname, whitecap (1:nseal_cpl,3), init2='true') - if (vname .eq. 'WCM') call write_var2d(vname, whitecap (1:nseal_cpl,4), init2='true') - if (vname .eq. 'TWS') call write_var2d(vname, tws (1:nseal_cpl) ) - - ! Group 6 - if (vname .eq. 'SXX') call write_var2d(vname, sxx (1:nseal_cpl) ) - if (vname .eq. 'SYY') call write_var2d(vname, syy (1:nseal_cpl) ) - if (vname .eq. 'SXY') call write_var2d(vname, sxy (1:nseal_cpl) ) - if (vname .eq. 'TAUOX') call write_var2d(vname, tauox (1:nseal_cpl), init2='true') - if (vname .eq. 'TAUOY') call write_var2d(vname, tauoy (1:nseal_cpl), init2='true') - if (vname .eq. 'BHD') call write_var2d(vname, bhd (1:nseal_cpl) ) - if (vname .eq. 'PHIOC') call write_var2d(vname, phioc (1:nseal_cpl), init2='true') - if (vname .eq. 'TUSX') call write_var2d(vname, tusx (1:nseal_cpl) ) - if (vname .eq. 'TUSY') call write_var2d(vname, tusy (1:nseal_cpl) ) - if (vname .eq. 'USSX') call write_var2d(vname, ussx (1:nseal_cpl) ) - if (vname .eq. 'USSY') call write_var2d(vname, ussy (1:nseal_cpl) ) - if (vname .eq. 'PRMS') call write_var2d(vname, prms (1:nseal_cpl) ) - if (vname .eq. 'TPMS') call write_var2d(vname, tpms (1:nseal_cpl) ) - if (vname .eq. 'TAUICEX') call write_var2d(vname, tauice (1:nseal_cpl,1) ) - if (vname .eq. 'TAUICEY') call write_var2d(vname, tauice (1:nseal_cpl,2) ) - if (vname .eq. 'PHICE') call write_var2d(vname, phice (1:nseal_cpl) ) - if (vname .eq. 'TAUOCX') call write_var2d(vname, tauocx (1:nseal_cpl) ) - if (vname .eq. 'TAUOCY') call write_var2d(vname, tauocy (1:nseal_cpl) ) - if (vname .eq. 'USSHX') call write_var2d(vname, usshx (1:nseal_cpl) ) - if (vname .eq. 'USSHY') call write_var2d(vname, usshy (1:nseal_cpl) ) - ! Group 7 - if (vname .eq. 'ABAX') call write_var2d(vname, aba (1:nseal_cpl), dir=cos(abd(1:nseal_cpl)) ) - if (vname .eq. 'ABAY') call write_var2d(vname, aba (1:nseal_cpl), dir=sin(abd(1:nseal_cpl)) ) - if (vname .eq. 'UBAX') call write_var2d(vname, uba (1:nseal_cpl), dir=cos(ubd(1:nseal_cpl)) ) - if (vname .eq. 'UBAY') call write_var2d(vname, uba (1:nseal_cpl), dir=sin(ubd(1:nseal_cpl)) ) - if (vname .eq. 'BED') call write_var2d(vname, bedforms (1:nseal_cpl,1), init2='true') - if (vname .eq. 'RIPPLEX') call write_var2d(vname, bedforms (1:nseal_cpl,2), init2='true') - if (vname .eq. 'RIPPLEY') call write_var2d(vname, bedforms (1:nseal_cpl,3), init2='true') - if (vname .eq. 'PHIBBL') call write_var2d(vname, phibbl (1:nseal_cpl), init2='true') - if (vname .eq. 'TAUBBLX') call write_var2d(vname, taubbl (1:nseal_cpl,1), init2='true') - if (vname .eq. 'TAUBBLY') call write_var2d(vname, taubbl (1:nseal_cpl,2), init2='true') - - ! Group 8 - if (vname .eq. 'MSSX') call write_var2d(vname, mssx (1:nseal_cpl) ) - if (vname .eq. 'MSSY') call write_var2d(vname, mssy (1:nseal_cpl) ) - if (vname .eq. 'MSCX') call write_var2d(vname, mscx (1:nseal_cpl) ) - if (vname .eq. 'MSCY') call write_var2d(vname, mscy (1:nseal_cpl) ) - !TODO: remaining variables have inconsistency between shel_inp listing and iogo code - - ! Group 9 - if (vname .eq. 'DTDYN') call write_var2d(vname, dtdyn (1:nseal_cpl) ) - if (vname .eq. 'FCUT') call write_var2d(vname, fcut (1:nseal_cpl) ) - if (vname .eq.'CFLXYMAX') call write_var2d(vname, cflxymax (1:nseal_cpl) ) - if (vname .eq.'CFLTHMAX') call write_var2d(vname, cflthmax (1:nseal_cpl) ) - if (vname .eq. 'CFLKMAX') call write_var2d(vname, cflkmax (1:nseal_cpl) ) - - ! Group 10 - end if - end do - - if (s_axis) deallocate(var3ds) - if (m_axis) deallocate(var3dm) - if (p_axis) deallocate(var3dp) - if (k_axis) deallocate(var3dk) - - call pio_freedecomp(pioid,iodesc2d) - call pio_freedecomp(pioid,iodesc2dint) - if (s_axis) call pio_freedecomp(pioid, iodesc3ds) - if (m_axis) call pio_freedecomp(pioid, iodesc3dm) - if (p_axis) call pio_freedecomp(pioid, iodesc3dp) - if (k_axis) call pio_freedecomp(pioid, iodesc3dk) - - call pio_closefile(pioid) - - end subroutine write_history - - !=============================================================================== - !> Write an array of (nseal) points as (nx,ny) - !! - !! @details If dir is present, the written variable will represent either the X - !! or Y component of the variable. If mask is present and true, use mapsta=1 to - !! mask values. If init0 is present and false, do not initialize values for mapsta<0. - !! This prevents group 1 variables being set undef over ice. If init2 is present and - !! true, apply a second initialization where mapsta==2. If fldir is present and true - !! then the directions will be converted to degrees. If global is present and true, - !! write pe-local copy of global field - !! - !! @param[in] vname the variable name - !! @param[in] var the variable array - !! @param[in] dir the direction array, optional - !! @param[in] usemask a flag for variable masking, optional - !! @param[in] init0 a flag for variable initialization, optional - !! @param[in] init2 a flag for a second initialization type, optional - !! @param[in] fldir a flag for unit conversion for direction, optional - !! @param[in] global a flag for a global variable, optional - !! - !> author DeniseWorthen@noaa.gov - !> @date 08-26-2024 - subroutine write_var2d(vname, var, dir, usemask, init0, init2, fldir, global) - - character(len=*), intent(in) :: vname - real , intent(in) :: var(:) - real, optional , intent(in) :: dir(:) - character(len=*), optional, intent(in) :: usemask - character(len=*), optional, intent(in) :: init0 - character(len=*), optional, intent(in) :: init2 - character(len=*), optional, intent(in) :: fldir - character(len=*), optional, intent(in) :: global - - ! local variables - real, dimension(nseal_cpl) :: varout - logical :: lmask, linit0, linit2, lfldir, lglobal - real :: varloc - - lmask = .false. - if (present(usemask)) then - lmask = (trim(usemask) == "true") - end if - linit0 = .true. - if (present(init0)) then - linit0 = (trim(init0) == "true") - end if - linit2 = .false. - if (present(init2)) then - linit2 = (trim(init2) == "true") - end if - lfldir = .false. - if (present(fldir)) then - lfldir = (trim(fldir) == "true") - end if - lglobal = .false. - if (present(global)) then - lglobal = (trim(global) == "true") - end if - - varout = undef - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - if (lglobal) then - varloc = var(isea) - else - varloc = var(jsea) - end if - - if (linit0) then - if (mapsta(mapsf(isea,2),mapsf(isea,1)) < 0) varloc = undef - end if - if (linit2) then - if (mapsta(mapsf(isea,2),mapsf(isea,1)) == 2) varloc = undef - end if - - if (lfldir) then - if (varloc .ne. undef) then - varloc = mod(630. - rade*varloc, 360.) - end if - end if - if (present(dir)) then - if (varloc .ne. undef) then - if (lmask) then - if (mapsta(mapsf(isea,2),mapsf(isea,1)) == 1) then - if (lglobal) then - varout(jsea) = varloc*dir(isea) - else - varout(jsea) = varloc*dir(jsea) - end if - end if - else - if (lglobal) then - varout(jsea) = varloc*dir(isea) - else - varout(jsea) = varloc*dir(jsea) - end if - end if - end if - else - varout(jsea) = varloc - end if - end do - - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, int(1,kind=Pio_Offset_Kind)) - call pio_write_darray(pioid, varid, iodesc2d, varout, ierr) - call handle_err(ierr, 'put variable '//trim(vname)) - - end subroutine write_var2d - - !=============================================================================== - !> Write an array of (nseal,:) points as (nx,ny,:) - !! - !! @details If init2 is present and true, apply a second initialization to a - !! subset of variables for where mapsta==2. If fldir is present and true then - !! the directions will be converted to degrees. - !! - !! @param[in] iodesc the PIO decomposition handle - !! @param[in] vname the variable name - !! @param[in] var the variable array - !! @param[in] init2 a flag for a second initialization type, optional - !! @param[in] fldir a flag for unit conversion for direction, optional - !! - !> author DeniseWorthen@noaa.gov - !> @date 08-26-2024 - subroutine write_var3d(iodesc, vname, var, init2, fldir) - - type(io_desc_t), intent(inout) :: iodesc - character(len=*), intent(in) :: vname - real , intent(in) :: var(:,:) - character(len=*), optional, intent(in) :: init2 - character(len=*), optional, intent(in) :: fldir - - ! local variables - real, allocatable, dimension(:) :: varloc - logical :: linit2, lfldir - integer :: lb, ub - - linit2 = .false. - if (present(init2)) then - linit2 = (trim(init2) == "true") - end if - lfldir = .false. - if (present(fldir)) then - lfldir = (trim(fldir) == "true") - end if - - lb = lbound(var,2) - ub = ubound(var,2) - allocate(varloc(lb:ub)) - - var3d = undef - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ! initialization - varloc(:) = var(jsea,:) - if (mapsta(mapsf(isea,2),mapsf(isea,1)) < 0) varloc(:) = undef - if (linit2) then - if (mapsta(mapsf(isea,2),mapsf(isea,1)) == 2) varloc(:) = undef - end if - if (lfldir) then - if (mapsta(mapsf(isea,2),mapsf(isea,1)) > 0 ) then - varloc(:) = mod(630. - rade*varloc(:), 360.) - end if - end if - var3d(jsea,:) = varloc(:) - end do - - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, int(1,kind=PIO_OFFSET_KIND)) - call pio_write_darray(pioid, varid, iodesc, var3d, ierr) - - deallocate(varloc) - end subroutine write_var3d - - !=============================================================================== - !> Scan through all possible fields to determine a list of requested variables - !! - !> @details Utilizes the list of variables specified via WW3's flout array - !! to define the variables written to the file. The elements of the flout - !! array are here referred to as "tags". Tags are not 1:1 with output fields. - !! For example, the tag "CUR" means that the ocean currents, comprising two - !! directional values are requested. They will both be requested via the single - !! CUR tag. The tag "SXY" means that three components of radiation stresses - !! are requested (XX,YY,XY). - !! - !! @param[in] stdout the logfile unit on the root_task - !! - !> @author Denise.Worthen@noaa.gov - !> @date 09-19-2022 - subroutine wav_history_init(stdout) - - use w3gdatmd, only: e3df, p2msf, us3df, usspf - use w3odatmd, only: iaproc, nogrp, ngrpp - use w3iogomd, only: fldout - use w3servmd, only: strsplit - - integer, intent(in) :: stdout - - ! local variables - integer, parameter :: maxvars = 25 ! maximum number of variables/group - type(varatts), dimension(nogrp,maxvars) :: gridoutdefs - - character(len=100) :: inptags(100) = '' - integer :: j,k,n,nout - character(len= 12) :: ttag - - ! obtain all possible output variable tags and attributes - call define_fields(gridoutdefs) - - ! obtain the tags for the requested output variables - call strsplit(fldout,inptags) - - ! determine which variables are tagged for output - do k = 1,nogrp - do j = 1,maxvars - if (len_trim(gridoutdefs(k,j)%tag) > 0) then - do n = 1,len(inptags) - if (len_trim(inptags(n)) > 0) then - if (trim(inptags(n)) == trim(gridoutdefs(k,j)%tag)) gridoutdefs(k,j)%validout = .true. - end if - end do - end if - end do - end do - - ! remove requested variables which are only allocated if specific - ! options are set in mod_def (see w3adatmd, '3D arrays') - do k = 1,nogrp - do j = 1,maxvars - if (gridoutdefs(k,j)%validout) then - ttag = trim(gridoutdefs(k,j)%tag) - if (ttag == 'EF' .and. e3df(1,1) == 0) gridoutdefs(k,j)%validout = .false. - if (ttag == 'TH1M' .and. e3df(1,2) == 0) gridoutdefs(k,j)%validout = .false. - if (ttag == 'STH1M' .and. e3df(1,3) == 0) gridoutdefs(k,j)%validout = .false. - if (ttag == 'TH2M' .and. e3df(1,4) == 0) gridoutdefs(k,j)%validout = .false. - if (ttag == 'STH2M' .and. e3df(1,5) == 0) gridoutdefs(k,j)%validout = .false. - - if (ttag == 'P2L' .and. p2msf(1) == 0) gridoutdefs(k,j)%validout = .false. - if (ttag == 'USF' .and. us3df(1) == 0) gridoutdefs(k,j)%validout = .false. - if (ttag == 'USP' .and. usspf(1) == 0) gridoutdefs(k,j)%validout = .false. - end if - end do - end do - - ! determine number of output variables (not the same as the number of tags) - n = 0 - do k = 1,nogrp - do j = 1,maxvars - if (gridoutdefs(k,j)%validout) n = n+1 - end do - end do - nout = n - allocate(outvars(1:nout)) - - ! subset variables requested - n = 0 - do k = 1,nogrp - do j = 1,maxvars - if (gridoutdefs(k,j)%validout) then - n = n+1 - outvars(n) = gridoutdefs(k,j) - end if - enddo - end do - - ! check - if ( iaproc == 1 ) then - write(stdout,*) - write(stdout,'(a)')' --------------------------------------------------' - write(stdout,'(a)')' Requested gridded output variables : ' - write(stdout,'(a)')' --------------------------------------------------' - write(stdout,*) - do n = 1,nout - write(stdout,'(i5,2a12,a50)')n,' '//trim(outvars(n)%tag), & - ' '//trim(outvars(n)%var_name), & - ' '//trim(outvars(n)%long_name) - end do - write(stdout,*) - call flush (stdout) - end if - - end subroutine wav_history_init - - !==================================================================================== - !> Define the available output fields and their attributes - !! - !> @author Denise.Worthen@noaa.gov - !> @date 09-19-2022 - subroutine define_fields (gridoutdefs) - - type(varatts), dimension(:,:), intent(inout) :: gridoutdefs - - gridoutdefs(:,:)%tag = "" - gridoutdefs(:,:)%var_name = "" - gridoutdefs(:,:)%long_name = "" - gridoutdefs(:,:)%unit_name = "" - gridoutdefs(:,:)%dims = "" - gridoutdefs(:,:)%validout = .false. - - ! 1 Forcing Fields - gridoutdefs(1,1:14) = [ & - varatts( "DPT ", "DW ", "Water depth ", "m ", " ", .false.) , & - varatts( "CUR ", "CX ", "Mean current, x-component ", "m s-1 ", " ", .false.) , & - varatts( "CUR ", "CY ", "Mean current, y-component ", "m s-1 ", " ", .false.) , & - varatts( "WND ", "UAX ", "Mean wind, x-component ", "m s-1 ", " ", .false.) , & - varatts( "WND ", "UAY ", "Mean wind, y-component ", "m s-1 ", " ", .false.) , & - varatts( "AST ", "AS ", "Air-sea temperature difference ", "K ", " ", .false.) , & - varatts( "WLV ", "WLV ", "Water levels ", "m ", " ", .false.) , & - varatts( "ICE ", "ICE ", "Ice coverage ", "nd ", " ", .false.) , & - varatts( "IBG ", "BERG ", "Iceberg-induced damping ", "km-1 ", " ", .false.) , & - varatts( "TAUA ", "TAUAX ", "Atm momentum x ", "Pa ", " ", .false.) , & - varatts( "TAUA ", "TAUAY ", "Atm momentum y ", "Pa ", " ", .false.) , & - varatts( "RHO ", "RHOAIR ", "Air density ", "kg m-3 ", " ", .false.) , & - varatts( "IC1 ", "ICEH ", "Ice thickness ", "m ", " ", .false.) , & - varatts( "IC5 ", "ICEF ", "Ice floe diameter ", "m ", " ", .false.) & - ] - - ! 2 Standard mean wave Parameters - gridoutdefs(2,1:18) = [ & - varatts( "HS ", "HS ", "Significant wave height ", "m ", " ", .false.) , & - varatts( "LM ", "WLM ", "Mean wave length ", "m ", " ", .false.) , & - varatts( "T02 ", "T02 ", "Mean wave period (Tm0,2) ", "s ", " ", .false.) , & - varatts( "T0M1 ", "T0M1 ", "Mean wave period (Tm0,-1) ", "s ", " ", .false.) , & - varatts( "T01 ", "T01 ", "Mean wave period (Tm0,1) ", "s ", " ", .false.) , & - varatts( "FP ", "FP0 ", "Peak frequency ", "s-1 ", " ", .false.) , & - varatts( "DIR ", "THM ", "Mean wave direction ", "rad ", " ", .false.) , & - varatts( "SPR ", "THS ", "Mean directional spread ", "rad ", " ", .false.) , & - varatts( "DP ", "THP0 ", "Peak direction ", "rad ", " ", .false.) , & - varatts( "HIG ", "HSIG ", "Infragravity height ", "m ", " ", .false.) , & - varatts( "MXE ", "STMAXE ", "Max surface elev (STE) ", "m ", " ", .false.) , & - varatts( "MXES ", "STMAXD ", "St Dev Max surface elev (STE) ", "m ", " ", .false.) , & - varatts( "MXH ", "HMAXE ", "Max wave height (S.) ", "m ", " ", .false.) , & - varatts( "MXHC ", "HCMAXE ", "Max wave height from crest (STE) ", "m ", " ", .false.) , & - varatts( "SDMH ", "HMAXD ", "St Dev of MXC (STE) ", "m ", " ", .false.) , & - varatts( "SDMHC", "HCMAXD ", "St Dev of MXHC (STE) ", "m ", " ", .false.) , & - varatts( "WBT ", "WBT ", "Dominant wave breaking probability (b_T) ", "nd ", " ", .false.) , & - varatts( "WNM ", "WNMEAN ", "Mean wave number ", "m-1 ", " ", .false.) & - ] - - ! 3 Spectral Parameters - gridoutdefs(3,1:6) = [ & - varatts( "EF ", "EF ", "1D spectral density ", "m2 s ", "k ", .false.) , & - varatts( "TH1M ", "TH1M ", "Mean wave direction from a1,b2 ", "deg ", "k ", .false.) , & - varatts( "STH1M", "STH1M ", "Directional spreading from a1,b2 ", "deg ", "k ", .false.) , & - varatts( "TH2M ", "TH2M ", "Mean wave direction from a2,b2 ", "deg ", "k ", .false.) , & - varatts( "STH2M", "STH2M ", "Directional spreading from a2,b2 ", "deg ", "k ", .false.) , & - !TODO: has reverse indices (nk,nsea) - varatts( "WN ", "WN ", "Wavenumber array ", "m-1 ", "k ", .false.) & - ] - - ! 4 Spectral Partition Parameters - gridoutdefs(4,1:17) = [ & - varatts( "PHS ", "PHS ", "Partitioned wave heights ", "m ", "s ", .false.) , & - varatts( "PTP ", "PTP ", "Partitioned peak period ", "s ", "s ", .false.) , & - varatts( "PLP ", "PLP ", "Partitioned peak wave length ", "m ", "s ", .false.) , & - varatts( "PDIR ", "PDIR ", "Partitioned mean direction ", "deg ", "s ", .false.) , & - varatts( "PSPR ", "PSI ", "Partitioned mean directional spread ", "deg ", "s ", .false.) , & - varatts( "PWS ", "PWS ", "Partitioned wind sea fraction ", "nd ", "s ", .false.) , & - varatts( "PDP ", "PTHP0 ", "Peak wave direction of partition ", "deg ", "s ", .false.) , & - varatts( "PQP ", "PQP ", "Goda peakdedness parameter of partition ", "nd ", "s ", .false.) , & - varatts( "PPE ", "PPE ", "JONSWAP peak enhancement factor of partition ", "s-1 ", "s ", .false.) , & - varatts( "PGW ", "PGW ", "Gaussian frequency width of partition ", "nd ", "s ", .false.) , & - varatts( "PSW ", "PSW ", "Spectral width of partition ", "nd ", "s ", .false.) , & - varatts( "PTM10", "PTM1 ", "Mean wave period (m-1,0) of partition ", "s ", "s ", .false.) , & - varatts( "PT01 ", "PT1 ", "Mean wave period (m0,1) of partition ", "s ", "s ", .false.) , & - varatts( "PT02 ", "PT2 ", "Mean wave period (m0,2) of partition ", "s ", "s ", .false.) , & - varatts( "PEP ", "PEP ", "Peak spectral density of partition ", "m2 s rad-1", "s ", .false.) , & - varatts( "TWS ", "PWST ", "Total wind sea fraction ", "nd ", " ", .false.) , & - varatts( "PNR ", "PNR ", "Number of partitions ", "nd ", " ", .false.) & - ] - - ! 5 Atmosphere-waves layer - gridoutdefs(5,1:14) = [ & - varatts( "UST ", "USTX ", "Friction velocity x ", "m s-1 ", " ", .false.) , & - varatts( "UST ", "USTY ", "Friction velocity y ", "m s-1 ", " ", .false.) , & - varatts( "CHA ", "CHARN ", "Charnock parameter ", "nd ", " ", .false.) , & - varatts( "CGE ", "CGE ", "Energy flux ", "kW m-1 ", " ", .false.) , & - varatts( "FAW ", "PHIAW ", "Air-sea energy flux ", "W m-2 ", " ", .false.) , & - varatts( "TAW ", "TAUWIX ", "Net wave-supported stress x ", "m2 s-2 ", " ", .false.) , & - varatts( "TAW ", "TAUWIY ", "Net wave-supported stress y ", "m2 s-2 ", " ", .false.) , & - varatts( "TWA ", "TAUWNX ", "Negative part of the wave-supported stress x ", "m2 s-2 ", " ", .false.) , & - varatts( "TWA ", "TAUWNY ", "Negative part of the wave-supported stress y ", "m2 s-2 ", " ", .false.) , & - varatts( "WCC ", "WCC ", "Whitecap coverage ", "nd ", " ", .false.) , & - varatts( "WCF ", "WCF ", "Whitecap foam thickness ", "m ", " ", .false.) , & - varatts( "WCH ", "WCH ", "Mean breaking wave heigh ", "m ", " ", .false.) , & - varatts( "WCM ", "WCM ", "Whitecap moment ", "nd ", " ", .false.) , & - varatts( "FWS ", "TWS ", "Wind sea mean period ", "s ", " ", .false.) & - ] - - ! 6 Wave-ocean layer - gridoutdefs(6,1:25) = [ & - varatts( "SXY ", "SXX ", "Radiation stresses xx ", "N m-1 ", " ", .false.) , & - varatts( "SXY ", "SYY ", "Radiation stresses yy ", "N m-1 ", " ", .false.) , & - varatts( "SXY ", "SXY ", "Radiation stresses xy ", "N m-1 ", " ", .false.) , & - varatts( "TWO ", "TAUOX ", "Wave to ocean momentum flux x ", "m2 s-2 ", " ", .false.) , & - varatts( "TWO ", "TAUOY ", "Wave to ocean momentum flux y ", "m2 s-2 ", " ", .false.) , & - varatts( "BHD ", "BHD ", "Bernoulli head (J term) ", "m2 s-2 ", " ", .false.) , & - varatts( "FOC ", "PHIOC ", "Wave to ocean energy flux ", "W m-2 ", " ", .false.) , & - varatts( "TUS ", "TUSX ", "Stokes transport x ", "m2 s-1 ", " ", .false.) , & - varatts( "TUS ", "TUSY ", "Stokes transport y ", "m2 s-1 ", " ", .false.) , & - varatts( "USS ", "USSX ", "Surface Stokes drift x ", "m s-1 ", " ", .false.) , & - varatts( "USS ", "USSY ", "Surface Stokes drift y ", "m s-1 ", " ", .false.) , & - varatts( "P2S ", "PRMS ", "Second-order sum pressure ", "m4 ", " ", .false.) , & - varatts( "P2S ", "TPMS ", "Second-order sum pressure ", "s-1 ", " ", .false.) , & - varatts( "USF ", "US3DX ", "Spectrum of surface Stokes drift x ", "m s-1 Hz-1", "k ", .false.) , & - varatts( "USF ", "US3DY ", "Spectrum of surface Stokes drift y ", "m s-1 Hz-1", "k ", .false.) , & - varatts( "P2L ", "P2SMS ", "Micro seism source term ", "Pa2 m2 s ", "m ", .false.) , & - varatts( "TWI ", "TAUICEX ", "Wave to sea ice stress x ", "m2 s-2 ", " ", .false.) , & - varatts( "TWI ", "TAUICEY ", "Wave to sea ice stress y ", "m2 s-2 ", " ", .false.) , & - varatts( "FIC ", "PHICE ", "Wave to sea ice energy flux ", "W m-2 ", " ", .false.) , & - varatts( "USP ", "USSPX ", "Partitioned surface Stokes drift x ", "m s-1 ", "p ", .false.) , & - varatts( "USP ", "USSPY ", "Partitioned surface Stokes drift y ", "m s-1 ", "p ", .false.) , & - varatts( "TWC ", "TAUOCX ", "Total wave to ocean stress x ", "Pa ", " ", .false.) , & - varatts( "TWC ", "TAUOCY ", "Total wave to ocean stress y ", "Pa ", " ", .false.) , & - varatts( "USSH ", "USSHX ", "Surface layer averaged Stokes drift x ", "m s-1 ", " ", .false.) , & - varatts( "USSH ", "USSHY ", "Surface layer averaged Stokes drift y ", "m s-1 ", " ", .false.) & - ] - - ! 7 Wave-bottom layer - gridoutdefs(7,1:10) = [ & - varatts( "ABR ", "ABAX ", "Near bottom rms wave excursion amplitudes x ", "m ", " ", .false.) , & - varatts( "ABR ", "ABAY ", "Near bottom rms wave excursion amplitudes y ", "m ", " ", .false.) , & - varatts( "UBR ", "UBAX ", "Near bottom rms wave velocities x ", "m s-1 ", " ", .false.) , & - varatts( "UBR ", "UBAY ", "Near bottom rms wave velocities y ", "m s-1 ", " ", .false.) , & - varatts( "BED ", "BED ", "Bottom roughness ", "m ", " ", .false.) , & - varatts( "BED ", "RIPPLEX ", "Sea bottom ripple wavelength x ", "m ", " ", .false.) , & - varatts( "BED ", "RIPPLEY ", "Sea bottom ripple wavelength y ", "m ", " ", .false.) , & - varatts( "FBB ", "PHIBBL ", "Energy flux due to bottom friction ", "W m-2 ", " ", .false.) , & - varatts( "TBB ", "TAUBBLX ", "Momentum flux due to bottom friction x ", "m2 s-2 ", " ", .false.) , & - varatts( "TBB ", "TAUBBLY ", "Momentum flux due to bottom friction y ", "m2 s-2 ", " ", .false.) & - ] - - ! 8 Spectrum parameters - gridoutdefs(8,1:9) = [ & - varatts( "MSS ", "MSSX ", "Surface mean square slope x ", "nd ", " ", .false.) , & - varatts( "MSS ", "MSSY ", "Surface mean square slope y ", "nd ", " ", .false.) , & - varatts( "MSC ", "MSCX ", "Spectral level at high frequency tail x ", "nd ", " ", .false.) , & - varatts( "MSC ", "MSCY ", "Spectral level at high frequency tail y ", "nd ", " ", .false.) , & - varatts( "WL02 ", "WL02X ", "East/X North/Y mean wavelength component ", "nd ", " ", .false.) , & - varatts( "WL02 ", "WL02Y ", "East/X North/Y mean wavelength component ", "nd ", " ", .false.) , & - varatts( "AXT ", "ALPXT ", "Correl sea surface gradients (x,t) ", "nd ", " ", .false.) , & - varatts( "AYT ", "ALPYT ", "Correl sea surface gradients (y,t) ", "nd ", " ", .false.) , & - varatts( "AXY ", "ALPXY ", "Correl sea surface gradients (x,y) ", "nd ", " ", .false.) & - ] - - ! 9 Numerical diagnostics - gridoutdefs(9,1:5) = [ & - varatts( "DTD ", "DTDYN ", "Average time step in integration ", "min ", " ", .false.) , & - varatts( "FC ", "FCUT ", "Cut-off frequency ", "s-1 ", " ", .false.) , & - varatts( "CFX ", "CFLXYMAX ", "Max. CFL number for spatial advection ", "nd ", " ", .false.) , & - varatts( "CFD ", "CFLTHMAX ", "Max. CFL number for theta-advection ", "nd ", " ", .false.) , & - varatts( "CFK ", "CFLKMAX ", "Max. CFL number for k-advection ", "nd ", " ", .false.) & - ] - - ! 10 User defined - gridoutdefs(10,1:2) = [ & - varatts( "U1 ", "U1 ", "User defined 1 ", "nd ", " ", .false.) , & - varatts( "U2 ", "U2 ", "User defined 2 ", "nd ", " ", .false.) & - ] - end subroutine define_fields -end module wav_history_mod diff --git a/model/src/wav_import_export.F90 b/model/src/wav_import_export.F90 deleted file mode 100644 index 0d7c280ad..000000000 --- a/model/src/wav_import_export.F90 +++ /dev/null @@ -1,2134 +0,0 @@ -!> @file wav_import_export -!! -!> Manage the import/export state and fields -!! -!> @details Contains the public routines to advertise and realize -!! the import and export fields and the public routines to fill -!! the import and export fields within the ESMF States. -!! -!> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov -!> @date 01-05-2022 -module wav_import_export - - use ESMF - use NUOPC - use NUOPC_Model - use wav_shr_flags - use wav_kind_mod , only : r8 => shr_kind_r8, r4 => shr_kind_r4, i4 => shr_kind_i4 - use wav_kind_mod , only : CL => shr_kind_cl, CS => shr_kind_cs - use wav_shr_mod , only : ymd2date - use wav_shr_mod , only : chkerr - use wav_shr_mod , only : state_diagnose, state_reset, state_getfldptr, state_fldchk - use wav_shr_mod , only : wav_coupling_to_cice, nwav_elev_spectrum, merge_import, dbug_flag, multigrid, unstr_mesh - use wav_shr_mod , only : standalone - use constants , only : grav, tpi, dwat, dair - use w3parall , only : init_get_isea - - implicit none - private ! except - - public :: advertise_fields !< @public create a list of fields and advertise them - public :: realize_fields !< @public realize a list of advertised fields - public :: import_fields !< @public fill WW3 fields using values in the import state - public :: export_fields !< @public fill values in the export state using WW3 fields - public :: CalcRoughl !< @public calculate the roughness length - - private :: fldlist_add !< @private add a field name to a list of field names - private :: fldlist_realize !< @private realize a field in a list of field names - private :: set_importmask !< @private set the import mask when merge_import is true - private :: check_globaldata !< @private write values in a field to a netCDF file for debugging - private :: readfromfile !< @private read values from a file - - interface FillGlobalInput - module procedure fillglobal_with_import - module procedure fillglobal_with_merge_import - end interface FillGlobalInput - - type fld_list_type !< @private a structure for the list of fields - character(len=128) :: stdname !< a standard field name - integer :: ungridded_lbound = 0 !< the ungridded dimension lower bound - integer :: ungridded_ubound = 0 !< the ugridded dimension upper bound - end type fld_list_type - - integer, parameter :: fldsMax = 100 !< the maximum allowed number of fields in a state - integer :: fldsToWav_num = 0 !< initial value of the number of fields sent to the wave model - integer :: fldsFrWav_num = 0 !< initial value of the number of fields sent from the wave model - type (fld_list_type) :: fldsToWav(fldsMax) !< a structure containing the list of fields to the wave model - type (fld_list_type) :: fldsFrWav(fldsMax) !< a structure containing the list of fields from the wave model - - real(r4), allocatable :: import_mask(:) !< the mask for valid import data - real(r8), parameter :: zero = 0.0_r8 !< a named constant - -#ifdef W3_CESMCOUPLED - logical :: cesmcoupled = .true. !< logical defining a CESM use case -#else - logical :: cesmcoupled = .false. !< logical defining a non-CESM use case (UWM) -#endif - integer, public :: nseal_cpl !< the number of local sea points on a processor, exclusive - !! of the ghost points. For non-PDLIB cases, this is nseal - character(*),parameter :: u_FILE_u = & !< a character string for an ESMF log message - __FILE__ - - !=============================================================================== -contains - !=============================================================================== - !> Set up the list of exchanged field to be advertised - !! - !> @details Called by InitializAdvertise, a list of standard field names to or - !! from the wave model is created and then advertised in either the import or - !! export state. A field with name set by the configuration variable ScalarFieldName - !! and size of ScalarFieldCount is added to the list of fields in the export state - !! and is used by CMEPS to write mediator history and restart fields as 2D arrays - !! - !! @param importState an ESMF_State for the import - !! @param exportState an ESMF_State for the export - !! @param[in] flds_scalar_name the name of the scalar field - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine advertise_fields(importState, ExportState, flds_scalar_name, rc) - ! input/output variables - type(ESMF_State) :: importState - type(ESMF_State) :: exportState - character(len=*) , intent(in) :: flds_scalar_name - integer , intent(out) :: rc - - ! local variables - integer :: n - character(len=*), parameter :: subname='(wav_import_export:advertise_fields)' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - !-------------------------------- - ! Advertise import fields - !-------------------------------- - - call fldlist_add(fldsToWav_num, fldsToWav, 'So_h' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'Si_ifrac' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'So_u' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'So_v' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'So_t' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'Sa_tbot' ) - if (cesmcoupled) then - call fldlist_add(fldsToWav_num, fldsToWav, 'Sa_u' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'Sa_v' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'So_bldepth' ) - else - call fldlist_add(fldsToWav_num, fldsToWav, 'Sa_u10m' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'Sa_v10m' ) - end if - if (wav_coupling_to_cice) then - call fldlist_add(fldsToWav_num, fldsToWav, 'Si_thick' ) - call fldlist_add(fldsToWav_num, fldsToWav, 'Si_floediam') - end if - - do n = 1,fldsToWav_num - call NUOPC_Advertise(importState, standardName=fldsToWav(n)%stdname, & - TransferOfferGeomObject='will provide', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end do - - !-------------------------------- - ! Advertise export fields - !-------------------------------- - - if (.not. unstr_mesh) then - call fldlist_add(fldsFrWav_num, fldsFrWav, trim(flds_scalar_name)) - end if - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_ustokes') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_vstokes') - - if (cesmcoupled) then - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_lamult' ) - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_lasl' ) - else - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_z0') - ! coastal coupling - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_wavsuu') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_wavsuv') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_wavsvv') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_hs') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_bhd') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_tauox') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_tauoy') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_taubblx') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_taubbly') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_ubrx') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_ubry') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_thm') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_t0m1') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_wnmean') - end if - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_pstokes_x', ungridded_lbound=1, ungridded_ubound=3) - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_pstokes_y', ungridded_lbound=1, ungridded_ubound=3) - - ! AA TODO: In the above fldlist_add calls, we are passing hardcoded ungridded_ubound values (3) because, USSPF(2) - ! is not initialized yet. It is set during w3init which gets called at a later phase (realize). A permanent solution - ! will be implemented soon based on receiving USSP and USSPF from the coupler instead of the mod_def file. This will - ! also ensure compatibility with the ocean component since ocean will also receive these from the coupler. - if (wav_coupling_to_cice) then - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_elevation_spectrum', & - ungridded_lbound=1, ungridded_ubound=nwav_elev_spectrum) - end if - - do n = 1,fldsFrWav_num - call NUOPC_Advertise(exportState, standardName=fldsFrWav(n)%stdname, & - TransferOfferGeomObject='will provide', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end do - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine advertise_fields - - !=============================================================================== - !> Realize the advertised fields - !! - !> @details Called by InitializeRealize, realize the advertised fields on the mesh - !! and set all initial values to zero - !! - !! @param gcomp an ESMF_GridComp object - !! @param mesh an ESMF_Mesh object - !! @param[in] flds_scalar_name the name of the scalar field - !! @param[in] flds_scalar_num the number of scalar fields - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine realize_fields(gcomp, mesh, flds_scalar_name, flds_scalar_num, rc) - - ! input/output variables - type(ESMF_GridComp) :: gcomp - type(ESMF_Mesh) :: mesh - character(len=*) , intent(in) :: flds_scalar_name - integer , intent(in) :: flds_scalar_num - integer , intent(out) :: rc - - ! local variables - type(ESMF_State) :: importState - type(ESMF_State) :: exportState - character(len=*), parameter :: subname='(wav_import_export:realize_fields)' - !--------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - call NUOPC_ModelGet(gcomp, importState=importState, exportState=exportState, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call fldlist_realize( & - state=ExportState, & - fldList=fldsFrWav, & - numflds=fldsFrWav_num, & - flds_scalar_name=flds_scalar_name, & - flds_scalar_num=flds_scalar_num, & - tag=subname//':WW3Export',& - mesh=mesh, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call fldlist_realize( & - state=importState, & - fldList=fldsToWav, & - numflds=fldsToWav_num, & - flds_scalar_name=flds_scalar_name, & - flds_scalar_num=flds_scalar_num, & - tag=subname//':WW3Import',& - mesh=mesh, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call state_reset(ExportState, zero, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_reset(ImportState, zero, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (dbug_flag > 5) then - call state_diagnose(exportState, 'after state_reset', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine realize_fields - - !=============================================================================== - !> Fill WW3 fields with values from the import state - !! - !> @details Called by ModelAdvance, a global field for each connected field is - !! created in SetGlobalInput and used to fill the internal WW3 global variables in - !! FillGlobalInput. Optionally, the WW3 field can be created by merging with a - !! provided field in cases where the WW3 model domain extends outside the source - !! domain - !! - !! @param[inout] gcomp an ESMF_GridComp object - !! @param[in] time0 the starting time of ModelAdvance - !! @param[in] timen the ending time of ModelAdvance - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine import_fields( gcomp, time0, timen, rc ) - - !--------------------------------------------------------------------------- - ! Obtain the wave input from the mediator - !--------------------------------------------------------------------------- - - use w3gdatmd , only: nsea, NX, NY, w3setg - use w3idatmd , only: CX0, CY0, CXN, CYN, DT0, DTN, ICEI, WLEV, INFLAGS1, ICEP1, ICEP5 - use w3idatmd , only: TC0, TCN, TLN, TIN, TI1, TI5, TW0, TWN, WX0, WY0, WXN, WYN - use w3idatmd , only: UX0, UY0, UXN, UYN, TU0, TUN - use w3idatmd , only: tfn, w3seti - use w3odatmd , only: w3seto - use w3wdatmd , only: w3setw -#ifdef W3_CESMCOUPLED - use w3idatmd , only: HSL -#else - use wmupdtmd , only: wmupd2 - use wmmdatmd , only: wmsetm - use wmmdatmd , only: mdse, mdst, nrgrd, inpmap -#ifdef W3_MPI - use wmmdatmd , only: mpi_comm_grd -#endif -#endif - - ! input/output variables - type(ESMF_GridComp) , intent(inout) :: gcomp - integer , intent(in) :: time0(2), timen(2) - integer , intent(out) :: rc - - ! Local variables - type(ESMF_State) :: importState - type(ESMF_VM) :: vm - type(ESMF_Clock) :: clock - real(r4) :: global_data(nsea) - real(r4), allocatable :: global_data2(:) - real(r4) :: def_value - character(len=10) :: uwnd - character(len=10) :: vwnd - integer :: imod, j, jmod - integer :: mpi_comm_null = -1 - real(r4), allocatable :: wxdata(:) ! only needed if merge_import - real(r4), allocatable :: wydata(:) ! only needed if merge_import - character(len=*), parameter :: subname='(wav_import_export:import_fields)' - !--------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - if (cesmcoupled) then - uwnd = 'Sa_u' - vwnd = 'Sa_v' - else - uwnd = 'Sa_u10m' - vwnd = 'Sa_v10m' - end if - - ! Get import state, clock and vm - call ESMF_GridCompGet(gcomp, clock=clock, importState=importState, vm=vm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (dbug_flag > 5) then - call state_diagnose(importState, 'at import ', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - ! input fields associated with W3FLDG calls in ww3_shel.ftn - ! fill both the lower (0) and upper (N) bound data with the same values - ! fill with special values as default, these should not be used in practice - ! set time for input data to time0 and timen (shouldn't matter) - - def_value = 0.0_r4 - -#ifndef W3_CESMCOUPLED - call w3setg ( 1, mdse, mdst ) - call w3seti ( 1, mdse, mdst ) -#endif - - ! --------------- - ! INFLAGS1(1) - ! --------------- - if (INFLAGS1(1)) then - TLN = timen - - WLEV(:,:) = def_value ! water level - if (state_fldchk(importState, 'So_h')) then - call SetGlobalInput(importState, 'So_h', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, WLEV) - end if - endif - - ! --------------- - ! INFLAGS1(2) - ocn current fields - ! --------------- - if (INFLAGS1(2)) then - TC0 = time0 ! times for ocn current fields - TCN = timen - - CX0(:,:) = def_value ! ocn u current - CXN(:,:) = def_value - if (state_fldchk(importState, 'So_u')) then - call SetGlobalInput(importState, 'So_u', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, CX0) - call FillGlobalInput(global_data, CXN) - end if - - CY0(:,:) = def_value ! ocn v current - CYN(:,:) = def_value - if (state_fldchk(importState, 'So_v')) then - call SetGlobalInput(importState, 'So_v', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, CY0) - call FillGlobalInput(global_data, CYN) - end if - end if - - ! --------------- - ! INFLAGS1(3) - atm wind/temp fields - ! --------------- - if (INFLAGS1(3)) then - TW0 = time0 ! times for atm wind/temp fields. - TWN = timen - - if (merge_import .or. standalone) then - ! set mask using u-wind field if merge_import; assume all import fields - ! will have same missing overlap region - ! import_mask memory will be allocate in set_importmask - if (merge_import) then - call set_importmask(importState, clock, trim(uwnd), vm, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - allocate(wxdata(nsea)) - allocate(wydata(nsea)) - call readfromfile('WND', wxdata, wydata, time0, timen, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (dbug_flag > 10) then - call check_globaldata(gcomp, 'wxdata', wxdata, nsea, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call check_globaldata(gcomp, 'wydata', wydata, nsea, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (merge_import) then - call check_globaldata(gcomp, 'import_mask', import_mask, nsea, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - end if - end if - - ! atm u wind - WX0(:,:) = def_value - WXN(:,:) = def_value - if (state_fldchk(importState, trim(uwnd))) then - call SetGlobalInput(importState, trim(uwnd), vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (merge_import) then - call FillGlobalInput(global_data, import_mask, wxdata, WX0) - call FillGlobalInput(global_data, import_mask, wxdata, WXN) - if (dbug_flag > 10) then - call check_globaldata(gcomp, 'wx0', wx0, nx*ny, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - else - call FillGlobalInput(global_data, WX0) - call FillGlobalInput(global_data, WXN) - end if - else - if (standalone) then - call ESMF_LogWrite(trim(subname)//' no connected uwnd field. reading data from wind.ww3.', ESMF_LOGMSG_INFO) - call FillGlobalInput(wxdata, WX0) - call FillGlobalInput(wxdata, WXN) - end if - end if - - ! atm v wind - WY0(:,:) = def_value - WYN(:,:) = def_value - if (state_fldchk(importState, trim(vwnd))) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call SetGlobalInput(importState, trim(vwnd), vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (merge_import) then - call FillGlobalInput(global_data, import_mask, wydata, WY0) - call FillGlobalInput(global_data, import_mask, wydata, WYN) - if (dbug_flag > 10) then - call check_globaldata(gcomp, 'wy0', wy0, nx*ny, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - else - call FillGlobalInput(global_data, WY0) - call FillGlobalInput(global_data, WYN) - end if - else - if (standalone) then - call ESMF_LogWrite(trim(subname)//' no connected vwnd field. reading data from wind.ww3.', ESMF_LOGMSG_INFO) - call FillGlobalInput(wydata, WY0) - call FillGlobalInput(wydata, WYN) - end if - end if - - ! air temp - ocn temp - DT0(:,:) = def_value - DTN(:,:) = def_value - if ((state_fldchk(importState, 'So_t')) .and. (state_fldchk(importState, 'Sa_tbot'))) then - allocate(global_data2(nsea)) - call SetGlobalInput(importState, 'Sa_tbot', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call SetGlobalInput(importState, 'So_t', vm, global_data2, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! So_tbot - So_t - global_data = global_data - global_data2 - call FillGlobalInput(global_data, DT0) - call FillGlobalInput(global_data, DTN) - deallocate(global_data2) - end if - ! Deallocate memory for merge_import - if (merge_import) then - deallocate(wxdata) - deallocate(wydata) - end if - end if - - ! --------------- - ! INFLAGS1(4) - ice fraction field - ! --------------- - if (INFLAGS1(4)) then - TIN = timen ! time for ice field - ICEI(:,:) = def_value ! ice frac - if (state_fldchk(importState, 'Si_ifrac')) then - call SetGlobalInput(importState, 'Si_ifrac', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, ICEI) - end if - end if -#ifdef W3_CESMCOUPLED - ! --------------- - ! ocean boundary layer depth - always assume that this is being imported for CESM - ! --------------- - call SetGlobalInput(importState, 'So_bldepth', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! ocn mixing layer depth - global_data = max(global_data, 5.)*0.2 - call FillGlobalInput(global_data, HSL) -#endif - ! --------------- - ! INFLAGS1(5) - atm momentum fields - ! --------------- - if (INFLAGS1(5)) then - TU0 = time0 ! times for atm momentum fields. - TUN = timen - - UX0(:,:) = def_value ! atm u momentum - UXN(:,:) = def_value - if (state_fldchk(importState, 'Faxa_taux')) then - call SetGlobalInput(importState, 'Faxa_taux', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, UX0) - call FillGlobalInput(global_data, UXN) - end if - - UY0(:,:) = def_value ! atm v momentum - UYN(:,:) = def_value - if (state_fldchk(importState, 'Faxa_tauy')) then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call SetGlobalInput(importState, 'Faxa_tauy', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, UY0) - call FillGlobalInput(global_data, UYN) - end if - end if - ! --------------- - ! INFLAGS1(-7) - ! --------------- - if (INFLAGS1(-7)) then - TI1 = timen ! time for ice field - ICEP1(:,:) = def_value ! ice thickness - if (state_fldchk(importState, 'Si_thick')) then - call SetGlobalInput(importState, 'Si_thick', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, ICEP1) - end if - end if - ! --------------- - ! INFLAGS1(-3) - ! --------------- - if (INFLAGS1(-3)) then - TI5 = timen ! time for ice field - ICEP5(:,:) = def_value ! ice floe size - if (state_fldchk(importState, 'Si_floediam')) then - call SetGlobalInput(importState, 'Si_floediam', vm, global_data, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call FillGlobalInput(global_data, ICEP5) - end if - end if - -#ifndef W3_CESMCOUPLED - if (multigrid) then - do j = lbound(inflags1,1),ubound(inflags1,1) - if (inflags1(j)) then - do imod = 1,nrgrd - tfn(:,j) = timen(:) - call w3setg ( imod, mdse, mdst ) - call w3setw ( imod, mdse, mdst ) - call w3seti ( imod, mdse, mdst ) - call w3seto ( imod, mdse, mdst ) - call wmsetm ( imod, mdse, mdst ) -#ifdef W3_MPI - if ( mpi_comm_grd .eq. mpi_comm_null ) cycle -#endif - !TODO: when is this active? jmod = -999 - jmod = inpmap(imod,j) - if ( jmod.lt.0 .and. jmod.ne.-999 ) then - call wmupd2( imod, j, jmod, rc ) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - endif - end do - end if - end do - end if -#endif - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine import_fields - - !=============================================================================== - !> Fill the export state with values from WW3 fields - !! - !> @details Called by ModelAdvance, fill or compute the values in the export state. - !! - !! @param gcomp an ESMF_GridComp object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine export_fields (gcomp, rc) - - !--------------------------------------------------------------------------- - ! Create the export state - !--------------------------------------------------------------------------- - - use wav_kind_mod, only : R8 => SHR_KIND_R8 - use w3adatmd , only : USSX, USSY, USSP, HS, tauox, tauoy, wnmean, taubbl - use w3adatmd , only : w3seta - use w3idatmd , only : w3seti - use w3wdatmd , only : va, w3setw - use w3odatmd , only : w3seto - use w3gdatmd , only : mapsf, MAPSTA, USSPF, NK, w3setg - use w3iogomd , only : CALC_U3STOKES -#ifdef W3_CESMCOUPLED - use w3wdatmd , only : ASF, UST - use w3adatmd , only : USSHX, USSHY, UD - use w3idatmd , only : HSL -#else - use wmmdatmd , only : mdse, mdst, wmsetm -#endif - - ! input/output/variables - type(ESMF_GridComp) :: gcomp - integer , intent(out) :: rc - - ! Local variables -#ifdef W3_CESMCOUPLED - real(R8) :: fillvalue = 1.0e30_R8 ! special missing value - real :: sww, langmt, lasl, laslpj, alphal -#else - real(R8) :: fillvalue = zero ! special missing value -#endif - type(ESMF_State) :: exportState - integer :: jsea, isea, ix, iy, ib - - real(r8), pointer :: z0rlen(:) - real(r8), pointer :: charno(:) - real(r8), pointer :: sw_lamult(:) - real(r8), pointer :: sw_lasl(:) - real(r8), pointer :: sw_ustokes(:) - real(r8), pointer :: sw_vstokes(:) - - real(r8), pointer :: sxxn(:) - real(r8), pointer :: sxyn(:) - real(r8), pointer :: syyn(:) - real(r8), pointer :: sw_hs(:) - real(r8), pointer :: sw_bhd(:) - real(r8), pointer :: sw_tauox(:) - real(r8), pointer :: sw_tauoy(:) - real(r8), pointer :: sw_taubblx(:) - real(r8), pointer :: sw_taubbly(:) - real(r8), pointer :: sw_ubrx(:) - real(r8), pointer :: sw_ubry(:) - real(r8), pointer :: sw_thm(:) - real(r8), pointer :: sw_t0m1(:) - real(r8), pointer :: sw_wnmean(:) - - ! d2 is location, d1 is frequency - nwav_elev_spectrum frequencies will be used - real(r8), pointer :: wave_elevation_spectrum(:,:) - - ! Partitioned stokes drift - real(r8), pointer :: sw_pstokes_x(:,:) - real(r8), pointer :: sw_pstokes_y(:,:) - character(len=*), parameter :: subname='(wav_import_export:export_fields)' - !--------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - ! Get export state - call NUOPC_ModelGet(gcomp, exportState=exportState, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - -#ifndef W3_CESMCOUPLED - call w3setg ( 1, mdse, mdst ) - call w3setw ( 1, mdse, mdst ) - call w3seta ( 1, mdse, mdst ) - call w3seti ( 1, mdse, mdst ) - call w3seto ( 1, mdse, mdst ) - if (multigrid) then - call wmsetm ( 1, mdse, mdst ) - end if -#endif -#ifdef W3_CESMCOUPLED - if (state_fldchk(exportState, 'Sw_lamult')) then - call state_getfldptr(exportState, 'Sw_lamult', sw_lamult, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_lamult(:) = fillvalue - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if (mapsta(iy,ix) == 1 .and. HS(jsea) > zero .and. & - sqrt(USSX(jsea)**2+USSY(jsea)**2)>zero .and. sqrt(USSHX(jsea)**2+USSHY(jsea)**2)>zero ) then - sww = atan2(USSHY(jsea),USSHX(jsea)) - UD(isea) - alphal = atan( sin(sww) / ( & - 2.5 * UST(isea)*ASF(isea)*sqrt(dair/dwat) & - / max(1.e-14_r8, sqrt(USSX(jsea)**2+USSY(jsea)**2)) & - * log(max(1.0, abs(1.25*HSL(ix,iy)/HS(jsea)))) & - + cos(sww) ) & - ) - lasl = sqrt(ust(isea) * asf(isea) * sqrt(dair/dwat) & - / sqrt(usshx(jsea)**2 + usshy(jsea)**2 )) - laslpj = lasl * sqrt(abs(cos(alphal)) & - / abs(cos(sww-alphal))) - sw_lamult(jsea) = min(5.0, abs(cos(alphal)) * & - sqrt(1.0+(1.5*laslpj)**(-2)+(5.4_r8*laslpj)**(-4))) - else - sw_lamult(jsea) = 1. - endif - enddo - end if - if (state_fldchk(exportState, 'Sw_lasl')) then - call state_getfldptr(exportState, 'Sw_lasl', sw_lasl, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_lasl(:) = fillvalue - do jsea=1, nseal - isea = iaproc + (jsea-1)*naproc - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if (mapsta(iy,ix) == 1) then - ! note: an arbitrary minimum value of 0.2 is set to avoid zero - ! Langmuir number which may result from zero surface friction - ! velocity but may cause unphysically strong Langmuir mixing - sw_lasl(jsea) = max(0.2, sqrt(UST(isea)*ASF(isea)*sqrt(dair/dwat) & - / max(1.e-14, sqrt(USSHX(jsea)**2+USSHY(jsea)**2)))) - else - sw_lasl(jsea) = 1.e6 - endif - enddo - end if - - ! surface stokes drift at history frequency - if (state_fldchk(exportState, 'Sw_ustokes')) then - call state_getfldptr(exportState, 'Sw_ustokes', sw_ustokes, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_ustokes(:) = fillvalue - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if (mapsta(iy,ix) == 1) then - sw_ustokes(jsea) = USSX(jsea) - else - sw_ustokes(jsea) = 0. - endif - enddo - end if - if (state_fldchk(exportState, 'Sw_vstokes')) then - call state_getfldptr(exportState, 'Sw_vstokes', sw_vstokes, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_vstokes(:) = fillvalue - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if (mapsta(iy,ix) == 1) then - sw_vstokes(jsea) = USSY(jsea) - else - sw_vstokes(jsea) = 0. - endif - enddo - end if -#else - ! surface stokes drift at coupling frequency - if ( state_fldchk(exportState, 'Sw_ustokes') .and. & - state_fldchk(exportState, 'Sw_vstokes') )then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_ustokes', sw_ustokes, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_vstokes', sw_vstokes, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcStokes(va, sw_ustokes, sw_vstokes, fillvalue) - end if -#endif - - if (state_fldchk(exportState, 'Sw_ch')) then - call state_getfldptr(exportState, 'charno', charno, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcCharnk(charno) - endif - - if (state_fldchk(exportState, 'Sw_z0')) then - call state_getfldptr(exportState, 'Sw_z0', z0rlen, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcRoughl(z0rlen) - endif - - if ( state_fldchk(exportState, 'Sw_wavsuu') .and. & - state_fldchk(exportState, 'Sw_wavsuv') .and. & - state_fldchk(exportState, 'Sw_wavsvv')) then - call state_getfldptr(exportState, 'Sw_wavsuu', sxxn, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_wavsuv', sxyn, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_wavsvv', syyn, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcRadstr2D( va, sxxn, sxyn, syyn, fillvalue) - end if - - if (wav_coupling_to_cice) then - call state_getfldptr(exportState, 'Sw_elevation_spectrum', wave_elevation_spectrum, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! Initialize wave elevation spectrum - wave_elevation_spectrum(:,:) = fillvalue - call CalcEF(va, wave_elevation_spectrum) - end if - - if ( state_fldchk(exportState, 'Sw_pstokes_x') .and. & - state_fldchk(exportState, 'Sw_pstokes_y') )then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_pstokes_x', sw_pstokes_x, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_pstokes_y', sw_pstokes_y, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_pstokes_x(:,:) = fillvalue - sw_pstokes_y(:,:) = fillvalue - if (USSPF(1) > 0) then ! Partitioned Stokes drift computation is turned on in mod_def file. - call CALC_U3STOKES(va, 2) - do ib = 1, USSPF(2) - do jsea = 1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - sw_pstokes_x(ib,jsea) = ussp(jsea,ib) - sw_pstokes_y(ib,jsea) = ussp(jsea,nk+ib) - enddo - end do - end if - endif - - if (state_fldchk(exportState, 'Sw_hs')) then - call state_getfldptr(exportState, 'Sw_hs', sw_hs, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_hs(:) = fillvalue - call CalcHS(va, sw_hs, fillvalue) - end if - - if (state_fldchk(exportState, 'Sw_bhd')) then - call state_getfldptr(exportState, 'Sw_bhd', sw_bhd, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_bhd(:) = fillvalue - call CalcBHD(va, sw_bhd, fillvalue) - end if - - if ( state_fldchk(exportState, 'Sw_tauox') .and. & - state_fldchk(exportState, 'Sw_tauoy') )then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_tauox', sw_tauox, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_tauoy', sw_tauoy, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_tauox(:) = fillvalue - sw_tauoy(:) = fillvalue - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if (mapsta(iy,ix) == 1) then - sw_tauox(jsea) = tauox(jsea) - sw_tauoy(jsea) = tauoy(jsea) - endif - enddo - end if - - if ( state_fldchk(exportState, 'Sw_ubrx') .and. & - state_fldchk(exportState, 'Sw_ubry') )then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_ubrx', sw_ubrx, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_ubry', sw_ubry, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcUVBed(va, sw_ubrx, sw_ubry, fillvalue) - end if - - if (state_fldchk(exportState, 'Sw_thm')) then - call state_getfldptr(exportState, 'Sw_thm', sw_thm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcTHM(va, sw_thm, fillvalue) - end if - - if (state_fldchk(exportState, 'Sw_t0m1')) then - call state_getfldptr(exportState, 'Sw_t0m1', sw_t0m1, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call CalcT0M1(va, sw_t0m1, fillvalue) - end if - - if (state_fldchk(exportState, 'Sw_wnmean')) then - call state_getfldptr(exportState, 'Sw_wnmean', sw_wnmean, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_wnmean(:) = fillvalue - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if (mapsta(iy,ix) == 1) then - sw_wnmean(jsea) = wnmean(jsea) - endif - enddo - end if - - if ( state_fldchk(exportState, 'Sw_taubblx') .and. & - state_fldchk(exportState, 'Sw_taubbly') )then - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_taubblx', sw_taubblx, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_taubbly', sw_taubbly, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_taubblx(:) = fillvalue - sw_taubbly(:) = fillvalue - do jsea=1, nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if (mapsta(iy,ix) == 1) then - sw_taubblx(jsea) = taubbl(jsea,1) - sw_taubbly(jsea) = taubbl(jsea,2) - endif - enddo - end if - - if (dbug_flag > 5) then - call state_diagnose(exportState, 'at export ', rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - end subroutine export_fields - - !=============================================================================== - !> Add a fieldname to a list of fields in a state - !! - !! @param[inout] num a counter for added fields - !! @param[inout] fldlist a structure for the standard name and ungridded dims - !! @param[in] stdname a standard field name - !! @param[in] ungridded_lbound the lower bound of an ungridded dimension - !! @param[in] ungridded_ubound the upper bound of an ungridded dimension - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine fldlist_add(num, fldlist, stdname, ungridded_lbound, ungridded_ubound) - integer, intent(inout) :: num - type(fld_list_type), intent(inout) :: fldlist(:) - character(len=*), intent(in) :: stdname - integer, optional, intent(in) :: ungridded_lbound - integer, optional, intent(in) :: ungridded_ubound - - ! local variables - character(len=*), parameter :: subname='(wav_import_export:fldlist_add)' - !------------------------------------------------------------------------------- - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - ! Set up a list of field information - num = num + 1 - if (num > fldsMax) then - call ESMF_LogWrite(trim(subname)//": ERROR num > fldsMax "//trim(stdname), & - ESMF_LOGMSG_ERROR, line=__LINE__, file=__FILE__) - return - endif - fldlist(num)%stdname = trim(stdname) - if (present(ungridded_lbound) .and. present(ungridded_ubound)) then - fldlist(num)%ungridded_lbound = ungridded_lbound - fldlist(num)%ungridded_ubound = ungridded_ubound - end if - - end subroutine fldlist_add - - !=============================================================================== - !> Realize a list of fields in a state - !! - !> @details For a connected field in a State, create an ESMF_Field object of - !! the required dimensionality on the ESMF_Mesh. Remove any unconnected fields from - !! the State. For a scalar field, create a field of dimensionality (1:flds_scalar_num) - !! - !! @param[inout] state an ESMF_State object - !! @param[in] fldlist a list of fields in the State - !! @param[in] numflds the number of fields in the state - !! @param[in] flds_scalar_name the name of the scalar field - !! @param[in] flds_scalar_num the count of scalar fields - !! @param[in] tag a character string for logging - !! @param[in] mesh an ESMF_Mesh object - !! @param[inout] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine fldlist_realize(state, fldList, numflds, flds_scalar_name, flds_scalar_num, mesh, tag, rc) - - ! input/output variables - type(ESMF_State) , intent(inout) :: state - type(fld_list_type) , intent(in) :: fldList(:) - integer , intent(in) :: numflds - character(len=*) , intent(in) :: flds_scalar_name - integer , intent(in) :: flds_scalar_num - character(len=*) , intent(in) :: tag - type(ESMF_Mesh) , intent(in) :: mesh - integer , intent(inout) :: rc - - ! local variables - integer :: n - type(ESMF_Field) :: field - character(len=80) :: stdname - character(len=*),parameter :: subname='(wav_import_export:fldlist_realize)' - ! ---------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - do n = 1, numflds - stdname = fldList(n)%stdname - if (NUOPC_IsConnected(state, fieldName=stdname)) then - if (stdname == trim(flds_scalar_name)) then - call ESMF_LogWrite(trim(subname)//trim(tag)//" Field = "//trim(stdname)//" is connected on root pe", & - ESMF_LOGMSG_INFO) - ! Create the scalar field - call SetScalarField(field, flds_scalar_name, flds_scalar_num, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - call ESMF_LogWrite(trim(subname)//trim(tag)//" Field = "//trim(stdname)//" is connected using mesh", & - ESMF_LOGMSG_INFO) - ! Create the field - if (fldlist(n)%ungridded_lbound > 0 .and. fldlist(n)%ungridded_ubound > 0) then - call ESMF_LogWrite(trim(subname)//trim(tag)//" Field = "//trim(stdname)//" has ungridded dimension", & - ESMF_LOGMSG_INFO) - field = ESMF_FieldCreate(mesh, ESMF_TYPEKIND_R8, name=stdname, meshloc=ESMF_MESHLOC_ELEMENT, & - ungriddedLbound=(/fldlist(n)%ungridded_lbound/), & - ungriddedUbound=(/fldlist(n)%ungridded_ubound/), & - gridToFieldMap=(/2/), rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - field = ESMF_FieldCreate(mesh, ESMF_TYPEKIND_R8, name=stdname, meshloc=ESMF_MESHLOC_ELEMENT, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - end if ! if not scalar field - - ! NOW call NUOPC_Realize - call NUOPC_Realize(state, field=field, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else - if (stdname /= trim(flds_scalar_name)) then - call ESMF_LogWrite(subname // trim(tag) // " Field = "// trim(stdname) // " is not connected.", & - ESMF_LOGMSG_INFO) - call ESMF_StateRemove(state, (/stdname/), rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - end if - end do - - contains !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !> Create a field with scalar data on the root pe - !! - !! @param[inout] field an ESMF_Field - !! @param[in] flds_scalar_name the scalar field name - !! @param[in[ flds_scalar_num the dimnsionality of the scalar field - !! @param[inout] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine SetScalarField(field, flds_scalar_name, flds_scalar_num, rc) - ! ---------------------------------------------- - ! create a field with scalar data on the root pe - ! ---------------------------------------------- - - type(ESMF_Field) , intent(inout) :: field - character(len=*) , intent(in) :: flds_scalar_name - integer , intent(in) :: flds_scalar_num - integer , intent(inout) :: rc - - ! local variables - type(ESMF_Distgrid) :: distgrid - type(ESMF_Grid) :: grid - real(ESMF_KIND_R8), pointer :: fldptr2d(:,:) - character(len=*), parameter :: subname='(wav_import_export:SetScalarField)' - ! ---------------------------------------------- - - rc = ESMF_SUCCESS - - ! create a DistGrid with a single index space element, which gets mapped onto DE 0. - distgrid = ESMF_DistGridCreate(minIndex=(/1/), maxIndex=(/1/), rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return - - grid = ESMF_GridCreate(distgrid, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return - - field = ESMF_FieldCreate(name=trim(flds_scalar_name), grid=grid, typekind=ESMF_TYPEKIND_R8, & - ungriddedLBound=(/1/), ungriddedUBound=(/flds_scalar_num/), gridToFieldMap=(/2/), rc=rc) ! num of scalar values - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return - - ! initialize fldptr to zero - call ESMF_FieldGet(field, farrayPtr=fldptr2d, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - fldptr2d(:,:) = 0.0 - - end subroutine SetScalarField - - end subroutine fldlist_realize - - !=============================================================================== - !> Calculate Charnok parameter for export - !! - !> @details TODO: - !! - !! @param[inout] chkn a 1-D pointer to a field on a mesh - !! - !> @author T. J. Campbell, NRL - !> @date 09-Aug-2017 - subroutine CalcCharnk ( chkn ) - - ! Calculate Charnok for export - - use w3gdatmd, only : nk, nspec - use w3adatmd, only : cg, wn, charn, u10, u10d - use w3wdatmd, only : va -#ifdef W3_ST3 - use w3src3md, only : w3spr3 -#endif -#ifdef W3_ST4 - use w3src4md, only : w3spr4 -#endif - ! input/output variables - real(r8), pointer :: chkn(:) ! 1D Charnock export field pointer - - ! local variables - integer :: isea, jsea - real :: emean, fmean, fmean1, wnmean, amax, ustar, ustdr - real :: tauwx, tauwy, cd, z0, fmeanws, dlwmean - logical :: llws(nspec) - logical, save :: firstCall = .true. - !---------------------------------------------------------------------- - - !TODO: fix firstCall like for Roughl - jsea_loop: do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - if ( firstCall ) then - charn(jsea) = zero - llws(:) = .true. - ustar = zero - ustdr = zero -#ifdef W3_ST3 - call w3spr3( va(:,jsea), cg(1:nk,isea), wn(1:nk,isea), emean, fmean, fmean1, wnmean, & - amax, u10(isea), u10d(isea), ustar, ustdr, tauwx, tauwy, cd, z0, charn(jsea), & - llws, fmeanws ) -#endif -#ifdef W3_ST4 - call w3spr4( va(:,jsea), cg(1:nk,isea), wn(1:nk,isea), emean, fmean, fmean1, wnmean, & - amax, u10(isea), u10d(isea), ustar, ustdr, tauwx, tauwy, cd, z0, charn(jsea), & - llws, fmeanws, dlwmean ) -#endif - endif !firstCall - chkn(jsea) = charn(jsea) - enddo jsea_loop - - firstCall = .false. - - end subroutine CalcCharnk - - !=============================================================================== - !> Calculate wave roughness length for export - !! - !> @details TODO: - !! - !! @param[inout] wrln a 1-D pointer to a field on a mesh - !! - !> @author T. J. Campbell, NRL - !> @date 09-Aug-2017 - subroutine CalcRoughl ( wrln) - - ! Calculate wave roughness length for export - use w3gdatmd, only : nk, mapsf, mapsta, nspec - use w3adatmd, only : cg, wn, charn, u10, u10d - use w3wdatmd, only : va, ust - use w3odatmd, only : runtype -#ifdef W3_ST3 - use w3src3md, only : w3spr3 -#endif -#ifdef W3_ST4 - use w3src4md, only : w3spr4 -#endif - - ! input/output variables - real(r8), pointer :: wrln(:) ! 1D roughness length export field ponter - - ! local variables - integer :: isea, jsea, ix, iy - real :: emean, fmean, fmean1, wnmean, amax, ustar, ustdr - real :: tauwx, tauwy, cd, z0, fmeanws, dlwmean - logical :: llws(nspec) - logical, save :: firstCall = .true. - - !---------------------------------------------------------------------- - - jsea_loop: do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - if ( firstCall ) then - if(( runtype == 'initial' .and. mapsta(iy,ix) == 1 ) .or. & - ( runtype == 'continue' .and. abs(mapsta(iy,ix)) == 1 )) then - charn(jsea) = zero - llws(:) = .true. - ustar = zero - ustdr = zero - tauwx = zero - tauwy = zero -#ifdef W3_ST3 - call w3spr3( va(:,jsea), cg(1:nk,isea), wn(1:nk,isea), emean, fmean, fmean1, wnmean, & - amax, u10(isea), u10d(isea), ustar, ustdr, tauwx, tauwy, cd, z0, charn(jsea), & - llws, fmeanws ) -#endif -#ifdef W3_ST4 - call w3spr4( va(:,jsea), cg(1:nk,isea), wn(1:nk,isea), emean, fmean, fmean1, wnmean, & - amax, u10(isea), u10d(isea), ustar, ustdr, tauwx, tauwy, cd, z0, charn(jsea), & - llws, fmeanws, dlwmean ) -#endif - end if - endif !firstCall - wrln(jsea) = charn(jsea)*ust(isea)**2/grav - enddo jsea_loop - - firstCall = .false. - - end subroutine CalcRoughl - - !=============================================================================== - !> Calculate radiation stresses for export - !! - !> @details Calculates radiation stresses independently of w3iogomd to ensure - !! that export fields are updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param sxxn a 1-D pointer to a field on a mesh - !! @param sxyn a 1-D pointer to a field on a mesh - !! @param syyn a 1-D pointer to a field on a mesh - !! @param[in] fval fill value - !> @author Denise.Worthen@noaa.gov - !> @date 08-05-2024 - subroutine CalcRadstr2D ( a, sxxn, sxyn, syyn, fval) - - use w3gdatmd, only : nseal, nk, nth, sig, es2, esc, ec2, fte, dden, mapsf, mapsta - use w3adatmd, only : cg, wn - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) ! Input spectra (in par list to change shape) - real(ESMF_KIND_R8), intent(in) :: fval - real(ESMF_KIND_R8), pointer, intent(inout) :: sxxn(:) ! eastward-component export field - real(ESMF_KIND_R8), pointer, intent(inout) :: sxyn(:) ! eastward-northward-component export field - real(ESMF_KIND_R8), pointer, intent(inout) :: syyn(:) ! northward-component export field - - ! local variables - integer :: isea, jsea, ik, ith, ix, iy - real :: factor, abxx, abyy, abxy, sxx1, syy1, sxy1 - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - sxx1 = 0.0 - syy1 = 0.0 - sxy1 = 0.0 - do ik = 1,nk - factor = max ( 0.5, cg(ik,isea)/sig(ik)*wn(ik,isea) ) - abxx = 0.0 - abyy = 0.0 - abxy = 0.0 - do ith = 1,nth - abxx = abxx + ((1.0 + ec2(ith))*factor-0.5) * a(ith,ik,jsea) - abyy = abyy + ((1.0 + es2(ith))*factor-0.5) * a(ith,ik,jsea) - abxy = abxy + esc(ith)* factor * a(ith,ik,jsea) - end do - - factor = dden(ik) / cg(ik,isea) - abxx = max ( 0.0, abxx ) * factor - abyy = max ( 0.0, abyy ) * factor - abxy = abxy * factor - - sxx1 = sxx1 + abxx - syy1 = syy1 + abyy - sxy1 = sxy1 + abxy - end do !ik - sxx1 = sxx1 + fte * abxx/cg(nk,isea) - syy1 = syy1 + fte * abyy/cg(nk,isea) - sxy1 = sxy1 + fte * abxy/cg(nk,isea) - end if - if (mapsta(iy,ix) == 1) then ! active sea point - sxxn(jsea) = sxx1*dwat*grav - syyn(jsea) = syy1*dwat*grav - sxyn(jsea) = sxy1*dwat*grav - else - sxxn(jsea) = fval - syyn(jsea) = fval - sxyn(jsea) = fval - end if - end do - - end subroutine CalcRadstr2D - - !=============================================================================== - !> Calculate wave elevation spectrum for export - !! - !> @details Calculates wave elevation spectrum independently of w3iogomd to ensure - !! that EF field sent to sea ice component is updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param[inout] wave_elevation_spectrum a 2-D pointer to a field on a mesh - !! - !> @author Denise.Worthen@noaa.gov - !> @date 10-28-2022 - subroutine CalcEF (a, wave_elevation_spectrum) - - use constants, only : tpi - use w3gdatmd, only : nth, nk, nseal, mapsf, mapsta, dden, dsii - use w3adatmd, only : cg - use w3parall, only : init_get_isea - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) - real(ESMF_KIND_R8), pointer :: wave_elevation_spectrum(:,:) - - ! local variables - real :: ab(nseal) - real :: ebd, factor - integer :: ik, ith, isea, jsea, ix, iy - - do ik = 1,nwav_elev_spectrum - ab = 0.0 - do ith = 1, nth - do jsea = 1,nseal_cpl - ab(jsea) = ab(jsea) + a(ith,ik,jsea) - end do - end do - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - factor = dden(ik) / cg(ik,isea) - ebd = ab(jsea) * factor - ebd = ebd / dsii(ik) - wave_elevation_spectrum(ik,jsea) = ebd * tpi - else - wave_elevation_spectrum(ik,jsea) = 0. - end if - end do - end do - - end subroutine CalcEF - - !=============================================================================== - !> Calculate significant wave height for export - !! - !> @details Calculates significant wave height independently of w3iogomd to ensure - !! that exported HS field is updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param[inout] hs a 1-D pointer to a field on a mesh - !! - !> @author Denise.Worthen@noaa.gov - !> @date 8-02-2024 - subroutine CalcHS (a, hs, fval) - - use constants, only : tpi - use w3gdatmd, only : nth, nk, nseal, mapsf, mapsta, dden, fte - use w3adatmd, only : cg - use w3parall, only : init_get_isea - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) - real(ESMF_KIND_R8), intent(in) :: fval - real(ESMF_KIND_R8), pointer, intent(inout) :: hs(:) - - ! local variables - real :: factor, eband, ab, et - integer :: ik, ith, isea, jsea, ix, iy - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - et = 0.0 - do ik = 1,nk - factor = dden(ik) / cg(ik,isea) - ab = 0.0 - do ith = 1,nth - ab = ab + a(ith,ik,jsea) - end do - et = et + ab*factor - end do !ik - eband = ab/cg(nk,isea) - et = et + fte*eband -#ifdef W3_O9 - if ( et .ge. 0.0 ) then - hs(jsea) = 4.0*sqrt ( et ) - else - hs(jsea) = -4.0*sqrt ( -et ) - end if -#else - hs(jsea) = 4.0*sqrt ( et ) -#endif - else - hs(jsea) = fval - end if - end do - end subroutine CalcHS - - !=============================================================================== - !> Calculate Bernoulli head pressure for export - !! - !> @details Calculates Bernoulli head pressure independently of w3iogomd to ensure - !! that exported BHD field is updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param[in] fval fillvalue - !! @param[inout] bhd a 1-D pointer to a field on a mesh - !! - !> @author Denise.Worthen@noaa.gov - !> @date 8-02-2024 - subroutine CalcBHD (a, bhd, fval) - - use w3gdatmd, only : nth, nk, nseal, mapsf, mapsta, dden - use w3adatmd, only : dw, cg, wn - use w3parall, only : init_get_isea - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) - real(ESMF_KIND_R8), intent(in) :: fval - real(ESMF_KIND_R8), pointer, intent(inout) :: bhd(:) - - ! local variables - real :: factor, kd, ab, ebd, bhd1 - integer :: ik, ith, isea, jsea, ix, iy - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - ebd = 0.0 - bhd1 = 0.0 - do ik = 1,nk - factor = dden(ik) / cg(ik,isea) - ab = 0.0 - do ith = 1,nth - ab = ab + a(ith,ik,jsea) - end do - ebd = ab*factor - kd = max ( 0.001 , wn(ik,isea) * dw(isea) ) - if (kd .lt. 6.0) then - bhd1 = bhd1 + grav*wn(ik,isea) * ebd / (sinh(2.*kd)) - end if - end do !ik - bhd(jsea) = bhd1 - else - bhd(jsea) = fval - end if - end do - - end subroutine CalcBHD - - !==================================================================================== - !> Calculate Stokes drift for export - !! - !> @details Calculates Stokes drift independently of w3iogomd to ensure - !! that exported USSX and USSY fields are updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param[in] fval fill value - !! @param[inout] us a 1-D pointer to a field on a mesh - !! @param[inout] vs a 1-D pointer to a field on a mesh - !! - !> @author Denise.Worthen@noaa.gov - !> @date 8-02-2024 - subroutine CalcStokes(a, us, vs, fval) - - use w3gdatmd, only : nth, nk, nseal, mapsf, mapsta, dden, ecos, esin - use w3adatmd, only : dw, cg, wn - use w3gdatmd, only : sig - use w3parall, only : init_get_isea - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) - real(ESMF_KIND_R8), intent(in) :: fval - real(ESMF_KIND_R8), pointer, intent(inout) :: us(:), vs(:) - - ! local variables - real :: factor, kd, abx, aby, fkd, ussco, us1, vs1 - integer :: ik, ith, isea, jsea, ix, iy - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - us1 = 0.0 - vs1 = 0.0 - do ik = 1,nk - factor = dden(ik) / cg(ik,isea) - abx = 0.0 - aby = 0.0 - do ith = 1,nth - abx = abx + a(ith,ik,jsea)*ecos(ith) - aby = aby + a(ith,ik,jsea)*esin(ith) - end do - kd = max ( 0.001 , wn(ik,isea) * dw(isea) ) - if (kd .lt. 6.0) then - fkd = factor / sinh(kd)**2 - ussco = fkd*sig(ik)*wn(ik,isea)*cosh(2.0*kd) - else - ussco = factor*sig(ik)*2.0*wn(ik,isea) - end if - us1 = us1 + abx*ussco - vs1 = vs1 + aby*ussco - end do !ik - us(jsea) = us1 - vs(jsea) = vs1 - else - us(jsea) = fval - vs(jsea) = fval - end if - end do - - end subroutine CalcStokes - - !==================================================================================== - !> Calculate UVBed drift for export - !! - !> @details Calculates near bed orbital velocities independently of w3iogomd to - !! ensure that exported UBRX and UBRY fields are updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param[in] fval fill value - !! @param[inout] ubrx a 1-D pointer to a field on a mesh - !! @param[inout] vbry a 1-D pointer to a field on a mesh - !! - !> @author Denise.Worthen@noaa.gov - !> @date 8-02-2024 - subroutine CalcUVBed(a, ubrx, ubry, fval) - - use w3gdatmd, only : nth, nk, nseal, mapsf, mapsta, dden, ecos, esin - use w3adatmd, only : dw, cg, wn - use w3gdatmd, only : sig - use w3parall, only : init_get_isea - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) - real(ESMF_KIND_R8), intent(in) :: fval - real(ESMF_KIND_R8), pointer, intent(inout) :: ubrx(:), ubry(:) - - ! local variables - real :: factor, kd, ab, abx, aby, fkd, uba1, ubd1, ubr1 - integer :: ik, ith, isea, jsea, ix, iy - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - uba1 = 0.0 - ubd1 = 0.0 - ubr1 = 0.0 - do ik = 1,nk - factor = dden(ik) / cg(ik,isea) - ab = 0.0 - abx = 0.0 - aby = 0.0 - do ith = 1,nth - ab = ab + a(ith,ik,jsea) - abx = abx + a(ith,ik,jsea)*ecos(ith) - aby = aby + a(ith,ik,jsea)*esin(ith) - end do - kd = max ( 0.001 , wn(ik,isea) * dw(isea) ) - if (kd .lt. 6.0) then - fkd = factor / sinh(kd)**2 - ubr1 = ubr1 + ab*sig(ik)**2 * fkd - uba1 = uba1 + abx*sig(ik)**2 * fkd - ubd1 = ubd1 + aby*sig(ik)**2 * fkd - end if - end do !ik - ubr1 = sqrt(2.0*max(0.0,ubr1)) - if (ubr1 .ge. 1.0e-7) then - ubd1 = atan2(ubd1,uba1) - else - ubd1 = 0.0 - end if - uba1 = ubr1 - ubrx(jsea) = uba1*cos(ubd1) - ubry(jsea) = uba1*sin(ubd1) - else - ubrx(jsea) = fval - ubry(jsea) = fval - end if - end do - - end subroutine CalcUVBed - - !=============================================================================== - !> Calculate mean wave direction for export - !! - !> @details Calculates mean wave direction independently of w3iogomd to ensure - !! that exported THM field is updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param[inout] thm a 1-D pointer to a field on a mesh - !! - !> @author Denise.Worthen@noaa.gov - !> @date 8-02-2024 - subroutine CalcTHM (a, thm, fval) - - use constants, only : rade - use w3gdatmd, only : nth, nk, nseal, mapsf, mapsta, dden, fte, ecos, esin - use w3adatmd, only : cg - use w3parall, only : init_get_isea - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) - real(ESMF_KIND_R8), intent(in) :: fval - real(ESMF_KIND_R8), pointer, intent(inout) :: thm(:) - - ! local variables - real :: factor, abx, aby, etx, ety - integer :: ik, ith, isea, jsea, ix, iy - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - etx = 0.0 - ety = 0.0 - do ik = 1,nk - factor = dden(ik) / cg(ik,isea) - abx = 0.0 - aby = 0.0 - do ith = 1,nth - abx = abx + a(ith,ik,jsea)*ecos(ith) - aby = aby + a(ith,ik,jsea)*esin(ith) - end do - etx = etx + abx*factor - ety = ety + aby*factor - end do !ik - etx = etx + fte * abx/cg(nk,isea) - ety = ety + fte * aby/cg(nk,isea) - if ( abs(etx) + abs(ety) .gt. 1.e-7 ) then - thm(jsea) = atan2(ety,etx) - else - thm(jsea) = 0.0 - end if - ! convert to degrees - thm(jsea) = mod(630.0 - rade*thm(jsea), 360.0) - else - thm(jsea) = fval - end if - end do - - end subroutine CalcTHM - - !=============================================================================== - !> Calculate mean wave direction for export - !! - !> @details Calculates mean wave period independently of w3iogomd to ensure - !! that exported T0M1 field is updated at the coupling frequency - !! - !! @param[in] a input spectra - !! @param[inout] thm a 1-D pointer to a field on a mesh - !! - !> @author Denise.Worthen@noaa.gov - !> @date 8-02-2024 - subroutine CalcT0M1 (a, t0m1, fval) - - use constants, only : tpi - use w3gdatmd, only : nth, nk, nseal, mapsf, mapsta, dden, fte, fttr, sig - use w3adatmd, only : cg - use w3parall, only : init_get_isea - - ! input/output variables - real, intent(in) :: a(nth,nk,0:nseal) - real(ESMF_KIND_R8), intent(in) :: fval - real(ESMF_KIND_R8), pointer, intent(inout) :: t0m1(:) - - ! local variables - real :: factor, eband, ab, et, ebd, etr - integer :: ik, ith, isea, jsea, ix, iy - - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - if (mapsta(iy,ix) == 1) then ! active sea point - etr = 0.0 - et = 0.0 - do ik = 1,nk - factor = dden(ik) / cg(ik,isea) - ab = 0.0 - do ith = 1,nth - ab = ab + a(ith,ik,jsea) - end do - ebd = ab*factor - et = et + ebd - etr = etr + ebd/sig(ik) - end do !ik - eband = ab/cg(nk,isea) - et = et + fte*eband - etr = etr + fttr*eband - if (et .gt. 1.0e-7) then - t0m1(jsea) = etr/et * tpi - else - t0m1(jsea) = tpi/sig(nk) - end if - else - t0m1(jsea) = fval - end if - end do - - end subroutine CalcT0M1 - - !==================================================================================== - !> Create a global field across all PEs - !! - !> @details Distributes the global values of the named import state field to all PEs - !! using a global reduce across all PEs. - !! - !! @param[in] importstate the import state - !! @param[in] fldname the field name - !! @param[in] vm the ESMF VM object - !! @param[out] global_output the global nsea values - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine SetGlobalInput(importState, fldname, vm, global_output, rc) - - use w3gdatmd, only: nsea - - ! input/output variables - type(ESMF_State) , intent(in) :: importState - character(len=*) , intent(in) :: fldname - type(ESMF_VM) , intent(in) :: vm - real(r4) , intent(out) :: global_output(nsea) - integer , intent(out) :: rc - - ! local variables - integer :: jsea, isea - real(r4) :: global_input(nsea) - real(r8), pointer :: dataptr(:) - character(len=*), parameter :: subname = '(wav_import_export:setGlobalInput)' - - !--------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - call state_getfldptr(importState, trim(fldname), dataptr, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - global_output(:) = 0._r4 - global_input(:) = 0._r4 - do jsea = 1, nseal_cpl - call init_get_isea(isea, jsea) - global_input(isea) = real(dataptr(jsea),4) - end do - call ESMF_VMAllReduce(vm, sendData=global_input, recvData=global_output, count=nsea, reduceflag=ESMF_REDUCE_SUM, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - end subroutine SetGlobalInput - - !==================================================================================== - !> Fill a global field with import state values at nsea points - !! - !> @details Fills a global field on all points from the values at all sea points - !! - !! @param[in] global_data values of a global field on nsea points - !! @param[inout] globalfield values of a global field on all points - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine fillglobal_with_import(global_data, globalfield) - - use w3gdatmd, only: nsea, mapsf, nx, ny - - real(r4), intent(in) :: global_data(nsea) - real(r4), intent(inout) :: globalfield(nx,ny) - - ! local variables - integer :: isea, ix, iy - - do isea = 1,nsea - ix = mapsf(isea,1) - iy = mapsf(isea,2) - globalfield(ix,iy) = global_data(isea) - end do - - end subroutine fillglobal_with_import - - !==================================================================================== - !> Fill a global field by merging - !! - !> @details Merges the global import field values on sea points with values from a file - !! using a provided mask - !! - !! @param[in] global_data values of a global field on nsea points - !! @param[in] global_mask values of a global mask - !! @param[in] filedata values of a global field from a file - !! @param[inout] globalfield values of a global field on all points - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine fillglobal_with_merge_import(global_data, global_mask, filedata, globalfield) - - use w3gdatmd, only: nsea, mapsf, nx, ny - - real(r4), intent(in) :: global_data(nsea) - real(r4), intent(in) :: global_mask(nsea) - real(r4), intent(in) :: filedata(nsea) - real(r4), intent(inout) :: globalfield(nx,ny) - - ! local variables - integer :: isea, ix, iy - - do isea = 1,nsea - ix = mapsf(isea,1) - iy = mapsf(isea,2) - globalfield(ix,iy) = global_data(isea)*global_mask(isea) + (1.0_r4 - global_mask(isea))*filedata(isea) - end do - - end subroutine fillglobal_with_merge_import - - !==================================================================================== - !> Obtain the import mask used to merge a field from the import state with values from - !! a file - !! - !> @details Set the import mask for merging an import state field with values from - !! a file. The import mask is set 0 where the field from the import state has a value - !! of fillValue due to non-overlapping model domains. The field values read from a - !! file will be used to provide the values in these regions. The values of the import - !! mask are set initially (on the first ModelAdvance) to be 0 everywhere. In this case - !! there are no valid import state values and only the values read from the file are - !! used. At the second ModelAdvance, the import state contains valid values and the - !! import mask can be set according the regions where the import state contains the - !! fillValue. The import mask is fixed in time after the second ModelAdvance. - !! - !! @param[in] importState an ESMF_State object for import fields - !! @param[in] clock an ESMF_Clock object - !! @param[in] fldname a field name - !! @param[in] vm an ESMF_VM object - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine set_importmask(importState, clock, fldname, vm, rc) - - use w3gdatmd, only: nsea, nseal - use w3odatmd, only: naproc, iaproc - - ! input/output variables - type(ESMF_State) , intent(in) :: importState - type(ESMF_Clock) , intent(in) :: clock - character(len=*) , intent(in) :: fldname - type(ESMF_VM) , intent(in) :: vm - integer , intent(out) :: rc - - ! local variables - type(ESMF_Time) :: currTime, startTime - type(ESMF_TimeInterval) :: timeStep - logical :: firstCall, secondCall - real(r4) :: fillValue = 9.99e20 - integer :: isea, jsea - real(r8), pointer :: dataptr(:) - real(r4) :: mask_local(nsea) - character(len=CL) :: msgString - character(len=*), parameter :: subname = '(wav_import_export:set_importmask)' - !--------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - call ESMF_ClockGet(clock, startTime=startTime, currTime=currTime, timeStep=timeStep, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! set call flags - if (startTime == currTime) then - firstCall = .true. - secondCall = .false. - elseif (currTime == startTime+timeStep) then - firstCall = .false. - secondCall = .true. - else - firstCall = .false. - secondCall = .false. - end if - if (firstcall) then - allocate(import_mask(nsea)) - end if - - ! return if not the first or second call, mask has already been set - if (.not. firstCall .and. .not. secondCall) return - - ! no valid import at firstCall, use all data - if (firstCall) then - import_mask(:) = 0.0_r4 - call ESMF_ClockPrint(clock, options='currTime', preString='Setting initial import_mask at currTime : ', & - unit=msgString, rc=rc) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - end if - - ! set merge mask where import field has fillvalue due to non-overlapping model domains - ! import_mask will be 1 where valid import exists and 0 where no valid import exists - if (secondCall) then - call ESMF_ClockPrint(clock, options='currTime', preString='Setting new import_mask at currTime : ', & - unit=msgString, rc=rc) - call state_getfldptr(importState, trim(fldname), dataptr, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - import_mask(:) = 0.0_r4 - mask_local(:) = 1.0_r4 - do jsea = 1, nseal - isea = iaproc + (jsea-1)*naproc - if (real(dataptr(jsea),4) .ge. fillValue) then - mask_local(isea) = 0.0_r4 - end if - end do - call ESMF_VMAllReduce(vm, sendData=mask_local, recvData=import_mask, count=nsea, reduceflag=ESMF_REDUCE_MIN, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine set_importmask - - !==================================================================================== - !> Write a netCDF file containing the global field values for debugging - !! - !> @details Write a time-stamped netCDF file containing the values of a global field, - !! where the global_field is provided on either on all points or only nsea points. In - !! either case, the field will be written to the file on the mesh. - !! - !! @param[in] gcomp an ESMF_GridComp object - !! @param[in] fldname a field name - !! @param[in] global_data a global field - !! @param[in] nvals the dimension of global_data - !! @param[out] rc return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine check_globaldata(gcomp, fldname, global_data, nvals, rc) - - use w3gdatmd, only: nseal, mapsf, nx, ny - use w3odatmd, only: naproc, iaproc - - ! input/output variables - type(ESMF_GridComp) , intent(inout) :: gcomp - character(len=*) , intent(in) :: fldname - integer , intent(in) :: nvals - real(r4) , intent(in) :: global_data(nvals) - integer , intent(out) :: rc - - ! local variables - type(ESMF_Clock) :: clock - type(ESMF_State) :: importState - type(ESMF_Time) :: nexttime - type(ESMF_Field) :: lfield - type(ESMF_Field) :: newfield - type(ESMF_MeshLoc) :: meshloc - type(ESMF_Mesh) :: lmesh - character(len=CS) :: timestr - character(ESMF_MAXSTR) ,pointer :: lfieldnamelist(:) - integer :: fieldCount - integer :: yr,mon,day,sec ! time units - integer :: jsea, isea, ix, iy - real(r8), pointer :: dataptr1d(:) - real(r8) :: fillValue = 9.99e20 - character(len=*), parameter :: subname = '(wav_import_export:check_globaldata)' - - !--------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - call ESMF_GridCompGet(gcomp, importState=importstate, clock=clock, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! use next time; the NUOPC clock is not updated until the end of the time interval - call ESMF_ClockGetNextTime(clock, nextTime=nexttime, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeGet(nexttime,yy=yr, mm=mon, dd=day, s=sec, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - write(timestr,'(i4.4,a,i2.2,a,i2.2,a,i5.5)') yr,'-',mon,'-',day,'-',sec - - call ESMF_StateGet(importState, itemCount=fieldCount, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - allocate(lfieldNameList(fieldCount)) - call ESMF_StateGet(importState, itemNameList=lfieldNameList, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - ! assumes no scalar field is present in importState - call ESMF_StateGet(importState, itemName=lfieldNameList(1), field=lfield, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - deallocate(lfieldNameList) - - call ESMF_FieldGet(lfield, mesh=lmesh, meshloc=meshloc, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - newfield = ESMF_FieldCreate(lmesh, ESMF_TYPEKIND_R8, meshloc=meshloc, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldGet(newfield, farrayptr=dataPtr1d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - dataptr1d(:) = fillValue - - !TODO: get working for unstr - if (nvals .eq. nx*ny) then - do jsea = 1, nseal - isea = iaproc + (jsea-1)*naproc - ix = mapsf(isea,1) - iy = mapsf(isea,2) - dataptr1d(jsea) = global_data(ix + (iy-1)*nx) - end do - else - do jsea = 1,nseal - isea = iaproc + (jsea-1)*naproc - dataptr1d(jsea) = global_data(isea) - end do - end if - - call ESMF_FieldWrite(newfield, filename=trim(fldname)//'.'//trim(timestr)//'.nc', & - variableName=trim(fldname), overwrite=.true., rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldDestroy(newfield, rc=rc, noGarbage=.true.) - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine check_globaldata - - !======================================================================== - !> Read input from a file - !! - !> @details Obtain values from a file to fill an import state within a - !! non-overlapped region of the wave domain - !! - !! @param[in] idfld a file name to read - !! @param[in] time0 the initial time - !! @param[in] timen the ending time - !! @param[out] wxdata a 1-D pointer to a zonal wind field - !! @param[out] wydata a 1-D pointer to a meridional wind field - !! @param[out] rc a return code - !! - !> @author U. Turuncoglu, NCAR - !> @date 18-May-2021 - subroutine readfromfile (idfld, wxdata, wydata, time0, timen, rc) - - use w3gdatmd, only: nsea, mapsf, gtype, nx, ny - use w3fldsmd, only: w3fldo, w3fldg - - ! input/output variables - character(len=*) , intent(in) :: idfld - integer , intent(in) :: time0(2) - integer , intent(in) :: timen(2) - real(r4) , intent(out) :: wxdata(nsea) - real(r4) , intent(out) :: wydata(nsea) - integer, optional, intent(out) :: rc - - ! local variables - integer :: ierr, tw0l(2), twnl(2) - integer :: ix, iy, isea - integer :: nxt, nyt, gtypet, filler(3), tideflag - integer :: mdse = 6 - integer :: mdst = 10 - integer :: mdsf = 13 ! same as ndsf(3) in ww3_shel - real :: wx0l(nx,ny), wy0l(nx,ny) - real :: wxnl(nx,ny), wynl(nx,ny) - real :: dt0l(nx,ny), dtnl(nx,ny) - logical :: flagsc = .false. - logical, save :: firstCall = .true. - character(len=13) :: tsstr - character(len=3) :: tsfld, lstring - character(CL) :: logmsg - character(len=*), parameter :: subname = '(wav_import_export:readfromfile)' - !--------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - lstring = trim(idfld) - if (firstCall) then - ! open file - call w3fldo('READ', lstring, mdsf, mdst, mdse, nx, ny, gtype, ierr) - write(logmsg,*) "Opening "//lstring//", iostat = ", ierr - call ESMF_LogWrite(trim(logmsg), ESMF_LOGMSG_INFO) - if (ierr.ne.0) then - write(logmsg,*) "Error in opening "//lstring//", iostat = ", ierr - call ESMF_LogWrite(trim(logmsg), ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - endif - firstCall = .false. - end if - - ! init variables - wx0l = 0.0 - wy0l = 0.0 - dt0l = 0.0 - wxnl = 0.0 - wynl = 0.0 - dtnl = 0.0 - - ! need to rewind to the begining of the file to access - ! data of requested date correctly - rewind(mdsf) - - ! read header information - ! this was inside of w3fldo call but since we are opening file - ! once and rewinding, the header need to be read - read(mdsf, iostat=ierr) tsstr, tsfld, nxt, nyt, gtypet, filler(1:2), tideflag - - ! read input - call w3fldg('READ', lstring, mdsf, mdst, mdse, nx, ny, nx, ny, time0, timen, tw0l, wx0l, wy0l, & - dt0l, twnl, wxnl, wynl, dtnl, ierr, flagsc) - - wxdata(:) = 0.0_r4 - wydata(:) = 0.0_r4 - do isea = 1,nsea - ix = mapsf(isea,1) - iy = mapsf(isea,2) - wxdata(isea) = wx0l(ix,iy) - wydata(isea) = wy0l(ix,iy) - end do - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine readfromfile -end module wav_import_export diff --git a/model/src/wav_kind_mod.F90 b/model/src/wav_kind_mod.F90 deleted file mode 100644 index 05e0a79a1..000000000 --- a/model/src/wav_kind_mod.F90 +++ /dev/null @@ -1,27 +0,0 @@ -!> @file wav_kind_mod -!! -!> Precision and kind constants -!! -!> @details Contains public definitions of variable types and constants -!! -!> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov -!> @date 01-05-2022 -module wav_kind_mod - - !---------------------------------------------------------------------------- - ! precision/kind constants add data public - !---------------------------------------------------------------------------- - public - integer,parameter :: SHR_KIND_R8 = selected_real_kind(12) !< @public 8 byte real - integer,parameter :: SHR_KIND_R4 = selected_real_kind( 6) !< @public 4 byte real - integer,parameter :: SHR_KIND_RN = kind(1.0) !< @public native real - integer,parameter :: SHR_KIND_I8 = selected_int_kind (13) !< @public 8 byte integer - integer,parameter :: SHR_KIND_I4 = selected_int_kind ( 6) !< @public 4 byte integer - integer,parameter :: SHR_KIND_IN = kind(1) !< @public native integer - integer,parameter :: SHR_KIND_CS = 80 !< @public short char - integer,parameter :: SHR_KIND_CM = 160 !< @public mid-sized char - integer,parameter :: SHR_KIND_CL = 256 !< @public long char - integer,parameter :: SHR_KIND_CX = 512 !< @public extra-long char - integer,parameter :: SHR_KIND_CXX= 4096 !< @public extra-extra-long char - -end module wav_kind_mod diff --git a/model/src/wav_pio_mod.F90 b/model/src/wav_pio_mod.F90 deleted file mode 100644 index 4f9b637a4..000000000 --- a/model/src/wav_pio_mod.F90 +++ /dev/null @@ -1,420 +0,0 @@ -!> @file wav_pio -!! -!> @brief Manage PIO for WW3 -!! -!> @author Denise.Worthen@noaa.gov -!> @date 08-02-2024 -module wav_pio_mod - - use w3gdatmd , only : nk, nx, ny, mapsf - use w3parall , only : init_get_isea - use w3gdatmd , only : nseal - use pio - use netcdf -#ifdef W3_PDLIB - use yowNodepool , only : ng -#endif - implicit none - - private - - interface wav_pio_initdecomp - module procedure wav_pio_initdecomp_2d - module procedure wav_pio_initdecomp_3d - end interface wav_pio_initdecomp - - integer :: pio_iotype - integer :: pio_ioformat - type(iosystem_desc_t), pointer :: wav_pio_subsystem - - public :: wav_pio_init - public :: pio_iotype - public :: pio_ioformat - public :: wav_pio_subsystem - public :: wav_pio_initdecomp - public :: handle_err - - !=============================================================================== -contains - !=============================================================================== - !> Configure PIO for WW3 - !! - !> @details Use either CESM shr code or configuration variables to configure PIO. - !! This configuration code is lifted from CMEPS. - !! - !! @param gcomp an ESMF_GridComp object - !! @param mpi_comm the MPI communicator - !! @param[in] stdout the logfile unit on the root_task - !! @param[in] numprocs naproc/nthrds - !! @param[out] rc a return code - !! - !> @author Denise.Worthen@noaa.gov - !> @date 08-02-2024 - subroutine wav_pio_init(gcomp, mpi_comm, stdout, numprocs, rc) - -#ifdef CESMCOUPLED - use shr_pio_mod, only : shr_pio_getiosys, shr_pio_getiotype, shr_pio_getioformat -#endif - use ESMF , only : ESMF_GridComp, ESMF_UtilStringUpperCase, ESMF_VM, ESMF_FAILURE - use ESMF , only : ESMF_SUCCESS, ESMF_LogWrite, ESMF_LOGMSG_ERROR - use NUOPC , only : NUOPC_CompAttributeGet - use wav_kind_mod , only : CL=>SHR_KIND_CL, CS=>SHR_KIND_CS - use w3odatmd , only : iaproc - use wav_shr_mod , only : chkerr - - ! input/output arguments - type(ESMF_GridComp), intent(in) :: gcomp - integer , intent(in) :: mpi_comm - integer , intent(in) :: stdout - integer , intent(in) :: numprocs - integer , intent(out) :: rc - - integer :: pio_numiotasks - integer :: pio_stride - integer :: pio_rearranger - integer :: pio_root - integer :: pio_debug_level - character(len=CS) :: cvalue - logical :: isPresent, isSet - integer :: my_task, master_task - character(len=CS) :: subname='wav_pio_init' - character(*), parameter :: u_FILE_u = & !< a character string for an ESMF log message - __FILE__ - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - -#ifdef CESMCOUPLED - ! TODO: needs testing - wav_pio_subsystem => shr_pio_getiosys(inst_name) - pio_iotype = shr_pio_getiotype(inst_name) - if ((pio_iotype==PIO_IOTYPE_NETCDF).or.(pio_iotype==PIO_IOTYPE_PNETCDF)) then - nmode0 = shr_pio_getioformat(inst_name) - else - nmode0 = 0 - endif - - call pio_seterrorhandling(wav_pio_subsystem, PIO_RETURN_ERROR) -#else - my_task = iaproc - 1 - master_task = 0 - - ! code lifted from CMEPS med_io_mod.F90 - ! query component specific PIO attributes - ! pio_netcdf_format - call NUOPC_CompAttributeGet(gcomp, name='pio_netcdf_format', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (isPresent .and. isSet) then - cvalue = ESMF_UtilStringUpperCase(cvalue) - if (trim(cvalue) .eq. 'CLASSIC') then - pio_ioformat = 0 - else if (trim(cvalue) .eq. '64BIT_OFFSET') then - pio_ioformat = PIO_64BIT_OFFSET - else if (trim(cvalue) .eq. '64BIT_DATA') then - pio_ioformat = PIO_64BIT_DATA - else - call ESMF_LogWrite(trim(subname)//': need to provide valid option for pio_ioformat ' & - //'(CLASSIC|64BIT_OFFSET|64BIT_DATA)', ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - end if - else - cvalue = '64BIT_OFFSET' - pio_ioformat = PIO_64BIT_OFFSET - end if - if (my_task == 0) write(stdout,*) trim(subname), ' : pio_netcdf_format = ', trim(cvalue), pio_ioformat - - ! pio_typename - call NUOPC_CompAttributeGet(gcomp, name='pio_typename', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (isPresent .and. isSet) then - cvalue = ESMF_UtilStringUpperCase(cvalue) - if (trim(cvalue) .eq. 'NETCDF') then - pio_iotype = PIO_IOTYPE_NETCDF - else if (trim(cvalue) .eq. 'PNETCDF') then - pio_iotype = PIO_IOTYPE_PNETCDF - else if (trim(cvalue) .eq. 'NETCDF4C') then - pio_iotype = PIO_IOTYPE_NETCDF4C - else if (trim(cvalue) .eq. 'NETCDF4P') then - pio_iotype = PIO_IOTYPE_NETCDF4P - else - call ESMF_LogWrite(trim(subname)//': need to provide valid option for pio_typename ' & - //'(NETCDF|PNETCDF|NETCDF4C|NETCDF4P)', ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - end if - else - cvalue = 'NETCDF' - pio_iotype = PIO_IOTYPE_NETCDF - end if - if (my_task == 0) write(stdout,*) trim(subname), ' : pio_typename = ', trim(cvalue), pio_iotype - - ! pio_root - call NUOPC_CompAttributeGet(gcomp, name='pio_root', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (isPresent .and. isSet) then - read(cvalue,*) pio_root - if (pio_root < 0) then - pio_root = 1 - endif - pio_root = min(pio_root, numprocs-1) - else - pio_root = 1 - end if - if (my_task == 0) write(stdout,*) trim(subname), ' : pio_root = ', pio_root - - ! pio_stride - call NUOPC_CompAttributeGet(gcomp, name='pio_stride', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (isPresent .and. isSet) then - read(cvalue,*) pio_stride - else - pio_stride = -99 - end if - if (my_task == 0) write(stdout,*) trim(subname), ' : pio_stride = ', pio_stride - - ! pio_numiotasks - call NUOPC_CompAttributeGet(gcomp, name='pio_numiotasks', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (isPresent .and. isSet) then - read(cvalue,*) pio_numiotasks - else - pio_numiotasks = -99 - end if - if (my_task == 0) write(stdout,*) trim(subname), ' : pio_numiotasks = ', pio_numiotasks - - ! check for parallel IO, it requires at least two io pes - if (numprocs > 1 .and. pio_numiotasks == 1 .and. & - (pio_iotype .eq. PIO_IOTYPE_PNETCDF .or. pio_iotype .eq. PIO_IOTYPE_NETCDF4P)) then - pio_numiotasks = 2 - pio_stride = min(pio_stride, numprocs/2) - if (my_task == 0) then - write(stdout,*) ' parallel io requires at least two io pes - following parameters are updated:' - write(stdout,*) trim(subname), ' : pio_stride = ', pio_stride - write(stdout,*) trim(subname), ' : pio_numiotasks = ', pio_numiotasks - end if - endif - - ! check/set/correct io pio parameters - if (pio_stride > 0 .and. pio_numiotasks < 0) then - pio_numiotasks = max(1, numprocs/pio_stride) - if (my_task == 0) write(stdout,*) trim(subname), ' : update pio_numiotasks = ', pio_numiotasks - else if(pio_numiotasks > 0 .and. pio_stride < 0) then - pio_stride = max(1, numprocs/pio_numiotasks) - if (my_task == 0) write(stdout,*) trim(subname), ' : update pio_stride = ', pio_stride - else if(pio_numiotasks < 0 .and. pio_stride < 0) then - pio_stride = max(1,numprocs/4) - pio_numiotasks = max(1,numprocs/pio_stride) - if (my_task == 0) write(stdout,*) trim(subname), ' : update pio_numiotasks = ', pio_numiotasks - if (my_task == 0) write(stdout,*) trim(subname), ' : update pio_stride = ', pio_stride - end if - if (pio_stride == 1) then - pio_root = 0 - endif - - if (pio_root + (pio_stride)*(pio_numiotasks-1) >= numprocs .or. & - pio_stride <= 0 .or. pio_numiotasks <= 0 .or. pio_root < 0 .or. pio_root > numprocs-1) then - if (numprocs < 100) then - pio_stride = max(1, numprocs/4) - else if(numprocs < 1000) then - pio_stride = max(1, numprocs/8) - else - pio_stride = max(1, numprocs/16) - end if - if(pio_stride > 1) then - pio_numiotasks = numprocs/pio_stride - pio_root = min(1, numprocs-1) - else - pio_numiotasks = numprocs - pio_root = 0 - end if - if (my_task == 0) then - write(stdout,*) 'pio_stride, iotasks or root out of bounds - resetting to defaults:' - write(stdout,*) trim(subname), ' : pio_root = ', pio_root - write(stdout,*) trim(subname), ' : pio_stride = ', pio_stride - write(stdout,*) trim(subname), ' : pio_numiotasks = ', pio_numiotasks - end if - end if - - ! pio_rearranger - call NUOPC_CompAttributeGet(gcomp, name='pio_rearranger', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (isPresent .and. isSet) then - cvalue = ESMF_UtilStringUpperCase(cvalue) - if (trim(cvalue) .eq. 'BOX') then - pio_rearranger = PIO_REARR_BOX - else if (trim(cvalue) .eq. 'SUBSET') then - pio_rearranger = PIO_REARR_SUBSET - else - call ESMF_LogWrite(trim(subname)//': need to provide valid option for pio_rearranger (BOX|SUBSET)', ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - end if - else - cvalue = 'SUBSET' - pio_rearranger = PIO_REARR_SUBSET - end if - if (my_task == 0) write(stdout,*) trim(subname), ' : pio_rearranger = ', trim(cvalue), pio_rearranger - - ! init PIO - if (my_task == 0) then - write(stdout,*) trim(subname),' calling pio init' - write(stdout,*) trim(subname), ' : pio_root = ', pio_root - write(stdout,*) trim(subname), ' : pio_stride = ', pio_stride - write(stdout,*) trim(subname), ' : pio_numiotasks = ', pio_numiotasks - end if - - allocate(wav_pio_subsystem) - call pio_init(my_task, mpi_comm, pio_numiotasks, master_task, pio_stride, pio_rearranger, & - wav_pio_subsystem, base=pio_root) - - ! PIO debug related options - ! pio_debug_level - call NUOPC_CompAttributeGet(gcomp, name='pio_debug_level', value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - if (isPresent .and. isSet) then - read(cvalue,*) pio_debug_level - if (pio_debug_level < 0 .or. pio_debug_level > 6) then - call ESMF_LogWrite(trim(subname)//': need to provide valid option for pio_debug_level (0-6)', ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - end if - else - pio_debug_level = 0 - end if - if (my_task == 0) write(stdout,*) trim(subname), ' : pio_debug_level = ', pio_debug_level - - ! set PIO debug level - call pio_setdebuglevel(pio_debug_level) - - call pio_seterrorhandling(wav_pio_subsystem, PIO_RETURN_ERROR) -#endif - end subroutine wav_pio_init - - !=============================================================================== - !> Define a decomposition for a 2d variable in WW3 - !! - !! @param[out] iodesc the PIO decomposition handle - !! @param[out] use_int define a decomposition for an integer array - !! - !> @author Denise.Worthen@noaa.gov - !> @date 08-02-2024 - subroutine wav_pio_initdecomp_2d(iodesc, use_int) - - type(io_desc_t), intent(out) :: iodesc - logical , optional, intent(in) :: use_int - - ! local variables - integer :: n, isea, jsea, ix, iy, nseal_cpl - logical :: luse_int - integer(kind=PIO_OFFSET_KIND) :: lnx,lny - integer(kind=PIO_OFFSET_KIND), allocatable :: dof2d(:) -#ifdef W3_PDLIB - nseal_cpl = nseal - ng -#else - nseal_cpl = nseal -#endif - luse_int = .false. - if (present(use_int)) luse_int = use_int - - allocate(dof2d(nseal_cpl)) - dof2d = 0 - lnx = int(nx,PIO_OFFSET_KIND) - lny = int(ny,PIO_OFFSET_KIND) - - n = 0 - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - n = n+1 - dof2d(n) = (iy-1)*lnx + ix ! local index : global index - end do - - if (luse_int) then - call pio_initdecomp(wav_pio_subsystem, PIO_INT, (/nx,ny/), dof2d, iodesc) - else - call pio_initdecomp(wav_pio_subsystem, PIO_REAL, (/nx,ny/), dof2d, iodesc) - end if - deallocate(dof2d) - - end subroutine wav_pio_initdecomp_2d - - !=============================================================================== - !> Define a decomposition for a 3d variable in WW3 - !! - !! @param[in] nz the non-spatial dimension - !! @param[out] iodesc the PIO decomposition handle - !! - !> @author Denise.Worthen@noaa.gov - !> @date 08-02-2024 - subroutine wav_pio_initdecomp_3d(nz, iodesc) - - integer , intent(in) :: nz - type(io_desc_t) , intent(out) :: iodesc - - ! local variables - integer :: n, k, isea, jsea, ix, iy, nseal_cpl - integer(kind=PIO_OFFSET_KIND) :: lnx,lny - integer(kind=PIO_OFFSET_KIND), allocatable :: dof3d(:) -#ifdef W3_PDLIB - nseal_cpl = nseal - ng -#else - nseal_cpl = nseal -#endif - allocate(dof3d(nz*nseal_cpl)) - - dof3d = 0 - lnx = int(nx,PIO_OFFSET_KIND) - lny = int(ny,PIO_OFFSET_KIND) - - n = 0 - do k = 1,nz - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) ! global ix - iy = mapsf(isea,2) ! global iy - n = n+1 - dof3d(n) = ((iy-1)*lnx + ix) + (k-1)*lnx*lny ! local index : global index - end do - end do - - call pio_initdecomp(wav_pio_subsystem, PIO_REAL, (/nx,ny,nz/), dof3d, iodesc) - deallocate(dof3d) - - end subroutine wav_pio_initdecomp_3d - - !=============================================================================== - !> Handle errors - !! - !! @param[in] ierr the error code - !! @param[in] string the error message - !! - !> @author Denise.Worthen@noaa.gov - !> @date 08-02-2024 - subroutine handle_err(ierr,string) - - use w3odatmd , only : ndse - use w3servmd , only : extcde - - ! input/output variables - integer , intent(in) :: ierr - character(len=*), intent(in) :: string - - integer :: strerror_status - character(len=pio_max_name) :: err_msg - - if (ierr /= PIO_NOERR) then - strerror_status = pio_strerror(ierr, err_msg) - write(ndse,*) "*** WAVEWATCH III netcdf error: ",trim(string),':',trim(err_msg) - call extcde ( 49 ) - end if - end subroutine handle_err - -end module wav_pio_mod diff --git a/model/src/wav_restart_mod.F90 b/model/src/wav_restart_mod.F90 deleted file mode 100644 index 9d1c67780..000000000 --- a/model/src/wav_restart_mod.F90 +++ /dev/null @@ -1,538 +0,0 @@ -!> @file wav_restart_mod -!! -!> @brief Handle WW3 restart files as netCDF using PIO -!! -!> @author Denise.Worthen@noaa.gov -!> @date 08-26-2024 -module wav_restart_mod - - use w3parall , only : init_get_isea - use w3adatmd , only : nsealm - use w3gdatmd , only : nth, nk, nx, ny, mapsf, nspec, nseal, nsea - use w3odatmd , only : ndso, iaproc, addrstflds, rstfldlist, rstfldcnt - use w3wdatmd , only : ice - use wav_pio_mod , only : pio_iotype, pio_ioformat, wav_pio_subsystem - use wav_pio_mod , only : handle_err, wav_pio_initdecomp -#ifdef W3_PDLIB - use yowNodepool , only : ng -#endif - use pio - use netcdf - - implicit none - - private - - type(file_desc_t) :: pioid - type(var_desc_t) :: varid - type(io_desc_t) :: iodesc2dint - type(io_desc_t) :: iodesc2d - - integer(kind=Pio_Offset_Kind) :: frame - - public :: write_restart - public :: read_restart - - ! used/reused in module - character(len=4) :: cspec - character(len=12) :: vname - integer :: ik, ith, ix, iy, kk, isea, jsea, ierr, i - - !=============================================================================== -contains - !=============================================================================== - !> Write a WW3 restart file - !! - !! @details Called by w3wavemd to write a restart file at a given frequency or - !! time - !! - !! @param[in] fname the time-stamped file name - !! @param[in] va the va array - !! @param[in] mapsta the mapsta + 8*mapst2 array - !! - !> author DeniseWorthen@noaa.gov - !> @date 08-26-2024 - subroutine write_restart (fname, va, mapsta) - - use w3odatmd , only : time_origin, calendar_name, elapsed_secs - - real , intent(in) :: va(1:nspec,0:nsealm) - integer , intent(in) :: mapsta(ny,nx) - character(len=*), intent(in) :: fname - - ! local variables - integer :: timid, xtid, ytid - integer :: nseal_cpl, nmode - integer :: dimid(3) - real , allocatable :: lva(:,:) - integer, allocatable :: lmap(:) - !------------------------------------------------------------------------------- - -#ifdef W3_PDLIB - nseal_cpl = nseal - ng -#else - nseal_cpl = nseal -#endif - allocate(lva(1:nseal_cpl,1:nspec)) - allocate(lmap(1:nseal_cpl)) - lva(:,:) = 0.0 - lmap(:) = 0 - - ! create the netcdf file - frame = 1 - pioid%fh = -1 - nmode = pio_clobber - ! only applies to classic NETCDF files. - if (pio_iotype == PIO_IOTYPE_NETCDF .or. pio_iotype == PIO_IOTYPE_PNETCDF) then - nmode = ior(nmode,pio_ioformat) - endif - ierr = pio_createfile(wav_pio_subsystem, pioid, pio_iotype, trim(fname), nmode) - call handle_err(ierr, 'pio_create') - if (iaproc == 1) write(ndso,'(a)')' Writing restart file '//trim(fname) - - ierr = pio_def_dim(pioid, 'nx', nx, xtid) - ierr = pio_def_dim(pioid, 'ny', ny, ytid) - ierr = pio_def_dim(pioid, 'time', PIO_UNLIMITED, timid) - - ! define the time variable - ierr = pio_def_var(pioid, 'time', PIO_DOUBLE, (/timid/), varid) - call handle_err(ierr,'def_timevar') - ierr = pio_put_att(pioid, varid, 'units', trim(time_origin)) - call handle_err(ierr,'def_time_units') - ierr = pio_put_att(pioid, varid, 'calendar', trim(calendar_name)) - call handle_err(ierr,'def_time_calendar') - - ! define the nth,nk sizes - ierr = pio_def_var(pioid, 'nth', PIO_INT, varid) - call handle_err(ierr,'def_nth') - ierr = pio_put_att(pioid, varid, 'long_name', 'number of direction bins') - ierr = pio_def_var(pioid, 'nk', PIO_INT, varid) - call handle_err(ierr,'def_nk') - ierr = pio_put_att(pioid, varid, 'long_name', 'number of frequencies') - - ! write each nspec as separate variable - do kk = 1,nspec - write(cspec,'(i4.4)')kk - vname = 'va'//cspec - dimid = (/xtid, ytid, timid/) - ierr = pio_def_var(pioid, trim(vname), PIO_REAL, dimid, varid) - call handle_err(ierr, 'define variable '//trim(vname)) - ierr = pio_put_att(pioid, varid, '_FillValue', nf90_fill_float) - call handle_err(ierr, 'define _FillValue '//trim(vname)) - end do - - vname = 'mapsta' - ierr = pio_def_var(pioid, trim(vname), PIO_INT, (/xtid, ytid, timid/), varid) - call handle_err(ierr, 'define variable '//trim(vname)) - ierr = pio_put_att(pioid, varid, '_FillValue', nf90_fill_int) - call handle_err(ierr, 'define _FillValue '//trim(vname)) - - ! define any requested additional fields - if (addrstflds) then - do i = 1,rstfldcnt - vname = trim(rstfldlist(i)) - ierr = pio_def_var(pioid, trim(vname), PIO_REAL, (/xtid, ytid, timid/), varid) - call handle_err(ierr, 'define variable '//trim(vname)) - ierr = pio_put_att(pioid, varid, '_FillValue', nf90_fill_float) - call handle_err(ierr, 'define _FillValue '//trim(vname)) - end do - end if - ! end variable definitions - ierr = pio_enddef(pioid) - call handle_err(ierr, 'end variable definition') - - ! write the freq and direction sizes - ierr = pio_inq_varid(pioid, 'nth', varid) - call handle_err(ierr, 'inquire variable nth ') - ierr = pio_put_var(pioid, varid, nth) - call handle_err(ierr, 'put nth') - ierr = pio_inq_varid(pioid, 'nk', varid) - call handle_err(ierr, 'inquire variable nk ') - ierr = pio_put_var(pioid, varid, nk) - call handle_err(ierr, 'put nk') - - ! initialize the decomp - call wav_pio_initdecomp(iodesc2dint, use_int=.true.) - call wav_pio_initdecomp(iodesc2d) - - ! write the time - ierr = pio_inq_varid(pioid, 'time', varid) - call handle_err(ierr, 'inquire variable time ') - ierr = pio_put_var(pioid, varid, (/1/), real(elapsed_secs,8)) - call handle_err(ierr, 'put time') - - ! mapsta is global - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - ix = mapsf(isea,1) - iy = mapsf(isea,2) - lmap(jsea) = mapsta(iy,ix) - end do - - ! write PE local map - vname = 'mapsta' - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, int(1,kind=Pio_Offset_Kind)) - call pio_write_darray(pioid, varid, iodesc2dint, lmap, ierr) - call handle_err(ierr, 'put variable '//trim(vname)) - - ! write va - do jsea = 1,nseal_cpl - kk = 0 - do ik = 1,nk - do ith = 1,nth - kk = kk + 1 - lva(jsea,kk) = va(kk,jsea) - end do - end do - end do - - do kk = 1,nspec - write(cspec,'(i4.4)')kk - vname = 'va'//cspec - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, int(1,kind=PIO_OFFSET_KIND)) - call pio_write_darray(pioid, varid, iodesc2d, lva(:,kk), ierr) - call handle_err(ierr, 'put variable '//trim(vname)) - end do - - ! write requested additional global(nsea) fields - if (addrstflds) then - do i = 1,rstfldcnt - vname = trim(rstfldlist(i)) - if (vname == 'ice')call write_globalfield(vname, nseal_cpl, ice(1:nsea)) - end do - end if - - call pio_syncfile(pioid) - call pio_freedecomp(pioid, iodesc2d) - call pio_freedecomp(pioid, iodesc2dint) - call pio_closefile(pioid) - - end subroutine write_restart - - !=============================================================================== - !> Read a WW3 restart file - !! - !> @details Called by w3init to read a restart file which is known to exist or to - !! initialize a set of variables when the filename is "none". - !! - !! @param[in] fname the time-stamped file name - !! @param[out] va the va array, optional - !! @param[out] mapsta the mapsta array, optional - !! @param[inout] mapst2 the mapst2 array, optional - !! - !> author DeniseWorthen@noaa.gov - !> @date 08-26-2024 - subroutine read_restart (fname, va, mapsta, mapst2) - - use mpi_f08 - use w3adatmd , only : mpi_comm_wave - use w3gdatmd , only : sig - use w3idatmd , only : icei - use w3wdatmd , only : time, tlev, tice, trho, tic1, tic5, wlv, asf, fpis - - character(len=*) , intent(in) :: fname - real , optional , intent(out) :: va(1:nspec,0:nsealm) - integer, optional , intent(out) :: mapsta(ny,nx) - integer, optional , intent(inout) :: mapst2(ny,nx) - - ! local variables - type(MPI_Comm) :: wave_communicator ! needed for mpi_f08 - integer, allocatable :: global_input(:), global_output(:) - integer :: nseal_cpl - integer :: ifill - real :: rfill - real , allocatable :: lva(:,:) - integer, allocatable :: lmap(:) - integer, allocatable :: lmap2d(:,:) - integer, allocatable :: st2init(:,:) - !------------------------------------------------------------------------------- - - ! cold start, set initial values and return. - if (trim(fname) == 'none') then - tlev(1) = -1 - tlev(2) = 0 - tice(1) = -1 - tice(2) = 0 - trho(1) = -1 - trho(2) = 0 - tic1(1) = -1 - tic1(2) = 0 - tic5(1) = -1 - tic5(2) = 0 - wlv = 0. - ice = 0. - asf = 1. - fpis = sig(nk) - if (iaproc == 1) write(ndso,'(a)')' Initializing WW3 at rest ' - return - end if - - ! read a netcdf restart - wave_communicator%mpi_val = MPI_COMM_WAVE -#ifdef W3_PDLIB - nseal_cpl = nseal - ng -#else - nseal_cpl = nseal -#endif - allocate(lva(1:nseal_cpl,1:nspec)) - allocate(lmap(1:nseal_cpl)) - allocate(lmap2d(1:ny,1:nx)) - allocate(st2init(1:ny,1:nx)) - lva(:,:) = 0.0 - lmap(:) = 0 - lmap2d(:,:) = 0 - - ! save a copy of initial mapst2 from mod_def - st2init = mapst2 - - ! all times are restart times - tlev = time - tice = time - trho = time - tic1 = time - tic5 = time - frame = 1 - ierr = pio_openfile(wav_pio_subsystem, pioid, pio_iotype, trim(fname), pio_nowrite) - call handle_err(ierr, 'open file '//trim(fname)) - if (iaproc == 1) write(ndso,'(a)')' Reading restart file '//trim(fname) - - ! check the field dimensions and sizes against the current values - call checkfile() - - ! initialize the decomp - call wav_pio_initdecomp(iodesc2dint, use_int=.true.) - call wav_pio_initdecomp(iodesc2d) - - do kk = 1,nspec - write(cspec,'(i4.4)')kk - vname = 'va'//cspec - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, frame) - ierr = pio_get_att(pioid, varid, "_FillValue", rfill) - call handle_err(ierr, 'get variable _FillValue'//trim(vname)) - call pio_read_darray(pioid, varid, iodesc2d, lva(:,kk), ierr) - call handle_err(ierr, 'get variable '//trim(vname)) - end do - - va = 0.0 - do jsea = 1,nseal_cpl - kk = 0 - do ik = 1,nk - do ith = 1,nth - kk = kk + 1 - if (lva(jsea,kk) .ne. rfill) then - va(kk,jsea) = lva(jsea,kk) - end if - end do - end do - end do - - vname = 'mapsta' - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, frame) - call pio_read_darray(pioid, varid, iodesc2dint, lmap, ierr) - call handle_err(ierr, 'get variable '//trim(vname)) - ierr = pio_get_att(pioid, varid, "_FillValue", ifill) - call handle_err(ierr, 'get variable _FillValue'//trim(vname)) - - ! fill global array with PE local values - allocate(global_input(nsea)) - allocate(global_output(nsea)) - global_input = 0 - global_output = 0 - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - if (lmap(jsea) .ne. ifill) then - global_input(isea) = lmap(jsea) - end if - end do - ! reduce across all PEs to create global array - call MPI_AllReduce(global_input, global_output, nsea, MPI_INTEGER, MPI_SUM, wave_communicator, ierr) - - ! fill global array on each PE - do isea = 1,nsea - ix = mapsf(isea,1) - iy = mapsf(isea,2) - lmap2d(iy,ix) = global_output(isea) - end do - deallocate(global_input) - deallocate(global_output) - - mapsta = mod(lmap2d+2,8) - 2 - mapst2 = st2init + (lmap2d-mapsta)/8 - - ! read additional global(nsea) restart fields - if (addrstflds) then - do i = 1,rstfldcnt - vname = trim(rstfldlist(i)) - if (vname == 'ice')call read_globalfield(wave_communicator, vname, nseal_cpl, ice(1:nsea), icei) - end do - end if - - call pio_syncfile(pioid) - call pio_freedecomp(pioid, iodesc2d) - call pio_freedecomp(pioid, iodesc2dint) - call pio_closefile(pioid) - - end subroutine read_restart - - !=============================================================================== - !> Write a decomposed array of (nsea) global values - !! - !! @param[in] vname the variable name - !! @param[in] nseal_cpl the PE local dimension, disregarding halos - !! @param[in] global_input the global array - !! - !> author DeniseWorthen@noaa.gov - !> @date 09-22-2024 - subroutine write_globalfield(vname, nseal_cpl, global_input) - - character(len=*) , intent(in) :: vname - integer , intent(in) :: nseal_cpl - real , intent(in) :: global_input(:) - - ! local variable - real, allocatable :: lvar(:) - - allocate(lvar(1:nseal_cpl)) - - lvar(:) = 0.0 - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - lvar(jsea) = global_input(isea) - end do - - !write PE local field - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, int(1,kind=Pio_Offset_Kind)) - call pio_write_darray(pioid, varid, iodesc2d, lvar, ierr) - call handle_err(ierr, 'put variable '//trim(vname)) - - end subroutine write_globalfield - - !=============================================================================== - !> Read a decomposed array of (nsea) global values and return a global field on - !! each DE - !! - !! @param[in] wave_communicator the MPI handle - !! @param[in] vname the variable name - !! @param[in] nseal_cpl the PE local dimension, disregarding halos - !! @param[out] global_output the global array, nsea points on each DE - !! @param[out] global_2d the global array, (nx,ny) points on each DE - !! - !> author DeniseWorthen@noaa.gov - !> @date 09-22-2024 - subroutine read_globalfield(wave_communicator, vname, nseal_cpl, global_output, global_2d) - - use mpi_f08 - - type(MPI_Comm) , intent(in) :: wave_communicator ! needed for mpi_f08 - character(len=*) , intent(in) :: vname - integer , intent(in) :: nseal_cpl - real , intent(out) :: global_output(:) - real , intent(out) :: global_2d(:,:) - - ! local variables - real, allocatable :: global_input(:) - real :: rfill - real, allocatable :: lvar(:) - - allocate(lvar(1:nseal_cpl)) - lvar(:) = 0.0 - - ierr = pio_inq_varid(pioid, trim(vname), varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - call pio_setframe(pioid, varid, frame) - call pio_read_darray(pioid, varid, iodesc2d, lvar, ierr) - call handle_err(ierr, 'get variable '//trim(vname)) - ierr = pio_get_att(pioid, varid, "_FillValue", rfill) - call handle_err(ierr, 'get variable _FillValue'//trim(vname)) - - ! fill global array with PE local values - allocate(global_input(nsea)) - global_input = 0.0 - global_output = 0.0 - do jsea = 1,nseal_cpl - call init_get_isea(isea, jsea) - if (lvar(jsea) .ne. rfill) then - global_input(isea) = lvar(jsea) - end if - end do - ! reduce across all PEs to create global array - call MPI_AllReduce(global_input, global_output, nsea, MPI_REAL, MPI_SUM, wave_communicator, ierr) - deallocate(global_input) - - global_2d = 0.0 - do isea = 1,nsea - ix = mapsf(isea,1) - iy = mapsf(isea,2) - global_2d(ix,iy) = global_output(isea) - end do - - end subroutine read_globalfield - - !=============================================================================== - !> Check that a restart file has the expected dimensions and sizes - !! - !> author DeniseWorthen@noaa.gov - !> @date 10-15-2024 - subroutine checkfile() - - use w3odatmd , only : ndse - use w3servmd , only : extcde - - integer :: dimid, ivar - integer(kind=PIO_OFFSET_KIND) :: dimlen - - ! check dimension nx - vname = 'nx' - ierr = pio_inq_dimid(pioid, vname, dimid) - call handle_err(ierr, 'inquire dimension '//trim(vname)) - ierr = pio_inq_dimlen(pioid, dimid, dimlen) - if (dimlen /= int(nx,PIO_OFFSET_KIND)) then - write(ndse,*) '*** WAVEWATCH III restart error: '//trim(vname)//' does not match expected value' - call extcde ( 49 ) - end if - - ! check dimension ny - vname = 'ny' - ierr = pio_inq_dimid(pioid, vname, dimid) - call handle_err(ierr, 'inquire dimension '//trim(vname)) - ierr = pio_inq_dimlen(pioid, dimid, dimlen) - if (dimlen /= int(ny,PIO_OFFSET_KIND)) then - write(ndse,*) '*** WAVEWATCH III restart error: '//trim(vname)//' does not match expected value' - call extcde ( 49 ) - end if - - ! check number of directions - vname = 'nth' - ierr = pio_inq_varid(pioid, vname, varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - ierr = pio_get_var(pioid, varid, ivar) - call handle_err(ierr, 'get variable '//trim(vname)) - if (ivar .ne. nth) then - write(ndse,*) '*** WAVEWATCH III restart error: '//trim(vname)//' does not match expected value' - call extcde ( 49 ) - end if - - ! check number of frequencies - vname = 'nk' - ierr = pio_inq_varid(pioid, vname, varid) - call handle_err(ierr, 'inquire variable '//trim(vname)) - ierr = pio_get_var(pioid, varid, ivar) - call handle_err(ierr, 'get variable '//trim(vname)) - if (ivar .ne. nk) then - write(ndse,*) '*** WAVEWATCH III restart error: '//trim(vname)//' does not match expected value' - call extcde ( 49 ) - end if - - end subroutine checkfile - -end module wav_restart_mod diff --git a/model/src/wav_shel_inp.F90 b/model/src/wav_shel_inp.F90 deleted file mode 100644 index 923d3c3ad..000000000 --- a/model/src/wav_shel_inp.F90 +++ /dev/null @@ -1,1558 +0,0 @@ -!> @file wav_shel_inp -!! -!> Set up for running in shel mode -!! -!> @details Contains public routines to sets up IO unit numbers and to -!! either reads a shel configuration file (either ww3_shel.inp or ww3_shel.nml) -!! -!> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov -!> @date 01-05-2022 -module wav_shel_inp - - use w3odatmd, only: nogrp, ngrpp - - implicit none - private ! except - - public :: set_shel_io !< @public set the IO unit numbers - public :: read_shel_config !< @public reads ww3_shel.nml if present, otherwise - !! read ww3_shel.inp - - integer, public :: odat(40) !< @public output dates - character(len=40), allocatable, public :: pnames(:) !< @public point names - - integer, public :: npts !< @public number of points for point output - integer, public :: iprt(6) !< @public partitioning grid information - logical, public :: prtfrm !< @public partitioning format flag - logical, public :: flgrd(nogrp,ngrpp) !< @public flags for gridded output - logical, public :: flgr2(nogrp,ngrpp) !< @public flags for coupling output - logical, public :: flgd(nogrp) !< @public flags for whole group - not currently used in cesm - logical, public :: flg2(nogrp) !< @public flags for whole group - not currently used in cesm - real, allocatable, public :: x(:) !< @public x locations for point output - real, allocatable, public :: y(:) !< @public y locations for point output - - include "mpif.h" - - !=============================================================================== -contains - !=============================================================================== - !> Set IO unit numbers - !! - !! @param[in] stdout unit number for stdout - !! @param[out] mds an array of 13 unit numbers - !! @param[out] ntrace an array of 2 unit numbers used for trace output - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine set_shel_io(stdout,mds,ntrace) - - use ESMF, only : ESMF_UtilIOUnitGet - - ! Input parameter - integer , intent(in) :: stdout - integer , intent(out) :: mds(15), ntrace(2) - - ! local variables - integer :: i - - ! Note that nds is set to mds in w3initmd.F90 - mds is a local array - ! The following units are referenced in module w3initmd - ! NDS(1) ! OUTPUT LOG: General output unit number ("log file") - ! NDS(2) ! OUTPUT LOG: Error output unit number - ! NDS(3) ! OUTPUT LOG: Test output unit number - ! NDS(4) ! OUTPUT LOG: Unit for 'direct' output (SCREEN) - ! NDS(5) ! INPUT: mod_def.ww3 file (model definition) unit number - ! NDS(9) ! INPUT: unit for read in boundary conditions (based on FLBPI) - - ! The following units are referenced in module w3wavemd for output - ! NDS( 6) ! OUTPUT DATA: restart(N).ww3 file (model restart) unit number - ! NDS( 7) ! OUTPUT DATA: unit for output for FLOUT(1) flag grid unformmatted output - ! NDS( 8) ! OUTPUT DATA: unit for output for FLOUT(2) flag point unformmatted output - ! etc through 13 - - mds(1) = stdout - mds(2) = stdout - mds(3) = stdout - mds(4) = stdout - - ! Identify available unit numbers - ! Each ESMF_UtilIOUnitGet is followed by an OPEN statement for that - ! unit so that subsequent ESMF_UtilIOUnitGet calls do not return the - ! the same unit. After getting all the available unit numbers, close - ! the units since they will be opened within W3INIT. - ! By default, unit numbers between 50 and 99 are scanned to find an - ! unopened unit number - - do i = 5,size(mds) - call ESMF_UtilIOUnitGet(mds(i)) - open(unit=mds(i), status='scratch') - end do - do i = 5,size(mds) - close(mds(i)) - end do - - ntrace(1) = mds(3) - ntrace(2) = 10 - - end subroutine set_shel_io - - !=============================================================================== - !> Read ww3_shel.inp Or ww3_shel.nml - !! - !! @param[in] mpi_comm mpi communicator - !! @param[in] mds an array of unit numbers - !! @param[in] time0_overwrite the initial time for overwriting the nml file, optional - !! @param[in] timen_overwrite the endding time for overwriting the nml file, optional - !! @param[out] rstfldlist a list of additional restart fields, optional - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine read_shel_config(mpi_comm, mds, time0_overwrite, timen_overwrite, rstfldlist) - - use wav_shr_flags - use w3nmlshelmd , only : nml_domain_t, nml_input_t, nml_output_type_t - use w3nmlshelmd , only : nml_output_date_t, nml_homog_count_t, nml_homog_input_t - use w3nmlshelmd , only : w3nmlshel - use w3gdatmd , only : flagll, dtmax, nx, ny, gtype - use w3wdatmd , only : time, w3ndat, w3dimw, w3setw - use w3adatmd , only : w3naux, w3dima, w3seta - use w3idatmd , only : inflags1, inflags2, flagsc - use w3odatmd , only : w3nout, w3seto, nds - use w3odatmd , only : naproc, iaproc, napout, naperr - use w3odatmd , only : idout, fnmpre, iostyp, notype - use w3odatmd , only : flogrr, flogr, ofiles - use w3iogrmd , only : w3iogr - use w3iogomd , only : w3readflgrd, fldout, w3flgrdflag - use w3servmd , only : nextln, extcde, print_memcheck - use w3timemd , only : dsec21, stme21, tick21, t2d, d2j -#ifdef W3_OASIS - use w3wdatmd , only : time00, timeend -#endif -#ifdef W3_NL5 - use w3wdatmd , only : qi5tbeg -#endif - use wav_kind_mod , only : CL => shr_kind_cl - - ! input/output parameters - integer, intent(in) :: mpi_comm - integer, intent(in) :: mds(:) - integer, intent(in), optional :: time0_overwrite(2) - integer, intent(in), optional :: timen_overwrite(2) - character(len=CL), intent(out), optional :: rstfldlist - - ! local parameters - integer, parameter :: nhmax = 200 - - type(nml_domain_t) :: nml_domain - type(nml_input_t) :: nml_input - type(nml_output_type_t) :: nml_output_type - type(nml_output_date_t) :: nml_output_date - type(nml_homog_count_t) :: nml_homog_count - type(nml_homog_input_t), allocatable :: nml_homog_input(:) - - integer :: ndsi, ndsi2, ndss, ndso, ndse, ndst, ndsl - integer :: ndsm, ndsen, ierr, j, i, iloop, ipts - integer :: nh(-7:10), tho(2,-7:10,nhmax), rcld(7:9) - integer :: nodata(7:9), startdate(8), stopdate(8), ihh(-7:10) - integer :: jfirst, ierr_mpi, flagtide, ih, n_tot - real :: factor, dttst, xx, yy, ha(nhmax,-7:10) - real :: hd(nhmax,-7:10), hs(nhmax,-7:10) - double precision :: startjulday, stopjulday - character(len=1) :: comstr, flagtfc(-7:10) - character(len=3) :: idstr(-7:10), idtst - character(len=6) :: yesxno - character(len=40) :: pn - character(len=13) :: idflds(-7:10) - character(len=20) :: strng - character(len=23) :: dtme21 - character(len=30) :: idotyp(8) - character(len=80) :: line - character(len=256) :: tmpline, test - character(len=1024) :: fldrst='' - character(len=80) :: linein - character(len=30) :: ofile ! w3_cou only - character(len=8) :: words(7)='' - logical :: flflg, flhom, tflagi, prtfrm, flgnml, flh(-7:10) - integer :: thrlev = 1 - integer :: time0(2), timen(2), ttime(2) - character(len=80) :: msg1 - logical :: is_open - integer :: memunit - - data idflds / 'ice param. 1 ' , 'ice param. 2 ' , & - 'ice param. 3 ' , 'ice param. 4 ' , & - 'ice param. 5 ' , & - 'mud density ' , 'mud thkness ' , & - 'mud viscos. ' , & - 'water levels ' , 'currents ' , & - 'winds ' , 'ice fields ' , & - 'momentum ' , 'air density ' , & - 'mean param. ' , '1D spectra ' , & - '2D spectra ' , 'moving grid ' / - data idotyp / 'Fields of mean wave parameters' , & - 'Point output ' , & - 'Track point output ' , & - 'Restart files ' , & - 'Nesting data ' , & - 'Partitioned wave field data ' , & - 'Fields for coupling ' , & - 'Restart files second request '/ - data idstr / 'IC1', 'IC2', 'IC3', 'IC4', 'IC5', 'MDN', 'MTH', 'MVS', 'LEV', 'CUR', & - 'WND', 'ICE', 'TAU', 'RHO', 'DT0', 'DT1', 'DT2', 'MOV' / - !--------------------------------------------------- - ! - !--------------------------------------------------- - - flgr2 = .false. - flh(:) = .false. - iprt(:) = 0 - memunit = 740+IAPROC - call print_logmsg(740+IAPROC, 'read_shel_config, step 1', w3_debuginit_flag) - - ! module variables ndso, ndse, ndst are set in w3initmd using mds; w3initmd is - ! called by either cesm_init or uwm_int after calling the read_shel_config routine. - ! these nd units are local variables here - ndso = mds(1) - ndse = mds(1) - ndst = mds(1) - ! set a unit number passed to w3iogr routine for reading mod_def file; this unit - ! is closed at the end of w3iogr - ndsm = 17 - inquire(unit=ndsm, opened=is_open) - if (is_open) then - call extcde (60, msg='unit ndsm is already in use ') - end if - ndss = 90 - inquire(unit=ndss, opened=is_open) - if (is_open) then - call extcde (60, msg='unit ndss is already in use ') - end if - ! naperr is set in InitializeRealize - if ( iaproc .eq. naperr ) then - ndsen = ndse - else - ndsen = -1 - end if -#ifdef W3_OMPH - if ( iaproc .eq. napout ) write (ndso,905) MPI_THREAD_FUNNELED, thrlev -#endif - - ! 1.c Local parameters - - ! Default COMSTR to "$" (for when using nml input files) - COMSTR = "$" - call print_logmsg(740+IAPROC, 'read_shel_config, step 2', w3_debuginit_flag) - - ! If using experimental mud or ice physics, additional lines will - ! be read in from read_shel_config.inp and applied, so JFIRST is - ! changed from its initialization setting "JFIRST=1" to some - ! lower value. - jfirst=1 - if (w3_ic1_flag) jfirst = -7 - if (w3_ic2_flag) jfirst = -7 - if (w3_is2_flag) jfirst = -7 - if (w3_ic3_flag) jfirst = -7 - if (w3_bt8_flag) jfirst = -7 - if (w3_bt9_flag) jfirst = -7 - if (w3_ic4_flag) jfirst = -7 - if (w3_ic5_flag) jfirst = -7 - - write(msg1,*)'JFIRST=', JFIRST - call print_logmsg(740+IAPROC, 'read_shel_config, step 4', trim(msg1), w3_debuginit_flag) - - !-------------------- - ! Read nml file if available - !-------------------- - - inquire(file=trim(fnmpre)//"ww3_shel.nml", exist=flgnml) - - if (flgnml) then - open(newunit=ndsi, file=trim(fnmpre)//"ww3_shel.nml", status='old', iostat=ierr) - - !-------------------- - ! Read namelist - !-------------------- - - call w3nmlshel (mpi_comm, ndsi, trim(fnmpre)//'ww3_shel.nml', nml_domain, nml_input, & - nml_output_type, nml_output_date, nml_homog_count, nml_homog_input, ierr) - - !-------------------- - ! 2.1 forcing flags - !-------------------- - - flh(-7:10) = .false. - flagtfc(-7) = trim(nml_input%forcing%ice_param1) - flagtfc(-6) = trim(nml_input%forcing%ice_param2) - flagtfc(-5) = trim(nml_input%forcing%ice_param3) - flagtfc(-4) = trim(nml_input%forcing%ice_param4) - flagtfc(-3) = trim(nml_input%forcing%ice_param5) - flagtfc(-2) = trim(nml_input%forcing%mud_density) - flagtfc(-1) = trim(nml_input%forcing%mud_thickness) - flagtfc(0) = trim(nml_input%forcing%mud_viscosity) - flagtfc(1) = trim(nml_input%forcing%water_levels) - flagtfc(2) = trim(nml_input%forcing%currents) - flagtfc(3) = trim(nml_input%forcing%winds) - flagtfc(4) = trim(nml_input%forcing%ice_conc) - flagtfc(5) = trim(nml_input%forcing%atm_momentum) - flagtfc(6) = trim(nml_input%forcing%air_density) - flagtfc(7) = trim(nml_input%assim%mean) - flagtfc(8) = trim(nml_input%assim%spec1d) - flagtfc(9) = trim(nml_input%assim%spec2d) - - if (trim(nml_input%forcing%ice_param1) .eq. 'H') then - flagtfc(-7)='T' - flh(-7)=.true. - end if - if (trim(nml_input%forcing%ice_param2) .eq. 'H') THEN - flagtfc(-6)='T' - flh(-6)=.true. - end if - if (trim(nml_input%forcing%ice_param3) .eq. 'H') THEN - flagtfc(-5)='T' - flh(-5)=.true. - end if - if (trim(nml_input%forcing%ice_param4) .eq. 'H') THEN - flagtfc(-4)='T' - flh(-4)=.true. - end if - if (trim(nml_input%forcing%ice_param5) .eq. 'H') THEN - flagtfc(-3)='T' - flh(-3)=.true. - end if - if (trim(nml_input%forcing%mud_density) .eq. 'H') THEN - flagtfc(-2)='T' - flh(-2)=.true. - end if - if (trim(nml_input%forcing%mud_thickness) .eq. 'H') THEN - flagtfc(-1)='T' - flh(-1)=.true. - end if - if (trim(nml_input%forcing%mud_viscosity) .eq. 'H') THEN - flagtfc(0)='T' - flh(0)=.true. - end if - if (trim(nml_input%forcing%water_levels) .eq. 'H') THEN - flagtfc(1)='T' - flh(1)=.true. - end if - if (trim(nml_input%forcing%currents) .eq. 'H') THEN - flagtfc(2)='T' - flh(2)=.true. - end if - if (trim(nml_input%forcing%winds) .eq. 'H') THEN - flagtfc(3)='T' - flh(3)=.true. - end if - if (trim(nml_input%forcing%ice_conc) .eq. 'H') THEN - flagtfc(4)='T' - flh(4)=.true. - end if - if (trim(nml_input%forcing%atm_momentum) .eq. 'H') THEN - flagtfc(5)='T' - flh(5)=.true. - end if - if (trim(nml_input%forcing%air_density) .eq. 'H') THEN - flagtfc(6)='T' - flh(6)=.true. - end if - - if ( iaproc .eq. napout ) write (ndso, 920) - DO J=JFIRST, 9 - if (flagtfc(j).eq.'T') THEN - inflags1(j)=.true. - flagsc(j)=.false. - end if - if (flagtfc(j).eq.'F') THEN - inflags1(j)=.false. - flagsc(j)=.false. - end if - if (flagtfc(j).eq.'C') THEN - inflags1(j)=.true. - flagsc(j)=.true. - end if - if ( j .le. 6 ) then - flh(j) = flh(j) .and. inflags1(j) - end if - if ( inflags1(j) ) then - yesxno = 'YES/--' - else - yesxno = '---/NO' - end IF - if ( flh(j) ) then - strng = '(homogeneous field) ' - else if ( flagsc(j) ) then - strng = '(coupling field) ' - else - strng = ' ' - end if - if ( iaproc .eq. napout ) write (ndso,921) idflds(j), yesxno, strng - end do - if (w3_cou_flag) then - if (flagsc(1) .and. inflags1(2) .and. .not. flagsc(2)) goto 2102 - if (flagsc(2) .and. inflags1(1) .and. .not. flagsc(1)) goto 2102 - end if - - inflags1(10) = .false. - if (w3_mgw_flag .or. w3_mgp_flag) then - inflags1(10) = .true. - flh(10) = .true. - end if - if ( inflags1(10) .and. iaproc.eq.napout ) write (ndso,921) idflds(10), 'yes/--', ' ' - - flflg = inflags1(-7) .or. inflags1(-6) .or. inflags1(-5) .or. inflags1(-4) & - .or. inflags1(-3) .or. inflags1(-2) .or. inflags1(-1) & - .or. inflags1(0) .or. inflags1(1) .or. inflags1(2) & - .or. inflags1(3) .or. inflags1(4) .or. inflags1(5) & - .or. inflags1(6) .or. inflags1(7) .or. inflags1(8) & - .or. inflags1(9) - flhom = flh(-7) .or. flh(-6) .or. flh(-5) .or. flh(-4) & - .or. flh(-3) .or. flh(-2) .or. flh(-1) .or. flh(0) & - .or. flh(1) .or. flh(2) .or. flh(3) .or. flh(4) & - .or. flh(5) .or. flh(6) .or. flh(10) - - if ( iaproc .eq. napout ) write (ndso,922) - ! inflags2 is just "initial value of inflags1", i.e. does *not* get changed when - ! model reads last record of ice.ww3 - inflags2=inflags1 - if (w3_t_flag) then - write (ndst,9020) flflg, inflags1, flhom, flh - end if - - !-------------------- - ! 2.2 Time setup - !-------------------- - - read (nml_domain%start,*) time0 - call t2d(time0,startdate,ierr) - call d2j(startdate,startjulday,ierr) - read(nml_domain%stop,*) timen - call t2d(timen,stopdate,ierr) - call d2j(stopdate,stopjulday,ierr) - - !-------------------- - ! 2.3 Domain setup - !-------------------- - - iostyp = nml_domain%iostyp - if (w3_pdlib_flag) then - if (iostyp .gt. 1) then - write(*,*) 'iostyp not supported in domain decomposition mode' - call extcde ( 6666 ) - endif - end if - - call w3iogr ( 'GRID', ndsm ) - if ( flagll ) then - factor = 1. - else - factor = 1.e-3 - end if - - !-------------------- - ! 2.4 Output dates - !-------------------- - - read(nml_output_date%field%start, *) odat(1), odat(2) - read(nml_output_date%field%stride, *) odat(3) - read(nml_output_date%field%stop, *) odat(4), odat(5) - - read(nml_output_date%field%outffile, *) ofiles(1) - - read(nml_output_date%point%start, *) odat(6), odat(7) - read(nml_output_date%point%stride, *) odat(8) - read(nml_output_date%point%stop, *) odat(9), odat(10) - - read(nml_output_date%point%outffile, *) ofiles(2) - - read(nml_output_date%track%start, *) odat(11), odat(12) - read(nml_output_date%track%stride, *) odat(13) - read(nml_output_date%track%stop, *) odat(14), odat(15) - - read(nml_output_date%restart%start, *) odat(16), odat(17) - read(nml_output_date%restart%stride, *) odat(18) - read(nml_output_date%restart%stop, *) odat(19), odat(20) - - read(nml_output_date%restart2%start, *) odat(36), odat(37) - read(nml_output_date%restart2%stride, *) odat(38) - read(nml_output_date%restart2%stop, *) odat(39), odat(40) - - read(nml_output_date%boundary%start, *) odat(21), odat(22) - read(nml_output_date%boundary%stride, *) odat(23) - read(nml_output_date%boundary%stop, *) odat(24), odat(25) - - read(nml_output_date%partition%start, *) odat(26), odat(27) - read(nml_output_date%partition%stride, *) odat(28) - read(nml_output_date%partition%stop, *) odat(29), odat(30) - - read(nml_output_date%coupling%start, *) odat(31), odat(32) - read(nml_output_date%coupling%stride, *) odat(33) - read(nml_output_date%coupling%stop, *) odat(34), odat(35) - - ! set the time stride at 0 or more - odat(3) = max ( 0 , odat(3) ) - odat(8) = max ( 0 , odat(8) ) - odat(13) = max ( 0 , odat(13) ) - odat(18) = max ( 0 , odat(18) ) - odat(23) = max ( 0 , odat(23) ) - odat(28) = max ( 0 , odat(28) ) - odat(33) = max ( 0 , odat(33) ) - odat(38) = max ( 0 , odat(38) ) - - if (w3_cou_flag) then - ! test the validity of the coupling time step - if (odat(33) == 0) then - if ( iaproc .eq. napout ) then - write(ndso,1010) odat(33), int(dtmax) - end if - odat(33) = int(dtmax) - else if (mod(odat(33),int(dtmax)) .ne. 0) then - goto 2009 - end if - end if - - !-------------------- - ! 2.5 Output types - !-------------------- - - npts = 0 - notype = 6 - if (w3_cou_flag) then - notype = 7 - end if - do j = 1, notype - - ! outpts(i)%ofiles(j)=ofiles(j) - if ( odat(5*(j-1)+3) .ne. 0 ) then - - if ( j .eq. 1 ) then - - ! type 1: fields of mean wave parameters - fldout = nml_output_type%field%list - call w3flgrdflag ( ndso, ndso, ndse, fldout, flgd, flgrd, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 - - else if ( j .eq. 2 ) then - - ! type 2: point output - open (newunit=ndsl, file=trim(fnmpre)//trim(nml_output_type%point%file), & - form='formatted', status='old', err=2104, iostat=ierr) - - ! first loop to count the number of points - ! second loop to allocate the array and store the points - ipts = 0 - do iloop=1,2 - rewind (ndsl) - - if ( iloop.eq.2) then - npts = ipts - if ( npts.gt.0 ) then - allocate ( x(npts), y(npts), pnames(npts) ) - ipts = 0 ! reset counter to be reused for next do loop - else - allocate ( x(1), y(1), pnames(1) ) - goto 2054 - end if - end if - - do - read (ndsl,*,err=2004,iostat=ierr) tmpline - ! if end of file or stopstring, then exit - if ( ierr.ne.0 .or. index(tmpline,"STOPSTRING").ne.0 ) exit - - ! leading blanks removed and placed on the right - test = adjustl ( tmpline ) - if ( test(1:1).eq.comstr .or. len_trim(test).eq.0 ) then - ! if comment or blank line, then skip - cycle - else - ! otherwise, backup to beginning of line - backspace ( ndsl, err=2004, iostat=ierr) - read (ndsl,*,err=2004,iostat=ierr) xx, yy, pn - end if - ipts = ipts + 1 - if ( iloop .eq. 1 ) cycle - if ( iloop .eq. 2 ) then - x(ipts) = xx - y(ipts) = yy - pnames(ipts) = pn - if ( iaproc .eq. napout ) then - if ( flagll ) then - if ( ipts .eq. 1 ) then - write (ndso,2945) factor*xx, factor*yy, pn - else - write (ndso,2946) ipts, factor*xx, factor*yy, pn - end if - else - if ( ipts .eq. 1 ) then - write (ndso,2955) factor*xx, factor*yy, pn - else - write (ndso,2956) ipts, factor*xx, factor*yy, pn - end if - end if - end if - end if ! iloop.eq.2 - end do ! end of file - end do ! iloop - close(ndsl) - - else if ( j .eq. 3 ) then - - ! Type 3: track output - tflagi = nml_output_type%track%format - if ( .not. tflagi ) nds(11) = -nds(11) - if ( iaproc .eq. napout ) then - if ( .not. tflagi ) then - write (ndso,3945) 'input', 'unformatted' - else - write (ndso,3945) 'input', 'formatted' - end if - end if - - else if ( j .eq. 6 ) then - - ! Type 6: partitioning - iprt(1) = nml_output_type%partition%x0 - iprt(2) = nml_output_type%partition%xn - iprt(3) = nml_output_type%partition%nx - iprt(4) = nml_output_type%partition%y0 - iprt(5) = nml_output_type%partition%yn - iprt(6) = nml_output_type%partition%ny - prtfrm = nml_output_type%partition%format - - if ( iaproc .eq. napout ) then - if ( prtfrm ) then - yesxno = 'YES/--' - else - yesxno = '---/NO' - end if - write (ndso,6945) iprt, yesxno - end if - - else if ( j .eq. 7 ) then -#ifdef W3_COU - ! Type 7: coupling - fldout = nml_output_type%coupling%sent - call w3flgrdflag ( ndso, ndso, ndse, fldout, flg2, flgr2, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 - fldin = nml_output_type%coupling%received - cplt0 = nml_output_type%coupling%couplet0 -#endif - - end if ! j - end if ! odat - end do ! j - - ! Extra fields to be written in the restart - fldrst = nml_output_type%restart%extra - call w3flgrdflag ( ndso, ndso, ndse, fldrst, flogr, flogrr, iaproc, napout, ierr ) - if (present(rstfldlist)) then - if (trim(fldrst) .ne. 'unset')then - rstfldlist = trim(fldrst) - else - rstfldlist = ' ' - end if - end if - if ( ierr .ne. 0 ) goto 2222 - - ! force minimal allocation to avoid memory seg fault - if ( .not.allocated(x) .and. npts.eq.0 ) allocate ( x(1), y(1), pnames(1) ) - - !-------------------- - ! 2.6 Homogeneous field data - !-------------------- - - if ( flhom ) then - if ( iaproc .eq. napout ) write (ndso,951) & - 'Homogeneous field data (and moving grid) ...' - - nh(-7) = nml_homog_count%n_ic1 - nh(-6) = nml_homog_count%n_ic2 - nh(-5) = nml_homog_count%n_ic3 - nh(-4) = nml_homog_count%n_ic4 - nh(-3) = nml_homog_count%n_ic5 - nh(-2) = nml_homog_count%n_mdn - nh(-1) = nml_homog_count%n_mth - nh(0) = nml_homog_count%n_mvs - nh(1) = nml_homog_count%n_lev - nh(2) = nml_homog_count%n_cur - nh(3) = nml_homog_count%n_wnd - nh(4) = nml_homog_count%n_ice - nh(5) = nml_homog_count%n_tau - nh(6) = nml_homog_count%n_rho - nh(10) = nml_homog_count%n_mov - - n_tot = nml_homog_count%n_tot - - do j=jfirst,10 - if ( nh(j) .gt. nhmax ) goto 2006 - end do - - ! Store homogeneous fields - if ( n_tot .gt. 0 ) then - ihh(:)=0 - do ih=1,n_tot - read(nml_homog_input(ih)%name,*) idtst - select case (idtst) - case ('IC1') - j=-7 - case ('IC2') - j=-6 - case ('IC3') - j=-5 - case ('IC4') - j=-4 - case ('IC5') - j=-3 - case ('MDN') - j=-2 - case ('MTH') - j=-1 - case ('MVS') - j=0 - case ('LEV') - j=1 - case ('CUR') - j=2 - case ('WND') - j=3 - case ('ICE') - j=4 - case ('TAU') - j=5 - case ('RHO') - j=6 - case ('MOV') - j=10 - case DEFAULT - goto 2062 - end SELECT - ihh(j)=ihh(j)+1 - read(nml_homog_input(ih)%date,*) tho(:,j,ihh(j)) - ha(ihh(j),j) = nml_homog_input(ih)%value1 - hd(ihh(j),j) = nml_homog_input(ih)%value2 - hs(ihh(j),j) = nml_homog_input(ih)%value3 - end do - end if - - if (w3_o7_flag) then - do j=jfirst, 10 - if ( flh(j) .and. iaproc.eq.napout ) then - write (ndso,952) nh(j), idflds(j) - do i=1, nh(j) - if ( ( j .le. 1 ) .or. ( j .eq. 4 ) .or. ( j .eq. 6 ) ) then - write (ndso,953) i, tho(1,j,i), tho(2,j,i), ha(i,j) - else if ( ( j .eq. 2 ) .or. ( j .eq. 5 ) .or. ( j .eq. 10 ) ) then - write (ndso,953) i, tho(1,j,i), tho(2,j,i), ha(i,j), hd(i,j) - else if ( j .eq. 3 ) then - write (ndso,953) i, tho(1,j,i), tho(2,j,i), ha(i,j), hd(i,j), hs(i,j) - end if - end do - end if - end do - end if - - if ( ( flh(-7) .and. (nh(-7).eq.0) ) .or. & - ( flh(-6) .and. (nh(-6).eq.0) ) .or. & - ( flh(-5) .and. (nh(-5).eq.0) ) .or. & - ( flh(-4) .and. (nh(-4).eq.0) ) .or. & - ( flh(-3) .and. (nh(-3).eq.0) ) .or. & - ( flh(-2) .and. (nh(-2).eq.0) ) .or. & - ( flh(-1) .and. (nh(-1).eq.0) ) .or. & - ( flh(0) .and. (nh(0).eq.0) ) .or. & - ( flh(1) .and. (nh(1).eq.0) ) .or. & - ( flh(2) .and. (nh(2).eq.0) ) .or. & - ( flh(3) .and. (nh(3).eq.0) ) .or. & - ( flh(4) .and. (nh(4).eq.0) ) .or. & - ( flh(5) .and. (nh(5).eq.0) ) .or. & - ( flh(6) .and. (nh(6).eq.0) ) .or. & - ( flh(10) .and. (nh(10).eq.0) ) ) goto 2007 - - end if ! flhom - - end if ! flgnml - - ! - ! =============================================================== - ! process old read_shel_config.inp format - ! =============================================================== - ! - if (.not. flgnml) then - - call print_logmsg(740+IAPROC, ' fnmpre'//trim(fnmpre), w3_debuginit_flag) - open (newunit=ndsi,file=trim(fnmpre)//'ww3_shel.inp',status='old',iostat=ierr) - rewind (ndsi) - - read (ndsi,'(a)') comstr - if (comstr.eq.' ') comstr = '$' - if ( iaproc .eq. napout ) write (ndso,901) comstr - - !-------------------- - ! 2.1 forcing flags - !-------------------- - - call print_logmsg(740+IAPROC, '2.1 Forcing flags', w3_debuginit_flag) - flh(-7:10) = .false. - do j=jfirst, 9 - call nextln ( comstr , ndsi , ndsen ) - if ( j .le. 6 ) then - read (ndsi,*) flagtfc(j), flh(j) - else - read (ndsi,*) flagtfc(j) - end if - write(msg1,*)' J=', j, ' FLAGTFC=', flagtfc(j), ' FLH=', flh(j) - call print_logmsg(740+IAPROC, trim(msg1), w3_debuginit_flag) - end do - - if ( iaproc .eq. napout ) write (ndso,920) - do j=jfirst, 9 - if (flagtfc(j).eq.'T') then - inflags1(j)=.true. - flagsc(j)=.false. - end if - if (flagtfc(j).eq.'F') then - inflags1(j)=.false. - flagsc(j)=.false. - end if - if (flagtfc(j).eq.'C') then - inflags1(j)=.true. - flagsc(j)=.true. - end if - if ( j .le. 6 ) then - flh(j) = flh(j) .and. inflags1(j) - end if - if ( inflags1(j) ) then - yesxno = 'YES/--' - else - yesxno = '---/NO' - end if - if ( flh(j) ) then - strng = '(homogeneous field) ' - else if ( flagsc(j) ) then - strng = '(coupling field) ' - else - strng = ' ' - end if - if ( iaproc .eq. napout ) write (ndso,921) idflds(j), yesxno, strng - end do - if (w3_cou_flag) then - if (flagsc(1) .and. inflags1(2) .and. .not. flagsc(2)) goto 2102 - if (flagsc(2) .and. inflags1(1) .and. .not. flagsc(1)) goto 2102 - end if - - call print_memcheck(memunit, 'memcheck_____:'//' read_shel_config SECTION 2b') - - inflags1(10) = .false. - if (w3_mgw_flag .or. w3_mgp_flag) then - inflags1(10) = .true. - flh(10) = .true. - end if - if ( inflags1(10) .and. iaproc.eq.napout ) & - write (ndso,921) idflds(10), 'yes/--', ' ' - - flflg = inflags1(-7) .or. inflags1(-6) .or. inflags1(-5) .or. inflags1(-4) & - .or. inflags1(-3) .or. inflags1(-2) .or. inflags1(-1) & - .or. inflags1(0) .or. inflags1(1) .or. inflags1(2) & - .or. inflags1(3) .or. inflags1(4) .or. inflags1(5) & - .or. inflags1(6) .or. inflags1(7) .or. inflags1(8) & - .or. inflags1(9) - flhom = flh(-7) .or. flh(-6) .or. flh(-5) .or. flh(-4) & - .or. flh(-3) .or. flh(-2) .or. flh(-1) .or. flh(0) & - .or. flh(1) .or. flh(2) .or. flh(3) .or. flh(4) & - .or. flh(5) .or. flh(6) .or. flh(10) - - if ( iaproc .eq. napout ) write (ndso,922) - ! inflags2 is just "initial value of inflags1", i.e. does *not* get changed when - ! model reads last record of ice.ww3 - inflags2=inflags1 - - if (w3_t_flag) then - write (ndst,9020) flflg, inflags1, flhom, flh - end if - - !-------------------- - ! 2.2 Time setup - !-------------------- - call print_logmsg(740+IAPROC, '2.2 Time setup ', w3_debuginit_flag) - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,*) time0 - - call print_memcheck(memunit, 'memcheck_____:'//' read_shel_config SECTION 2c') - - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,*) timen - call print_memcheck(memunit, 'memcheck_____:'//' read_shel_config SECTION 2d') - - !-------------------- - ! 2.3 Domain setup - !-------------------- - - call print_logmsg(740+IAPROC, '2.3 Domain setup ', w3_debuginit_flag) - call nextln ( COMSTR , NDSI , NDSEN ) - read (ndsi,*) iostyp - if (w3_pdlib_flag) then - if (iostyp .gt. 1) then - write(*,*) 'iostyp not supported in domain decomposition mode' - call extcde ( 6666 ) - endif - end if - call w3iogr ( 'GRID', ndsm ) - if ( flagll ) then - factor = 1. - else - factor = 1.e-3 - end if - - !-------------------- - ! 2.4 Output dates - !-------------------- - - call print_logmsg(740+IAPROC, '2.4 Output dates ', w3_debuginit_flag) - npts = 0 - notype = 6 - if (w3_cou_flag) then - notype = 7 - end if - do j = 1, notype - write(msg1,*)'J=', J, '/ NOTYPE=', NOTYPE - call nextln ( comstr , ndsi , ndsen ) - - ! checkpoint - if (j .eq. 4) then - odat(38)=0 - words(1:7)='' - read (ndsi,'(a)') linein - read(linein,*,iostat=ierr) words - read(words( 1 ), * ) odat(16) - read(words( 2 ), * ) odat(17) - read(words( 3 ), * ) odat(18) - read(words( 4 ), * ) odat(19) - read(words( 5 ), * ) odat(20) - if (words(6) .eq. 'T') then - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,*,end=2001,err=2002)(odat(i),i=5*(8-1)+1,5*8) - if(iaproc .eq. naproc) write(*,*)'odat(j=4): ',(odat(i),i=5*(8-1)+1,5*8) - end if - if (words(7) .eq. 'T') then - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,'(a)',end=2001,err=2002) fldrst - end if - call w3flgrdflag ( ndso, ndso, ndse, fldrst, flogr, flogrr, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 - else - - !inline new variable to read if present ofiles(j), if not ==0 - ! read (ndsi,*) (odat(i),i=5*(j-1)+1,5*j) - ! read (ndsi,*,iostat=ierr) (odat(i),i=5*(j-1)+1,5*j),ofiles(j) - if(j .le. 2) then - words(1:6)='' - ! read (ndsi,*,end=2001,err=2002)(odat(i),i=5*(j-1)+1,5*j),ofiles(j) - read (ndsi,'(a)') linein - read(linein,*,iostat=ierr) words - - if(j .eq. 1) then - read(words( 1 ), * ) odat(1) - read(words( 2 ), * ) odat(2) - read(words( 3 ), * ) odat(3) - read(words( 4 ), * ) odat(4) - read(words( 5 ), * ) odat(5) - else - read(words( 1 ), * ) odat(6) - read(words( 2 ), * ) odat(7) - read(words( 3 ), * ) odat(8) - read(words( 4 ), * ) odat(9) - read(words( 5 ), * ) odat(10) - end if - - if (words(6) .ne. '0' .and. words(6) .ne. '1') then - ofiles(j)=0 - else - read(words( 6 ), * ) ofiles(j) - end if - - else if(j .eq. 7) then - -#ifdef W3_COU - words(1:6)='' - read (ndsi,'(a)') linein - read(linein,*,iostat=ierr) words - - read(words( 1 ), * ) odat(31) - read(words( 2 ), * ) odat(32) - read(words( 3 ), * ) odat(33) - read(words( 4 ), * ) odat(34) - read(words( 5 ), * ) odat(35) - - if (words(6) .eq. 'T') then - cplt0 = .true. - else - cplt0 = .false. - end if -#endif - - else - - ofiles(j)=0 - read (ndsi,*,end=2001,err=2002)(odat(i),i=5*(j-1)+1,5*j) - - end if !j le 2 - odat(5*(j-1)+3) = max ( 0 , odat(5*(j-1)+3) ) - write(msg1, *) 'read_shel_config NOTTYPE', J - call print_memcheck(memunit, 'memcheck_____:'//trim(msg1)) - - !-------------------- - ! 2.5 Output types - !-------------------- - - call print_logmsg(740+IAPROC, ' 2.5 Output types ', w3_debuginit_flag) - if ( odat(5*(j-1)+3) .ne. 0 ) then - if ( j .eq. 1 ) then - - ! type 1: fields of mean wave parameters - call w3readflgrd ( ndsi, ndso, 9, ndsen, comstr, flgd, flgrd, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 - - else if ( j .eq. 2 ) then - - ! type 2: point output - do iloop=1,2 - if ( iloop .eq. 1 ) then - ndsi2 = ndsi - if ( iaproc .eq. 1 ) open (ndss,file=trim(fnmpre)//'ww3_shel.scratch') - else - ndsi2 = ndss -#ifdef W3_MPI - call mpi_barrier (mpi_comm,ierr_mpi) -#endif - open (ndss,file=trim(fnmpre)//'ww3_shel.scratch') - rewind (ndss) - - if ( .not.allocated(x) ) then - if ( npts.gt.0 ) then - allocate ( x(npts), y(npts), pnames(npts) ) - else - allocate ( x(1), y(1), pnames(1) ) - goto 2054 - end if - end if - end if - - npts = 0 - do - call nextln ( comstr , ndsi , ndsen ) - read (ndsi2,*) xx, yy, pn - if ( iloop.eq.1 .and. iaproc.eq.1 ) then - backspace (ndsi) - read (ndsi,'(a)') line - write (ndss,'(a)') line - end if - if ( index(pn,"STOPSTRING").ne.0 ) exit - npts = npts + 1 - if ( iloop .eq. 1 ) cycle - x(npts) = xx - y(npts) = yy - pnames(npts) = pn - if ( iaproc .eq. napout ) then - if ( flagll ) then - if ( npts .eq. 1 ) then - write (ndso,2945) factor*xx, factor*yy, pn - else - write (ndso,2946) npts, factor*xx, factor*yy, pn - end if - else - if ( npts .eq. 1 ) then - write (ndso,2955) factor*xx, factor*yy, pn - else - write (ndso,2956) npts, factor*xx, factor*yy, pn - end if - end if - end if - end do - - if ( iaproc.eq.1 .and. iloop.eq.1 ) close (ndss) - end do - - if ( npts.eq.0 .and. iaproc.eq.napout ) write (ndso,2947) - if ( iaproc .eq. 1 ) then -#ifdef W3_MPI - call mpi_barrier ( mpi_comm, ierr_mpi ) -#endif - close (ndss,status='delete') - else -#ifdef W3_MPI - call mpi_barrier ( mpi_comm, ierr_mpi ) -#endif - close (ndss) - end if - - else if ( j .eq. 3 ) then - call print_logmsg(740+IAPROC, ' 2.5 Track output ', w3_debuginit_flag) - ! Type 3: track output - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,*) tflagi - if ( .not. tflagi ) nds(11) = -nds(11) - if ( iaproc .eq. napout ) then - if ( .not. tflagi ) then - write (ndso,3945) 'input', 'UNFORMATTED' - else - write (ndso,3945) 'input', 'FORMATTED' - end if - end if - - else if ( j .eq. 6 ) then - call print_logmsg(740+IAPROC, ' 2.6 Partitioning output ', w3_debuginit_flag) - ! Type 6: partitioning - ! IPRT: IX0, IXN, IXS, IY0, IYN, IYS - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,*) iprt, prtfrm - - if ( iaproc .eq. napout ) then - if ( prtfrm ) then - yesxno = 'YES/--' - else - yesxno = '---/NO' - end if - write (ndso,6945) iprt, yesxno - end if - - else if ( j .eq. 7 ) then - - ! Type 7: coupling -#ifdef W3_COU - call w3readflgrd ( ndsi, ndso, ndss, ndsen, comstr, flg2, flgr2, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,'(a)',end=2001,err=2002,iostat=ierr) fldin -#endif - - end if ! j - - end if ! odat - end if ! if j=4 - end do ! j - - ! force minimal allocation to avoid memory seg fault - if ( .not.allocated(x) .and. npts.eq.0 ) allocate ( x(1), y(1), pnames(1) ) - - !-------------------- - ! 2.6 Homogeneous field data - !-------------------- - - call print_logmsg(740+IAPROC, ' 2.6 Homogeneous field data ', w3_debuginit_flag) - if ( flhom ) then - if ( iaproc .eq. napout ) write (ndso,951) 'homogeneous field data (and moving grid) ...' - nh = 0 - - ! Start of loop - do - call nextln ( comstr , ndsi , ndsen ) - read (ndsi,*) idtst - ! Exit if illegal id - if ( idtst.ne.idstr(-7) .and. idtst.ne.idstr(-6) .and. & - idtst.ne.idstr(-5) .and. idtst.ne.idstr(-4) .and. & - idtst.ne.idstr(-3) .and. idtst.ne.idstr(-2) .and. & - idtst.ne.idstr(-1) .and. idtst.ne.idstr(0) .and. & - idtst.ne.idstr(1) .and. idtst.ne.idstr(2) .and. & - idtst.ne.idstr(3) .and. idtst.ne.idstr(4) .and. & - idtst.ne.idstr(5) .and. idtst.ne.idstr(6) .and. & - idtst.ne.idstr(10) .and. idtst.ne.'STP' ) goto 2005 - - ! Stop conditions - if ( idtst .eq. 'STP' ) then - exit - else - backspace ( ndsi ) - end if - - call print_logmsg(740+IAPROC, ' 2.6 Store data ', w3_debuginit_flag) - ! Store data - do j=lbound(idstr,1), 10 - if ( idtst .eq. idstr(j) ) then - nh(j) = nh(j) + 1 - if ( nh(j) .gt. nhmax ) goto 2006 - IF ( J .LE. 1 ) THEN ! water levels, etc. : get HA - read (ndsi,*) idtst, & - tho(1,j,nh(j)), tho(2,j,nh(j)), & - ha(nh(j),j) - ELSE IF ( J .EQ. 2 ) THEN ! currents: get HA and HD - read (ndsi,*) idtst, & - tho(1,j,nh(j)), tho(2,j,nh(j)), & - ha(nh(j),j), hd(nh(j),j) - ELSE IF ( J .EQ. 3 ) THEN ! wind: get HA HD and HS - read (ndsi,*) idtst, & - tho(1,j,nh(j)), tho(2,j,nh(j)), & - ha(nh(j),j), hd(nh(j),j), hs(nh(j),j) - ELSE IF ( J .EQ. 4 ) THEN ! ice - read (ndsi,*) idtst, & - tho(1,j,nh(j)), tho(2,j,nh(j)), & - ha(nh(j),j) - ELSE IF ( J .EQ. 5 ) THEN ! atmospheric momentum - read (ndsi,*) idtst, & - tho(1,j,nh(j)), tho(2,j,nh(j)), & - ha(nh(j),j), hd(nh(j),j) - ELSE IF ( J .EQ. 6 ) THEN ! air density - read (ndsi,*) idtst, & - tho(1,j,nh(j)), tho(2,j,nh(j)), & - ha(nh(j),j) - ELSE IF ( J .EQ. 10 ) THEN ! mov: HA and HD - read (ndsi,*) idtst, & - tho(1,j,nh(j)), tho(2,j,nh(j)), & - ha(nh(j),j), hd(nh(j),j) - END IF - end if - end do - end do - call print_memcheck(memunit, 'memcheck_____:'//' read_shel_config SECTION 3') - - if (w3_o7_flag) then - do j=jfirst, 10 - if ( flh(j) .and. iaproc.eq.napout ) then - write (ndso,952) nh(j), idflds(j) - do i=1, nh(j) - if ( ( j .le. 1 ) .or. ( j .eq. 4 ) .or. ( j .eq. 6 ) ) then - write (ndso,953) i, tho(1,j,i), tho(2,j,i), ha(i,j) - else if ( ( j .eq. 2 ) .or. ( j .eq. 5 ) .or. ( j .eq. 10 ) ) then - write (ndso,953) i, tho(1,j,i), tho(2,j,i), ha(i,j), hd(i,j) - else if ( j .eq. 3 ) then - write (ndso,953) i, tho(1,j,i), tho(2,j,i), ha(i,j), hd(i,j), hs(i,j) - end if - end do - end if - end do - end if - - if ( ( flh(-7) .and. (nh(-7).eq.0) ) .or. & - ( flh(-6) .and. (nh(-6).eq.0) ) .or. & - ( flh(-5) .and. (nh(-5).eq.0) ) .or. & - ( flh(-4) .and. (nh(-4).eq.0) ) .or. & - ( flh(-3) .and. (nh(-3).eq.0) ) .or. & - ( flh(-2) .and. (nh(-2).eq.0) ) .or. & - ( flh(-1) .and. (nh(-1).eq.0) ) .or. & - ( flh(0) .and. (nh(0).eq.0) ) .or. & - ( flh(1) .and. (nh(1).eq.0) ) .or. & - ( flh(2) .and. (nh(2).eq.0) ) .or. & - ( flh(3) .and. (nh(3).eq.0) ) .or. & - ( flh(4) .and. (nh(4).eq.0) ) .or. & - ( flh(5) .and. (nh(5).eq.0) ) .or. & - ( flh(6) .and. (nh(6).eq.0) ) .or. & - ( flh(10) .and. (nh(10).eq.0) ) ) goto 2007 - - end if ! flhom - close(ndsi) - end if ! .not. flgnml - - call print_memcheck(memunit, 'memcheck_____:'//' read_shel_config SECTION 4') - - !-------------------- - ! 2.2 Time setup - !-------------------- - - if (present(time0_overwrite) .and. present(timen_overwrite)) then - time0(:) = time0_overwrite(:) - timen(:) = timen_overwrite(:) - do j = 1,notype - if (odat(5*(j-1)+3) .ne. 0 ) then ! non-zero stride - odat(5*(j-1)+1) = time0(1) - odat(5*(j-1)+2) = time0(2) - odat(5*(j-1)+4) = timen(1) - odat(5*(j-1)+5) = timen(2) - end if - end do - j=8 - if (odat(5*(j-1)+3) .ne. 0) then ! non-zero stride - odat(5*(j-1)+1) = time0(1) - odat(5*(j-1)+2) = time0(2) - odat(5*(j-1)+4) = timen(1) - odat(5*(j-1)+5) = timen(2) - end if - end if - - if ( iaproc .eq. napout ) write (ndso,930) - call stme21 ( time0 , dtme21 ) - if ( iaproc .eq. napout ) write (ndso,931) dtme21 - time = time0 - call stme21 ( timen , dtme21 ) - if ( iaproc .eq. napout ) write (ndso,932) dtme21 -#ifdef W3_OASIS - time00 = time0 - timeend = timen -#endif -#ifdef W3_NL5 - qi5tbeg = time0 -#endif - - dttst = dsec21 ( time0 , timen ) - if ( dttst .le. 0. ) goto 2003 - - !-------------------- - ! 2.3 Domain setup - !-------------------- - - iostyp = max ( 0 , min ( 3 , iostyp ) ) - if (w3_pdlib_flag) then - if (iostyp .gt. 1) then - write(*,*) 'iostyp not supported in domain decomposition mode' - call extcde ( 6666 ) - end if - endif - - if ( iaproc .eq. napout ) then - if ( iostyp .eq. 0 ) then - write (ndso,940) 'No dedicated output process, parallel file system required.' - else if ( iostyp .eq. 1 ) then - write (ndso,940) 'No dedicated output process, any file system.' - else if ( iostyp .eq. 2 ) then - write (ndso,940) 'Single dedicated output process.' - else if ( iostyp .eq. 3 ) then - write (ndso,940) 'Multiple dedicated output processes.' - else - write (ndso,940) 'IOSTYP NOT RECOGNIZED' - end if - end if - - ! TODO: the following documents the output dates according to - ! the nml/inp files. Check if it be removed if user controls - ! output w/ alarms - - ! 2.4 Output dates - - do j = 1, notype - if ( odat(5*(j-1)+3) .ne. 0 ) then - if ( iaproc .eq. napout ) write (ndso,941) j, idotyp(j) - ttime(1) = odat(5*(j-1)+1) - ttime(2) = odat(5*(j-1)+2) - call stme21 ( ttime , dtme21 ) - if ( iaproc .eq. napout ) write (ndso,942) dtme21 - ttime(1) = odat(5*(j-1)+4) - ttime(2) = odat(5*(j-1)+5) - call stme21 ( ttime , dtme21 ) - if ( iaproc .eq. napout ) write (ndso,943) dtme21 - ttime(1) = 0 - ttime(2) = 0 - dttst = real ( odat(5*(j-1)+3) ) - call tick21 ( ttime , dttst ) - call stme21 ( ttime , dtme21 ) - if ( ( odat(5*(j-1)+1) .ne. odat(5*(j-1)+4) .or. odat(5*(j-1)+2) .ne. odat(5*(j-1)+5) ) & - .and. iaproc .eq. napout ) then - if ( dtme21(9:9) .ne. '0' ) then - write (ndso,1944) dtme21( 9:19) - else if ( dtme21(10:10) .ne. '0' ) then - write (ndso,2944) dtme21(10:19) - else - write (ndso,3944) dtme21(12:19) - end if - end if - end if - end do - - ! CHECKPOINT - j=8 - if (odat(5*(j-1)+3) .ne. 0) then - if ( iaproc .eq. napout ) write (ndso,941) j, idotyp(j) - ttime(1) = odat(5*(j-1)+1) - ttime(2) = odat(5*(j-1)+2) - call stme21 ( ttime , dtme21 ) - if ( iaproc .eq. napout ) write (ndso,942) dtme21 - ttime(1) = odat(5*(j-1)+4) - ttime(2) = odat(5*(j-1)+5) - call stme21 ( ttime , dtme21 ) - if ( iaproc .eq. napout ) write (ndso,943) dtme21 - ttime(1) = 0 - ttime(2) = 0 - dttst = real ( odat(5*(j-1)+3) ) - call tick21 ( ttime , dttst ) - call stme21 ( ttime , dtme21 ) - if ( ( odat(5*(j-1)+1) .ne. odat(5*(j-1)+4) .or. & - odat(5*(j-1)+2) .ne. odat(5*(j-1)+5) ) .and. & - iaproc .eq. napout ) then - if ( dtme21(9:9) .ne. '0' ) then - write (ndso,1944) dtme21( 9:19) - else if ( dtme21(10:10) .ne. '0' ) then - write (ndso,2944) dtme21(10:19) - else - write (ndso,3944) dtme21(12:19) - end if - end if - end if - - ! 2.5 Output types - - if (w3_t_flag) then - write (ndst,9040) odat - write (ndst,9041) flgrd - write (ndst,9042) iprt, prtfrm - end if - if (.not. present(time0_overwrite) .and. .not. present(timen_overwrite)) then - ! - ! For outputs with non-zero time step, check dates : - ! If output ends before run start OR output starts after run end, - ! deactivate output cleanly with output time step = 0 - ! This is usefull for IOSTYP=3 (Multiple dedicated output processes) - ! to avoid the definition of dedicated proc. for unused output. - ! - do j = 1, notype - dttst = dsec21 ( time0 , odat(5*(j-1)+4:5*(j-1)+5) ) - if ( dttst .lt. 0 ) then - odat(5*(j-1)+3) = 0 - if ( iaproc .eq. napout ) write (ndso,8945) trim(idotyp(j)) - continue - end if - dttst = dsec21 ( odat(5*(j-1)+1:5*(j-1)+2), timen ) - if ( dttst .lt. 0 ) then - odat(5*(j-1)+3) = 0 - if ( iaproc .eq. napout ) write (ndso,8945) trim(idotyp(j)) - continue - end if - end do - end if - - ! checkpoint - j = 8 - dttst = dsec21 ( time0 , odat(5*(j-1)+4:5*(j-1)+5) ) - if ( dttst .lt. 0 ) then - odat(5*(j-1)+3) = 0 - if ( iaproc .eq. napout ) write (ndso,8945) trim(idotyp(j)) - continue - end if - dttst = dsec21 ( odat(5*(j-1)+1:5*(j-1)+2), timen ) - if ( dttst .lt. 0 ) then - odat(5*(j-1)+3) = 0 - if ( iaproc .eq. napout ) write (ndso,8945) trim(idotyp(j)) - continue - end if - - call print_memcheck(memunit, 'memcheck_____:'//' read_shel_config SECTION 5') - - !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if ( iaproc .eq. napout ) write (ndso,951) 'Wave model ...' - goto 2222 - - ! Error escape locations -2001 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1001) - CALL EXTCDE ( 1001 ) -2002 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1002) IERR - CALL EXTCDE ( 1002 ) -2102 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1102) - CALL EXTCDE ( 1102 ) -2003 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1003) - CALL EXTCDE ( 1003 ) -2104 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1104) IERR - CALL EXTCDE ( 1104 ) -2004 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1004) IERR - CALL EXTCDE ( 1004 ) -2005 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1005) IDTST - CALL EXTCDE ( 1005 ) -2054 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1054) - CALL EXTCDE ( 1054 ) -2006 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1006) IDTST, NH(J) - CALL EXTCDE ( 1006 ) -2062 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1062) IDTST - CALL EXTCDE ( 1062 ) -2007 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1007) - CALL EXTCDE ( 1007 ) -2009 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1009) ODAT(33), NINT(DTMAX) - CALL EXTCDE ( 1009 ) -2222 CONTINUE - ! Formats -900 FORMAT (/15X, ' *** WAVEWATCH III Program shell *** '/ & - 15X, '==============================================='/) -901 FORMAT ( ' Comment character is ''',A,''''/) -905 FORMAT ( ' Hybrid MPI/OMP thread support level:'/ & - ' Requested: ', I2/ & - ' Provided: ', I2/ ) -920 FORMAT (/ ' Input fields : '/ & - ' --------------------------------------------------') -921 FORMAT ( ' ',A,2X,A,2X,A) -922 FORMAT ( ' ' ) -930 FORMAT (/ ' Time interval : '/ & - ' --------------------------------------------------') -931 FORMAT ( ' Starting time : ',A) -932 FORMAT ( ' Ending time : ',A/) -940 FORMAT (/ ' Output requests : '/ & - ' --------------------------------------------------'/ & - ' ',A) -941 FORMAT (/ ' Type',I2,' : ',A/ & - ' -----------------------------------------') -942 FORMAT ( ' From : ',A) -943 FORMAT ( ' To : ',A) -954 FORMAT ( ' ',A,': file not needed') -955 FORMAT ( ' ',A,': file OK') -956 FORMAT ( ' ',A,': file OK, recl =',I3, & - ' undef = ',E10.3) -1944 FORMAT ( ' Interval : ', 8X,A11/) -2944 FORMAT ( ' Interval : ', 9X,A10/) -3944 FORMAT ( ' Interval : ',11X,A8/) -2945 FORMAT ( ' Point 1 : ',2F8.2,2X,A) -2955 FORMAT ( ' Point 1 : ',2(F8.1,'E3'),2X,A) -2946 FORMAT ( ' ',I6,' : ',2F8.2,2X,A) -2956 FORMAT ( ' ',I6,' : ',2(F8.1,'E3'),2X,A) -2947 FORMAT ( ' No points defined') -3945 FORMAT ( ' The file with ',A,' data is ',A,'.') -6945 FORMAT ( ' IX first,last,inc :',3I5/ & - ' IY first,last,inc :',3I5/ & - ' Formatted file : ',A) -8945 FORMAT ( ' output dates out of run dates : ', A, & - ' deactivated') -950 FORMAT (/ ' Initializations :'/ & - ' --------------------------------------------------') -951 FORMAT ( ' ',A) -952 FORMAT ( ' ',I6,2X,A) -953 FORMAT ( ' ',I6,I11.8,I7.6,3E12.4) -1001 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' PREMATURE END OF INPUT FILE'/) -1002 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' ERROR IN READING FROM INPUT FILE'/ & - ' IOSTAT =',I5/) -1102 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' LEVEL AND CURRENT ARE MIXING COUPLED AND FORCED'/ & - ' IT MUST BE FULLY COUPLED OR DISABLED '/) -1003 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' ILLEGAL TIME INTERVAL'/) -1104 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' ERROR IN OPENING POINT FILE'/ & - ' IOSTAT =',I5/) -1004 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' ERROR IN READING FROM POINT FILE'/ & - ' IOSTAT =',I5/) -1005 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' ILLEGAL ID STRING HOMOGENEOUS FIELD : ',A/) -1006 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' TOO MANY HOMOGENEOUS FIELDS : ',A,1X,I4/) -1062 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : ***'/ & - ' HOMOGENEOUS NAME NOT RECOGNIZED : ', A/) -1007 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' INSUFFICIENT DATA FOR HOMOGENEOUS FIELDS'/) -1008 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' ERROR IN OPENING OUTPUT FILE'/ & - ' IOSTAT =',I5/) -1009 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' COUPLING TIME STEP NOT MULTIPLE OF'/ & - ' MODEL TIME STEP: ',I6, I6/) -1010 FORMAT (/ ' *** WAVEWATCH III WARNING IN W3SHEL : *** '/ & - ' COUPLING TIME STEP NOT DEFINED, '/ & - ' IT WILL BE OVERRIDEN TO DEFAULT VALUE'/ & - ' FROM ',I6, ' TO ',I6/) -1054 FORMAT (/ ' *** WAVEWATCH III ERROR IN W3SHEL : *** '/ & - ' POINT OUTPUT ACTIVATED BUT NO POINTS DEFINED'/) -9000 FORMAT ( ' TEST W3SHEL : UNIT NUMBERS :',12I4) -9001 FORMAT ( ' TEST W3SHEL : SUBR. TRACING :',2I4) -9020 FORMAT ( ' TEST W3SHEL : FLAGS DEF / HOM : ',9L2,2X,9L2) -9040 FORMAT ( ' TEST W3SHEL : ODAT : ',I9.8,I7.6,I7,I9.8,I7.6, 4(/24X,I9.8,I7.6,I7,I9.8,I7.6) ) -9041 FORMAT ( ' TEST W3SHEL : FLGRD : ',20L2) -9042 FORMAT ( ' TEST W3SHEL : IPR, PRFRM : ',6I6,1X,L1) - - end subroutine read_shel_config - -end module wav_shel_inp diff --git a/model/src/wav_shr_flags.F90 b/model/src/wav_shr_flags.F90 deleted file mode 100644 index ecd5c4be0..000000000 --- a/model/src/wav_shr_flags.F90 +++ /dev/null @@ -1,1175 +0,0 @@ -!> @file wav_shr_flags -!! -!> Shared flags matching compile time options -!! -!> @details Sets logical flags to according to compile time -!! options -!! -!> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov -!> @date 07-01-2022 -module wav_shr_flags - - implicit none - public - -#ifdef W3_DIST - logical, parameter :: w3_dist_flag = .true. !< @public a flag for "W3_DIST" -#else - logical, parameter :: w3_dist_flag = .false. !< @public a flag for "W3_DIST" -#endif -#ifdef W3_SHRD - logical, parameter :: w3_shrd_flag = .true. !< @public a flag for "W3_SHRD" -#else - logical, parameter :: w3_shrd_flag = .false. !< @public a flag for "W3_SHRD" -#endif - ! debug/logging -#ifdef W3_DEBUG - logical, parameter :: w3_debug_flag = .true. !< @public a flag for "W3_DEBUG" -#else - logical, parameter :: w3_debug_flag = .false. !< @public a flag for "W3_DEBUG" -#endif -#ifdef W3_DEBUGGRID - logical, parameter :: w3_debuggrid_flag = .true. !< @public a flag for "W3_DEBUGGRID" -#else - logical, parameter :: w3_debuggrid_flag = .false. !< @public a flag for "W3_DEBUGGRID" -#endif - -#ifdef W3_DEBUGSTP - logical, parameter :: w3_debugstp_flag = .true. !< @public a flag for "W3_DEBUGSTP" -#else - logical, parameter :: w3_debugstp_flag = .false. !< @public a flag for "W3_DEBUGSTP" -#endif - -#ifdef W3_DEBUGFLS - logical, parameter :: w3_debugfls_flag = .true. !< @public a flag for "W3_DEBUGFLS" -#else - logical, parameter :: w3_debugfls_flag = .false. !< @public a flag for "W3_DEBUGFLS" -#endif - -#ifdef W3_DEBUGCOH - logical, parameter :: w3_debugcoh_flag = .true. !< @public a flag for "W3_DEBUGCOH" -#else - logical, parameter :: w3_debugcoh_flag = .false. !< @public a flag for "W3_DEBUGCOH" -#endif - -#ifdef W3_DEBUGIOBP - logical, parameter :: w3_debugiobp_flag = .true. !< @public a flag for "W3_DEBUGIOBP" -#else - logical, parameter :: w3_debugiobp_flag = .false. !< @public a flag for "W3_DEBUGIOBP" -#endif - -#ifdef W3_DEBUGIOGR - logical, parameter :: w3_debugiogr_flag = .true. !< @public a flag for "W3_DEBUGIOGR" -#else - logical, parameter :: w3_debugiogr_flag = .false. !< @public a flag for "W3_DEBUGIOGR" -#endif - -#ifdef W3_DEBUGIOBC - logical, parameter :: w3_debugiobc_flag = .true. !< @public a flag for "W3_DEBUGIOBC" -#else - logical, parameter :: w3_debugiobc_flag = .false. !< @public a flag for "W3_DEBUGIOBC" -#endif -#ifdef W3_DEBUGDCXDX - logical, parameter :: w3_debugdcxdx_flag = .true. !< @public a flag for "W3_DEBUGDCXDX" -#else - logical, parameter :: w3_debugdcxdx_flag = .false. !< @public a flag for "W3_DEBUGDCXDX" -#endif - -#ifdef W3_DEBUSETIOBP - logical, parameter :: w3_debugsetiobp_flag = .true. !< @public a flag for "W3_DEBUSETIOBP" -#else - logical, parameter :: w3_debugsetiobp_flag = .false. !< @public a flag for "W3_DEBUSETIOBP" -#endif - -#ifdef W3_DEBUSETUGIOBP - logical, parameter :: w3_debugsetugiobp_flag = .true. !< @public a flag for "W3_DEBUSETUGIOBP" -#else - logical, parameter :: w3_debugsetugiobp_flag = .false. !< @public a flag for "W3_DEBUSETUGIOBP" -#endif - -#ifdef W3_DEBUGSRC - logical, parameter :: w3_debugsrc_flag = .true. !< @public a flag for "W3_DEBUGSRC" -#else - logical, parameter :: w3_debugsrc_flag = .false. !< @public a flag for "W3_DEBUGSRC" -#endif - -#ifdef W3_DEBUGINIT - logical, parameter :: w3_debuginit_flag = .true. !< @public a flag for "W3_DEBUGINIT" -#else - logical, parameter :: w3_debuginit_flag = .false. !< @public a flag for "W3_DEBUGINIT" -#endif - -#ifdef W3_DEBUGRUN - logical, parameter :: w3_debugrun_flag = .true. !< @public a flag for "W3_DEBUGRUN" -#else - logical, parameter :: w3_debugrun_flag = .false. !< @public a flag for "W3_DEBUGRUN" -#endif - -#ifdef W3_DEBUGIO - logical, parameter :: w3_debugio_flag = .true. !< @public a flag for "W3_DEBUGIO" -#else - logical, parameter :: w3_debugio_flag = .false. !< @public a flag for "W3_DEBUGIO" -#endif -#ifdef W3_DEBUGW3ULEV - logical, parameter :: w3_debugw3ulev_flag = .true. !< @public a flag for "W3_DEBUGW3ULEV" -#else - logical, parameter :: w3_debugw3ulev_flag = .false. !< @public a flag for "W3_DEBUGW3ULEV" -#endif - -#ifdef W3_TIMINGS - logical, parameter :: w3_timings_flag = .true. !< @public a flag for "W3_TIMINGS" -#else - logical, parameter :: w3_timings_flag = .false. !< @public a flag for "W3_TIMINGS" -#endif -#ifdef W3_TS - logical, parameter :: w3_ts_flag = .true. !< @public a flag for "W3_TS" -#else - logical, parameter :: w3_ts_flag = .false. !< @public a flag for "W3_TS" -#endif - - ! propagation/gse - -#ifdef W3_PR0 - logical, parameter :: w3_pr0_flag = .true. !< @public a flag for "W3_PR0" -#else - logical, parameter :: w3_pr0_flag = .false. !< @public a flag for "W3_PR0" -#endif - -#ifdef W3_PR1 - logical, parameter :: w3_pr1_flag = .true. !< @public a flag for "W3_PR1" -#else - logical, parameter :: w3_pr1_flag = .false. !< @public a flag for "W3_PR1" -#endif - -#ifdef W3_PR2 - logical, parameter :: w3_pr2_flag = .true. !< @public a flag for "W3_PR2" -#else - logical, parameter :: w3_pr2_flag = .false. !< @public a flag for "W3_PR2" -#endif - -#ifdef W3_PR3 - logical, parameter :: w3_pr3_flag = .true. !< @public a flag for "W3_PR3" -#else - logical, parameter :: w3_pr3_flag = .false. !< @public a flag for "W3_PR3" -#endif - -#ifdef W3_UNO - logical, parameter :: w3_uno_flag = .true. !< @public a flag for "W3_UNO" -#else - logical, parameter :: w3_uno_flag = .false. !< @public a flag for "W3_UNO" -#endif - -#ifdef W3_UQ - logical, parameter :: w3_uq_flag = .true. !< @public a flag for "W3_UQ" -#else - logical, parameter :: w3_uq_flag = .false. !< @public a flag for "W3_UQ" -#endif - - ! flux scheme - -#ifdef W3_FLX0 - logical, parameter :: w3_flx0_flag = .true. !< @public a flag for "W3_FLX0" -#else - logical, parameter :: w3_flx0_flag = .false. !< @public a flag for "W3_FLX0" -#endif - -#ifdef W3_FLX1 - logical, parameter :: w3_flx1_flag = .true. !< @public a flag for "W3_FLX1" -#else - logical, parameter :: w3_flx1_flag = .false. !< @public a flag for "W3_FLX1" -#endif - -#ifdef W3_FLX2 - logical, parameter :: w3_flx2_flag = .true. !< @public a flag for "W3_FLX2" -#else - logical, parameter :: w3_flx2_flag = .false. !< @public a flag for "W3_FLX2" -#endif - -#ifdef W3_FLX3 - logical, parameter :: w3_flx3_flag = .true. !< @public a flag for "W3_FLX3" -#else - logical, parameter :: w3_flx3_flag = .false. !< @public a flag for "W3_FLX3" -#endif - -#ifdef W3_FLX4 - logical, parameter :: w3_flx4_flag = .true. !< @public a flag for "W3_FLX4" -#else - logical, parameter :: w3_flx4_flag = .false. !< @public a flag for "W3_FLX4" -#endif - -#ifdef W3_FLX5 - logical, parameter :: w3_flx5_flag = .true. !< @public a flag for "W3_FLX5" -#else - logical, parameter :: w3_flx5_flag = .false. !< @public a flag for "W3_FLX5" -#endif - - ! linear input - -#ifdef W3_LN0 - logical, parameter :: w3_ln0_flag = .true. !< @public a flag for "W3_LN0" -#else - logical, parameter :: w3_ln0_flag = .false. !< @public a flag for "W3_LN0" -#endif - -#ifdef W3_SEED - logical, parameter :: w3_seed_flag = .true. !< @public a flag for "W3_SEED" -#else - logical, parameter :: w3_seed_flag = .false. !< @public a flag for "W3_SEED" -#endif - -#ifdef W3_LN1 - logical, parameter :: w3_ln1_flag = .true. !< @public a flag for "W3_LN1" -#else - logical, parameter :: w3_ln1_flag = .false. !< @public a flag for "W3_LN1" -#endif - - ! input/dissipation - -#ifdef W3_ST0 - logical, parameter :: w3_st0_flag = .true. !< @public a flag for "W3_ST0" -#else - logical, parameter :: w3_st0_flag = .false. !< @public a flag for "W3_ST0" -#endif - -#ifdef W3_ST1 - logical, parameter :: w3_st1_flag = .true. !< @public a flag for "W3_ST1" -#else - logical, parameter :: w3_st1_flag = .false. !< @public a flag for "W3_ST1" -#endif - -#ifdef W3_ST2 - logical, parameter :: w3_st2_flag = .true. !< @public a flag for "W3_ST2" -#else - logical, parameter :: w3_st2_flag = .false. !< @public a flag for "W3_ST2" -#endif - -#ifdef W3_STAB0 - logical, parameter :: w3_stab0_flag = .true. !< @public a flag for "W3_STAB0" -#else - logical, parameter :: w3_stab0_flag = .false. !< @public a flag for "W3_STAB0" -#endif - -#ifdef W3_STAB2 - logical, parameter :: w3_stab2_flag = .true. !< @public a flag for "W3_STAB2" -#else - logical, parameter :: w3_stab2_flag = .false. !< @public a flag for "W3_STAB2" -#endif - -#ifdef W3_ST3 - logical, parameter :: w3_st3_flag = .true. !< @public a flag for "W3_ST3" -#else - logical, parameter :: w3_st3_flag = .false. !< @public a flag for "W3_ST3" -#endif - -#ifdef W3_STAB3 - logical, parameter :: w3_stab3_flag = .true. !< @public a flag for "W3_STAB3" -#else - logical, parameter :: w3_stab3_flag = .false. !< @public a flag for "W3_STAB3" -#endif - -#ifdef W3_ST4 - logical, parameter :: w3_st4_flag = .true. !< @public a flag for "W3_ST4" -#else - logical, parameter :: w3_st4_flag = .false. !< @public a flag for "W3_ST4" -#endif - -#ifdef W3_ST6 - logical, parameter :: w3_st6_flag = .true. !< @public a flag for "W3_ST6" -#else - logical, parameter :: w3_st6_flag = .false. !< @public a flag for "W3_ST6" -#endif - - ! non-linear interaction - -#ifdef W3_NL0 - logical, parameter :: w3_nl0_flag = .true. !< @public a flag for "W3_NL0" -#else - logical, parameter :: w3_nl0_flag = .false. !< @public a flag for "W3_NL0" -#endif - -#ifdef W3_NL1 - logical, parameter :: w3_nl1_flag = .true. !< @public a flag for "W3_NL1" -#else - logical, parameter :: w3_nl1_flag = .false. !< @public a flag for "W3_NL1" -#endif - -#ifdef W3_NL2 - logical, parameter :: w3_nl2_flag = .true. !< @public a flag for "W3_NL2" -#else - logical, parameter :: w3_nl2_flag = .false. !< @public a flag for "W3_NL2" -#endif - -#ifdef W3_NL3 - logical, parameter :: w3_nl3_flag = .true. !< @public a flag for "W3_NL3" -#else - logical, parameter :: w3_nl3_flag = .false. !< @public a flag for "W3_NL3" -#endif - -#ifdef W3_NL4 - logical, parameter :: w3_nl4_flag = .true. !< @public a flag for "W3_NL4" -#else - logical, parameter :: w3_nl4_flag = .false. !< @public a flag for "W3_NL4" -#endif - -#ifdef W3_NL5 - logical, parameter :: w3_nl5_flag = .true. !< @public a flag for "W3_NL5" -#else - logical, parameter :: w3_nl5_flag = .false. !< @public a flag for "W3_NL5" -#endif - - ! bottom friction - -#ifdef W3_BT0 - logical, parameter :: w3_bt0_flag = .true. !< @public a flag for "W3_BT0" -#else - logical, parameter :: w3_bt0_flag = .false. !< @public a flag for "W3_BT0" -#endif - -#ifdef W3_BT1 - logical, parameter :: w3_bt1_flag = .true. !< @public a flag for "W3_BT1" -#else - logical, parameter :: w3_bt1_flag = .false. !< @public a flag for "W3_BT1" -#endif - -#ifdef W3_B24 - logical, parameter :: w3_b24_flag = .true. !< @public a flag for "W3_B24" -#else - logical, parameter :: w3_b24_flag = .false. !< @public a flag for "W3_B24" -#endif - -#ifdef W3_BT8 - logical, parameter :: w3_bt8_flag = .true. !< @public a flag for "W3_BT8" -#else - logical, parameter :: w3_bt8_flag = .false. !< @public a flag for "W3_BT8" -#endif - -#ifdef W3_BT9 - logical, parameter :: w3_bt9_flag = .true. !< @public a flag for "W3_BT9" -#else - logical, parameter :: w3_bt9_flag = .false. !< @public a flag for "W3_BT9" -#endif - - ! damping by sea ice - -#ifdef W3_IC0 - logical, parameter :: w3_ic0_flag = .true. !< @public a flag for "W3_IC0" -#else - logical, parameter :: w3_ic0_flag = .false. !< @public a flag for "W3_IC0" -#endif - -#ifdef W3_IC1 - logical, parameter :: w3_ic1_flag = .true. !< @public a flag for "W3_IC1" -#else - logical, parameter :: w3_ic1_flag = .false. !< @public a flag for "W3_IC1" -#endif - -#ifdef W3_IC2 - logical, parameter :: w3_ic2_flag = .true. !< @public a flag for "W3_IC2" -#else - logical, parameter :: w3_ic2_flag = .false. !< @public a flag for "W3_IC2" -#endif - -#ifdef W3_IC3 - logical, parameter :: w3_ic3_flag = .true. !< @public a flag for "W3_IC3" -#else - logical, parameter :: w3_ic3_flag = .false. !< @public a flag for "W3_IC3" -#endif - -#ifdef W3_IC4 - logical, parameter :: w3_ic4_flag = .true. !< @public a flag for "W3_IC4" -#else - logical, parameter :: w3_ic4_flag = .false. !< @public a flag for "W3_IC4" -#endif - -#ifdef W3_IC5 - logical, parameter :: w3_ic5_flag = .true. !< @public a flag for "W3_IC5" -#else - logical, parameter :: w3_ic5_flag = .false. !< @public a flag for "W3_IC5" -#endif - - ! scattering by seaice - -#ifdef W3_IS0 - logical, parameter :: w3_is0_flag = .true. !< @public a flag for "W3_IS0" -#else - logical, parameter :: w3_is0_flag = .false. !< @public a flag for "W3_IS0" -#endif - -#ifdef W3_IS1 - logical, parameter :: w3_is1_flag = .true. !< @public a flag for "W3_IS1" -#else - logical, parameter :: w3_is1_flag = .false. !< @public a flag for "W3_IS1" -#endif - -#ifdef W3_IS2 - logical, parameter :: w3_is2_flag = .true. !< @public a flag for "W3_IS2" -#else - logical, parameter :: w3_is2_flag = .false. !< @public a flag for "W3_IS2" -#endif - - ! reflection - -#ifdef W3_REF0 - logical, parameter :: w3_ref0_flag = .true. !< @public a flag for "W3_REF0" -#else - logical, parameter :: w3_ref0_flag = .false. !< @public a flag for "W3_REF0" -#endif - -#ifdef W3_REF1 - logical, parameter :: w3_ref1_flag = .true. !< @public a flag for "W3_REF1" -#else - logical, parameter :: w3_ref1_flag = .false. !< @public a flag for "W3_REF1" -#endif - - ! depth induced breaking - -#ifdef W3_DB0 - logical, parameter :: w3_db0_flag = .true. !< @public a flag for "W3_DB0" -#else - logical, parameter :: w3_db0_flag = .false. !< @public a flag for "W3_DB0" -#endif - -#ifdef W3_DB1 - logical, parameter :: w3_db1_flag = .true. !< @public a flag for "W3_DB1" -#else - logical, parameter :: w3_db1_flag = .false. !< @public a flag for "W3_DB1" -#endif - - ! tidal interaction - -#ifdef W3_TR0 - logical, parameter :: w3_tr0_flag = .true. !< @public a flag for "W3_TR0" -#else - logical, parameter :: w3_tr0_flag = .false. !< @public a flag for "W3_TR0" -#endif - -#ifdef W3_TR1 - logical, parameter :: w3_tr1_flag = .true. !< @public a flag for "W3_TR1" -#else - logical, parameter :: w3_tr1_flag = .false. !< @public a flag for "W3_TR1" -#endif - - ! bottom scattering - -#ifdef W3_BS0 - logical, parameter :: w3_bs0_flag = .true. !< @public a flag for "W3_BS0" -#else - logical, parameter :: w3_bs0_flag = .false. !< @public a flag for "W3_BS0" -#endif - -#ifdef W3_BS1 - logical, parameter :: w3_bs1_flag = .true. !< @public a flag for "W3_BS1" -#else - logical, parameter :: w3_bs1_flag = .false. !< @public a flag for "W3_BS1" -#endif - - ! wind interpolation in time - -#ifdef W3_WNT0 - logical, parameter :: w3_wnt0_flag = .true. !< @public a flag for "W3_WNT0" -#else - logical, parameter :: w3_wnt0_flag = .false. !< @public a flag for "W3_WNT0" -#endif - -#ifdef W3_WNT1 - logical, parameter :: w3_wnt1_flag = .true. !< @public a flag for "W3_WNT1" -#else - logical, parameter :: w3_wnt1_flag = .false. !< @public a flag for "W3_WNT1" -#endif - -#ifdef W3_WNT2 - logical, parameter :: w3_wnt2_flag = .true. !< @public a flag for "W3_WNT2" -#else - logical, parameter :: w3_wnt2_flag = .false. !< @public a flag for "W3_WNT2" -#endif - - ! wind interpolation in space - -#ifdef W3_WNX0 - logical, parameter :: w3_wnx0_flag = .true. !< @public a flag for "W3_WNX0" -#else - logical, parameter :: w3_wnx0_flag = .false. !< @public a flag for "W3_WNX0" -#endif - -#ifdef W3_WNX1 - logical, parameter :: w3_wnx1_flag = .true. !< @public a flag for "W3_WNX1" -#else - logical, parameter :: w3_wnx1_flag = .false. !< @public a flag for "W3_WNX1" -#endif - -#ifdef W3_WNX2 - logical, parameter :: w3_wnx2_flag = .true. !< @public a flag for "W3_WNX2" -#else - logical, parameter :: w3_wnx2_flag = .false. !< @public a flag for "W3_WNX2" -#endif - - ! current interpolation in time - -#ifdef W3_CRT0 - logical, parameter :: w3_crt0_flag = .true. !< @public a flag for "W3_CRT0" -#else - logical, parameter :: w3_crt0_flag = .false. !< @public a flag for "W3_CRT0" -#endif - -#ifdef W3_CRT1 - logical, parameter :: w3_crt1_flag = .true. !< @public a flag for "W3_CRT1" -#else - logical, parameter :: w3_crt1_flag = .false. !< @public a flag for "W3_CRT1" -#endif - -#ifdef W3_CRT2 - logical, parameter :: w3_crt2_flag = .true. !< @public a flag for "W3_CRT2" -#else - logical, parameter :: w3_crt2_flag = .false. !< @public a flag for "W3_CRT2" -#endif - - ! current interpolation in space - -#ifdef W3_CRX0 - logical, parameter :: w3_crx0_flag = .true. !< @public a flag for "W3_CRX0" -#else - logical, parameter :: w3_crx0_flag = .false. !< @public a flag for "W3_CRX0" -#endif - -#ifdef W3_CRX1 - logical, parameter :: w3_crx1_flag = .true. !< @public a flag for "W3_CRX1" -#else - logical, parameter :: w3_crx1_flag = .false. !< @public a flag for "W3_CRX1" -#endif - -#ifdef W3_CRX2 - logical, parameter :: w3_crx2_flag = .true. !< @public a flag for "W3_CRX2" -#else - logical, parameter :: w3_crx2_flag = .false. !< @public a flag for "W3_CRX2" -#endif - - ! grib - -#ifdef W3_NOGRB - logical, parameter :: w3_nogrb_flag = .true. !< @public a flag for "W3_NOGRB" -#else - logical, parameter :: w3_nogrb_flag = .false. !< @public a flag for "W3_NOGRB" -#endif - -#ifdef W3_NCEP1 - logical, parameter :: w3_ncep1_flag = .true. !< @public a flag for "W3_NCEP1" -#else - logical, parameter :: w3_ncep1_flag = .false. !< @public a flag for "W3_NCEP1" -#endif - -#ifdef W3_NCEP2 - logical, parameter :: w3_ncep2_flag = .true. !< @public a flag for "W3_NCEP2" -#else - logical, parameter :: w3_ncep2_flag = .false. !< @public a flag for "W3_NCEP2" -#endif - - ! optional output - -#ifdef W3_O0 - logical, parameter :: w3_o0_flag = .true. !< @public a flag for "W3_O0" -#else - logical, parameter :: w3_o0_flag = .false. !< @public a flag for "W3_O0" -#endif - -#ifdef W3_O1 - logical, parameter :: w3_o1_flag = .true. !< @public a flag for "W3_O1" -#else - logical, parameter :: w3_o1_flag = .false. !< @public a flag for "W3_O1" -#endif - -#ifdef W3_O2 - logical, parameter :: w3_o2_flag = .true. !< @public a flag for "W3_O2" -#else - logical, parameter :: w3_o2_flag = .false. !< @public a flag for "W3_O2" -#endif - -#ifdef W3_O3 - logical, parameter :: w3_o3_flag = .true. !< @public a flag for "W3_O3" -#else - logical, parameter :: w3_o3_flag = .false. !< @public a flag for "W3_O3" -#endif - -#ifdef W3_O4 - logical, parameter :: w3_o4_flag = .true. !< @public a flag for "W3_O4" -#else - logical, parameter :: w3_o4_flag = .false. !< @public a flag for "W3_O4" -#endif - -#ifdef W3_O5 - logical, parameter :: w3_o5_flag = .true. !< @public a flag for "W3_O5" -#else - logical, parameter :: w3_o5_flag = .false. !< @public a flag for "W3_O5" -#endif - -#ifdef W3_O6 - logical, parameter :: w3_o6_flag = .true. !< @public a flag for "W3_O6" -#else - logical, parameter :: w3_o6_flag = .false. !< @public a flag for "W3_O6" -#endif - -#ifdef W3_O7 - logical, parameter :: w3_o7_flag = .true. !< @public a flag for "W3_O7" -#else - logical, parameter :: w3_o7_flag = .false. !< @public a flag for "W3_O7" -#endif - -#ifdef W3_O8 - logical, parameter :: w3_o8_flag = .true. !< @public a flag for "W3_O8" -#else - logical, parameter :: w3_o8_flag = .false. !< @public a flag for "W3_O8" -#endif - -#ifdef W3_O9 - logical, parameter :: w3_o9_flag = .true. !< @public a flag for "W3_O9" -#else - logical, parameter :: w3_o9_flag = .false. !< @public a flag for "W3_O9" -#endif - -#ifdef W3_O10 - logical, parameter :: w3_o10_flag = .true. !< @public a flag for "W3_O10" -#else - logical, parameter :: w3_o10_flag = .false. !< @public a flag for "W3_O10" -#endif - -#ifdef W3_O11 - logical, parameter :: w3_o11_flag = .true. !< @public a flag for "W3_O11" -#else - logical, parameter :: w3_o11_flag = .false. !< @public a flag for "W3_O11" -#endif - -#ifdef W3_O12 - logical, parameter :: w3_o12_flag = .true. !< @public a flag for "W3_O12" -#else - logical, parameter :: w3_o12_flag = .false. !< @public a flag for "W3_O12" -#endif - -#ifdef W3_O13 - logical, parameter :: w3_o13_flag = .true. !< @public a flag for "W3_O13" -#else - logical, parameter :: w3_o13_flag = .false. !< @public a flag for "W3_O13" -#endif - -#ifdef W3_O14 - logical, parameter :: w3_o14_flag = .true. !< @public a flag for "W3_O14" -#else - logical, parameter :: w3_o14_flag = .false. !< @public a flag for "W3_O14" -#endif - -#ifdef W3_O15 - logical, parameter :: w3_o15_flag = .true. !< @public a flag for "W3_O15" -#else - logical, parameter :: w3_o15_flag = .false. !< @public a flag for "W3_O15" -#endif - -#ifdef W3_O16 - logical, parameter :: w3_o16_flag = .true. !< @public a flag for "W3_O16" -#else - logical, parameter :: w3_o16_flag = .false. !< @public a flag for "W3_O16" -#endif - - ! threading - -#ifdef W3_OMPG - logical, parameter :: w3_ompg_flag = .true. !< @public a flag for "W3_OMPG" -#else - logical, parameter :: w3_ompg_flag = .false. !< @public a flag for "W3_OMPG" -#endif - -#ifdef W3_OMPH - logical, parameter :: w3_omph_flag = .true. !< @public a flag for "W3_OMPH" -#else - logical, parameter :: w3_omph_flag = .false. !< @public a flag for "W3_OMPH" -#endif - -#ifdef W3_PDLIB - logical, parameter :: w3_pdlib_flag = .true. !< @public a flag for "W3_PDLIB" -#else - logical, parameter :: w3_pdlib_flag = .false. !< @public a flag for "W3_PDLIB" -#endif - -#ifdef W3_B4B - logical, parameter :: w3_b4b_flag = .true. !< @public a flag for "W3_B4B" -#else - logical, parameter :: w3_b4b_flag = .false. !< @public a flag for "W3_B4B" -#endif - - ! moving grids - -#ifdef W3_MGP - logical, parameter :: w3_mgp_flag = .true. !< @public a flag for "W3_MGP" -#else - logical, parameter :: w3_mgp_flag = .false. !< @public a flag for "W3_MGP" -#endif - -#ifdef W3_MGW - logical, parameter :: w3_mgw_flag = .true. !< @public a flag for "W3_MGW" -#else - logical, parameter :: w3_mgw_flag = .false. !< @public a flag for "W3_MGW" -#endif - -#ifdef W3_MGG - logical, parameter :: w3_mgg_flag = .true. !< @public a flag for "W3_MGG" -#else - logical, parameter :: w3_mgg_flag = .false. !< @public a flag for "W3_MGG" -#endif - - ! misc - -#ifdef W3_COU - logical, parameter :: w3_cou_flag = .true. !< @public a flag for "W3_COU" -#else - logical, parameter :: w3_cou_flag = .false. !< @public a flag for "W3_COU" -#endif - -#ifdef W3_DSS0 - logical, parameter :: w3_dss0_flag = .true. !< @public a flag for "W3_DSS0" -#else - logical, parameter :: w3_dss0_flag = .false. !< @public a flag for "W3_DSS0" -#endif - -#ifdef W3_FLD1 - logical, parameter :: w3_fld1_flag = .true. !< @public a flag for "W3_FLD1" -#else - logical, parameter :: w3_fld1_flag = .false. !< @public a flag for "W3_FLD1" -#endif - -#ifdef W3_FLD2 - logical, parameter :: w3_fld2_flag = .true. !< @public a flag for "W3_FLD2" -#else - logical, parameter :: w3_fld2_flag = .false. !< @public a flag for "W3_FLD2" -#endif - -#ifdef W3_IG1 - logical, parameter :: w3_ig1_flag = .true. !< @public a flag for "W3_IG1" -#else - logical, parameter :: w3_ig1_flag = .false. !< @public a flag for "W3_IG1" -#endif - -#ifdef W3_MLIM - logical, parameter :: w3_mlim_flag = .true. !< @public a flag for "W3_MLIM" -#else - logical, parameter :: w3_mlim_flag = .false. !< @public a flag for "W3_MLIM" -#endif - -#ifdef W3_MPI - logical, parameter :: w3_mpi_flag = .true. !< @public a flag for "W3_MPI" -#else - logical, parameter :: w3_mpi_flag = .false. !< @public a flag for "W3_MPI" -#endif - -#ifdef W3_MPIBDI - logical, parameter :: w3_mpibdi_flag = .true. !< @public a flag for "W3_MPIBDI" -#else - logical, parameter :: w3_mpibdi_flag = .false. !< @public a flag for "W3_MPIBDI" -#endif - -#ifdef W3_MPIT - logical, parameter :: w3_mpit_flag = .true. !< @public a flag for "W3_MPIT" -#else - logical, parameter :: w3_mpit_flag = .false. !< @public a flag for "W3_MPIT" -#endif - -#ifdef W3_MPRF - logical, parameter :: w3_mprf_flag = .true. !< @public a flag for "W3_MPRF" -#else - logical, parameter :: w3_mprf_flag = .false. !< @public a flag for "W3_MPRF" -#endif - -#ifdef W3_NCO - logical, parameter :: w3_nco_flag = .true. !< @public a flag for "W3_NCO" -#else - logical, parameter :: w3_nco_flag = .false. !< @public a flag for "W3_NCO" -#endif - -#ifdef W3_NLS - logical, parameter :: w3_nls_flag = .true. !< @public a flag for "W3_NLS" -#else - logical, parameter :: w3_nls_flag = .false. !< @public a flag for "W3_NLS" -#endif - -#ifdef W3_NNT - logical, parameter :: w3_nnt_flag = .true. !< @public a flag for "W3_NNT" -#else - logical, parameter :: w3_nnt_flag = .false. !< @public a flag for "W3_NNT" -#endif - -#ifdef W3_OASIS - logical, parameter :: w3_oasis_flag = .true. !< @public a flag for "W3_OASIS" -#else - logical, parameter :: w3_oasis_flag = .false. !< @public a flag for "W3_OASIS" -#endif - -#ifdef W3_OASACM - logical, parameter :: w3_oasacm_flag = .true. !< @public a flag for "W3_OASACM" -#else - logical, parameter :: w3_oasacm_flag = .false. !< @public a flag for "W3_OASACM" -#endif - -#ifdef W3_OASOCM - logical, parameter :: w3_oasocm_flag = .true. !< @public a flag for "W3_OASOCM" -#else - logical, parameter :: w3_oasocm_flag = .false. !< @public a flag for "W3_OASOCM" -#endif - -#ifdef W3_OASICM - logical, parameter :: w3_oasicm_flag = .true. !< @public a flag for "W3_OASICM" -#else - logical, parameter :: w3_oasicm_flag = .false. !< @public a flag for "W3_OASICM" -#endif - -#ifdef W3_REFRX - logical, parameter :: w3_refrx_flag = .true. !< @public a flag for "W3_REFRX" -#else - logical, parameter :: w3_refrx_flag = .false. !< @public a flag for "W3_REFRX" -#endif - -#ifdef W3_REFT - logical, parameter :: w3_reft_flag = .true. !< @public a flag for "W3_REFT" -#else - logical, parameter :: w3_reft_flag = .false. !< @public a flag for "W3_REFT" -#endif - -#ifdef W3_RTD - logical, parameter :: w3_rtd_flag = .true. !< @public a flag for "W3_RTD" -#else - logical, parameter :: w3_rtd_flag = .false. !< @public a flag for "W3_RTD" -#endif - -#ifdef W3_RWND - logical, parameter :: w3_rwnd_flag = .true. !< @public a flag for "W3_RWND" -#else - logical, parameter :: w3_rwnd_flag = .false. !< @public a flag for "W3_RWND" -#endif - -#ifdef W3_S - logical, parameter :: w3_s_flag = .true. !< @public a flag for "W3_S" -#else - logical, parameter :: w3_s_flag = .false. !< @public a flag for "W3_S" -#endif - -#ifdef W3_SCRIP - logical, parameter :: w3_scrip_flag = .true. !< @public a flag for "W3_SCRIP" -#else - logical, parameter :: w3_scrip_flag = .false. !< @public a flag for "W3_SCRIP" -#endif - -#ifdef W3_SCRIPNC - logical, parameter :: w3_scripnc_flag = .true. !< @public a flag for "W3_SCRIPNC" -#else - logical, parameter :: w3_scripnc_flag = .false. !< @public a flag for "W3_SCRIPNC" -#endif - -#ifdef W3_SEC1 - logical, parameter :: w3_sec1_flag = .true. !< @public a flag for "W3_SEC1" -#else - logical, parameter :: w3_sec1_flag = .false. !< @public a flag for "W3_SEC1" -#endif - -#ifdef W3_SMC - logical, parameter :: w3_smc_flag = .true. !< @public a flag for "W3_SMC" -#else - logical, parameter :: w3_smc_flag = .false. !< @public a flag for "W3_SMC" -#endif - -#ifdef W3_T - logical, parameter :: w3_t_flag = .true. !< @public a flag for "W3_T" -#else - logical, parameter :: w3_t_flag = .false. !< @public a flag for "W3_T" -#endif -#ifdef W3_T0 - logical, parameter :: w3_t0_flag = .true. !< @public a flag for "W3_T0" -#else - logical, parameter :: w3_t0_flag = .false. !< @public a flag for "W3_T0" -#endif - -#ifdef W3_T1 - logical, parameter :: w3_t1_flag = .true. !< @public a flag for "W3_T1" -#else - logical, parameter :: w3_t1_flag = .false. !< @public a flag for "W3_T1" -#endif - -#ifdef W3_T2 - logical, parameter :: w3_t2_flag = .true. !< @public a flag for "W3_T2" -#else - logical, parameter :: w3_t2_flag = .false. !< @public a flag for "W3_T2" -#endif -#ifdef W3_T3 - logical, parameter :: w3_t3_flag = .true. !< @public a flag for "W3_T3" -#else - logical, parameter :: w3_t3_flag = .false. !< @public a flag for "W3_T3" -#endif -#ifdef W3_T4 - logical, parameter :: w3_t4_flag = .true. !< @public a flag for "W3_T4" -#else - logical, parameter :: w3_t4_flag = .false. !< @public a flag for "W3_T4" -#endif -#ifdef W3_T5 - logical, parameter :: w3_t5_flag = .true. !< @public a flag for "W3_T5" -#else - logical, parameter :: w3_t5_flag = .false. !< @public a flag for "W3_T5" -#endif -#ifdef W3_T6 - logical, parameter :: w3_t6_flag = .true. !< @public a flag for "W3_T6" -#else - logical, parameter :: w3_t6_flag = .false. !< @public a flag for "W3_T6" -#endif -#ifdef W3_T7 - logical, parameter :: w3_t7_flag = .true. !< @public a flag for "W3_T7" -#else - logical, parameter :: w3_t7_flag = .false. !< @public a flag for "W3_T7" -#endif -#ifdef W3_T8 - logical, parameter :: w3_t8_flag = .true. !< @public a flag for "W3_T8" -#else - logical, parameter :: w3_t8_flag = .false. !< @public a flag for "W3_T8" -#endif -#ifdef W3_T9 - logical, parameter :: w3_t9_flag = .true. !< @public a flag for "W3_T9" -#else - logical, parameter :: w3_t9_flag = .false. !< @public a flag for "W3_T9" -#endif -#ifdef W3_T38 - logical, parameter :: w3_t38_flag = .true. !< @public a flag for "W3_T38" -#else - logical, parameter :: w3_t38_flag = .false. !< @public a flag for "W3_T38" -#endif -#ifdef W3_TDYN - logical, parameter :: w3_tdyn_flag = .true. !< @public a flag for "W3_TDYN" -#else - logical, parameter :: w3_tdyn_flag = .false. !< @public a flag for "W3_TDYN" -#endif - -#ifdef W3_TIDE - logical, parameter :: w3_tide_flag = .true. !< @public a flag for "W3_TIDE" -#else - logical, parameter :: w3_tide_flag = .false. !< @public a flag for "W3_TIDE" -#endif - -#ifdef W3_TIDET - logical, parameter :: w3_tidet_flag = .true. !< @public a flag for "W3_TIDET" -#else - logical, parameter :: w3_tidet_flag = .false. !< @public a flag for "W3_TIDET" -#endif - -#ifdef W3_TRKNC - logical, parameter :: w3_trknc_flag = .true. !< @public a flag for "W3_TRKNC" -#else - logical, parameter :: w3_trknc_flag = .false. !< @public a flag for "W3_TRKNC" -#endif - -#ifdef W3_UOST - logical, parameter :: w3_uost_flag = .true. !< @public a flag for "W3_UOST" -#else - logical, parameter :: w3_uost_flag = .false. !< @public a flag for "W3_UOST" -#endif - -#ifdef W3_WRST - logical, parameter :: w3_wrst_flag = .true. !< @public a flag for "W3_WRST" -#else - logical, parameter :: w3_wrst_flag = .false. !< @public a flag for "W3_WRST" -#endif - -#ifdef W3_XW0 - logical, parameter :: w3_xw0_flag = .true. !< @public a flag for "W3_XW0" -#else - logical, parameter :: w3_xw0_flag = .false. !< @public a flag for "W3_XW0" -#endif - -#ifdef W3_XW1 - logical, parameter :: w3_xw1_flag = .true. !< @public a flag for "W3_XW1" -#else - logical, parameter :: w3_xw1_flag = .false. !< @public a flag for "W3_XW1" -#endif - -#ifdef W3_CESMCOUPLED - logical, parameter :: w3_cesmcoupled_flag = .true. !< @public a flag for "W3_CESMCOUPLED" -#else - logical, parameter :: w3_cesmcoupled_flag = .false. !< @public a flag for "W3_CESMCOUPLED" -#endif - -#ifdef W3_UWM - logical, parameter :: w3_uwm_flag = .true. !< @public a flag for "W3_UWM" -#else - logical, parameter :: w3_uwm_flag = .false. !< @public a flag for "W3_UWM" -#endif - -#ifdef W3_SBS - logical, parameter :: w3_sbs_flag = .true. !< @public a flag for "W3_SBS" -#else - logical, parameter :: w3_sbs_flag = .false. !< @public a flag for "W3_SBS" -#endif - -#ifdef W3_BT4 - logical, parameter :: w3_bt4_flag = .true. !< @public a flag for "W3_BT4" -#else - logical, parameter :: w3_bt4_flag = .false. !< @public a flag for "W3_BT4" -#endif - -#ifdef W3_WCOR - logical, parameter :: w3_wcor_flag = .true. !< @public a flag for "W3_WCOR" -#else - logical, parameter :: w3_wcor_flag = .false. !< @public a flag for "W3_WCOR" -#endif - -#ifdef W3_SETUP - logical, parameter :: w3_setup_flag = .true. !< @public a flag for "W3_SETUP" -#else - logical, parameter :: w3_setup_flag = .false. !< @public a flag for "W3_SETUP" -#endif - -#ifdef W3_O2A - logical, parameter :: w3_O2a_flag = .true. !< @public a flag for "W3_O2A" -#else - logical, parameter :: w3_O2a_flag = .false. !< @public a flag for "W3_O2A" -#endif - -#ifdef W3_O2B - logical, parameter :: w3_O2b_flag = .true. !< @public a flag for "W3_O2B" -#else - logical, parameter :: w3_O2b_flag = .false. !< @public a flag for "W3_O2B" -#endif -#ifdef W3_O2C - logical, parameter :: w3_O2c_flag = .true. !< @public a flag for "W3_O2C" -#else - logical, parameter :: w3_O2c_flag = .false. !< @public a flag for "W3_O2C" -#endif -#ifdef W3_O7A - logical, parameter :: w3_O7a_flag = .true. !< @public a flag for "W3_O7A" -#else - logical, parameter :: w3_O7a_flag = .false. !< @public a flag for "W3_O7A" -#endif -#ifdef W3_O7B - logical, parameter :: w3_O7b_flag = .true. !< @public a flag for "W3_O7B" -#else - logical, parameter :: w3_O7b_flag = .false. !< @public a flag for "W3_O7B" -#endif -#ifdef W3_01 - logical, parameter :: w3_01_flag = .true. !< @public a flag for "W3_01" -#else - logical, parameter :: w3_01_flag = .false. !< @public a flag for "W3_01" -#endif - - interface print_logmsg - module procedure print_logmsg_1line - module procedure print_logmsg_2line - module procedure print_logmsg_3line - module procedure print_logmsg_4line - end interface print_logmsg - -contains - - !======================================================================== - !> Write a 1 line message if requested - !! - !> @details Writes a one line message - !! - !! @param[in] unum unit number - !! @param[in] msg1 one line message - !! @param[in] lwrite logical to control message writing - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 06-01-2022 - subroutine print_logmsg_1line(unum, msg1, lwrite) - - integer , intent(in) :: unum - character(len=*), intent(in) :: msg1 - logical , intent(in) :: lwrite - - if (.not. lwrite) return - - write(unum,'(a)') trim(msg1) - flush(unum) - - end subroutine print_logmsg_1line - - !======================================================================== - !> Write a 2 line message if requested - !! - !> @details Writes a two line message - !! - !! @param[in] unum unit number - !! @param[in] msg1 first line of message - !! @param[in] msg2 second line of message - !! @param[in] lwrite logical to control message writing - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 06-01-2022 - subroutine print_logmsg_2line(unum, msg1, msg2, lwrite) - - integer , intent(in) :: unum - character(len=*), intent(in) :: msg1 - character(len=*), intent(in) :: msg2 - logical , intent(in) :: lwrite - - if (.not. lwrite) return - - write(unum,'(a)') trim(msg1) - write(unum,'(a)') trim(msg2) - flush(unum) - - end subroutine print_logmsg_2line - - !======================================================================== - !> Write a 3 line message if requested - !! - !> @details Writes a three line message - !! - !! @param[in] unum unit number - !! @param[in] msg1 first line of message - !! @param[in] msg2 second line of message - !! @param[in] msg3 third line of message - !! @param[in] lwrite logical to control message writing - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 06-01-2022 - subroutine print_logmsg_3line(unum, msg1, msg2, msg3, lwrite) - - integer , intent(in) :: unum - character(len=*), intent(in) :: msg1 - character(len=*), intent(in) :: msg2 - character(len=*), intent(in) :: msg3 - logical , intent(in) :: lwrite - - if (.not. lwrite) return - - write(unum,'(a)') trim(msg1) - write(unum,'(a)') trim(msg2) - write(unum,'(a)') trim(msg3) - flush(unum) - - end subroutine print_logmsg_3line - - !======================================================================== - !> Write a 4 line message if requested - !! - !> @details Writes a four line message - !! - !! @param[in] unum unit number - !! @param[in] msg1 first line of message - !! @param[in] msg2 second line of message - !! @param[in] msg3 third line of message - !! @param[in] msg4 forth line of message - !! @param[in] lwrite logical to control message writing - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 06-01-2022 - - subroutine print_logmsg_4line(unum, msg1, msg2, msg3, msg4, lwrite) - - integer , intent(in) :: unum - character(len=*), intent(in) :: msg1 - character(len=*), intent(in) :: msg2 - character(len=*), intent(in) :: msg3 - character(len=*), intent(in) :: msg4 - logical , intent(in) :: lwrite - - if (.not. lwrite) return - - write(unum,'(a)') trim(msg1) - write(unum,'(a)') trim(msg2) - write(unum,'(a)') trim(msg3) - write(unum,'(a)') trim(msg4) - flush(unum) - - end subroutine print_logmsg_4line -end module wav_shr_flags diff --git a/model/src/wav_shr_mod.F90 b/model/src/wav_shr_mod.F90 deleted file mode 100644 index 4f9fe99e2..000000000 --- a/model/src/wav_shr_mod.F90 +++ /dev/null @@ -1,1403 +0,0 @@ -!> @file wav_shr_mod -!! -!> Shared utility routines -!! -!> @details Contains public routines to execute repeated operations -!! -!> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov -!> @date 01-05-2022 -module wav_shr_mod - - use ESMF , only : operator(<), operator(/=), operator(+) - use ESMF , only : operator(-), operator(*) , operator(>=) - use ESMF , only : operator(<=), operator(>), operator(==) - use ESMF , only : ESMF_LOGERR_PASSTHRU, ESMF_LogFoundError, ESMF_LOGMSG_ERROR, ESMF_MAXSTR - use ESMF , only : ESMF_SUCCESS, ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_FAILURE - use ESMF , only : ESMF_State, ESMF_StateGet, ESMF_StateItem_Flag, ESMF_STATEITEM_NOTFOUND - use ESMF , only : ESMF_Field, ESMF_FieldGet - use ESMF , only : ESMF_GridComp, ESMF_GridCompGet, ESMF_GridCompSet - use ESMF , only : ESMF_GeomType_Flag, ESMF_FieldStatus_Flag - use ESMF , only : ESMF_Mesh, ESMF_MeshGet - use ESMF , only : ESMF_GEOMTYPE_MESH, ESMF_GEOMTYPE_GRID, ESMF_FIELDSTATUS_COMPLETE - use ESMF , only : ESMF_Clock, ESMF_ClockCreate, ESMF_ClockGet, ESMF_ClockSet - use ESMF , only : ESMF_ClockPrint, ESMF_ClockAdvance - use ESMF , only : ESMF_Alarm, ESMF_AlarmCreate, ESMF_AlarmGet, ESMF_AlarmSet - use ESMF , only : ESMF_Calendar, ESMF_CALKIND_NOLEAP, ESMF_CALKIND_GREGORIAN - use ESMF , only : ESMF_Time, ESMF_TimeGet, ESMF_TimeSet - use ESMF , only : ESMF_TimeInterval, ESMF_TimeIntervalSet, ESMF_TimeIntervalGet - use ESMF , only : ESMF_VM, ESMF_VMGet, ESMF_VMBroadcast, ESMF_VMGetCurrent - use ESMF , only : ESMF_FieldStatus_Flag, ESMF_FIELDSTATUS_COMPLETE - use NUOPC , only : NUOPC_CompAttributeGet - use NUOPC_Model , only : NUOPC_ModelGet - use wav_kind_mod , only : r8 => shr_kind_r8, i8 => shr_kind_i8, cl=>shr_kind_cl, cs=>shr_kind_cs - use wav_kind_mod , only : i4 => shr_kind_i4 - - implicit none - private - - public :: state_getscalar !< @public obtain a scalar field from a state - public :: state_setscalar !< @public set scalar data from state for a particular name - public :: state_reset !< @public reset field values in a state - public :: state_getfldptr !< @public obtain a pointer to a field in a state - public :: state_fldchk !< @public check whether a field is in a state - public :: state_diagnose !< @public print min,max,sum and size of a field in a state - public :: alarmInit !< @public set up an alarm in a clock - public :: chkerr !< @public check if an error was returned from and ESMF call - public :: ymd2date !< @public convert year,month,day to integer - private :: timeInit !< @public create an ESMF_Time object - private :: field_getfldptr !< @private obtain a pointer to a field - public :: diagnose_mesh !< @public write out info about mesh - public :: write_meshdecomp !< @public write the mesh decomposition to a file - public :: wav_loginit !< @public write the verbose WW3 log header - - interface state_getfldptr - module procedure state_getfldptr_1d - module procedure state_getfldptr_2d - end interface state_getfldptr - - ! used by both CESM and UFS - logical , public :: wav_coupling_to_cice = .false. !< @public flag to specify additional wave export - !! fields for coupling to CICE (TODO: generalize) - integer, parameter , public :: nwav_elev_spectrum = 25 !< the size of the wave spectrum exported if coupling - !! waves to cice6 - integer , public :: dbug_flag = 0 !< @public flag used to produce additional output - logical , public :: unstr_mesh = .false. !< @public flag to specify use of unstructured mesh - character(len=256) , public :: casename = '' !< @public the name pre-prended to an output file - - ! Only used by cesm and optionally by uwm - ! to construct the initial file and used in W3IORSMD - ! if a run is a continue run, then casename is used to construct - ! the restart filename in W3IORSMD - integer , public :: inst_index !< @public number of current instance (ie 1) - character(len=16) , public :: inst_name !< @public fullname of current instance (ie "wav_0001") - character(len=16) , public :: inst_suffix !< @public char string associated with instance - - ! Only used by ufs - logical , public :: merge_import = .false. !< @public logical to specify whether import fields will - !! be merged with a field provided from a file - logical , public :: multigrid = .false. !< @public logical to control whether wave model is run - !! as multigrid - logical , public :: standalone = .false. !< @public logical to control whether wave model is run - !! in standalone mode - read fields from file - - interface ymd2date - module procedure ymd2date_int - module procedure ymd2date_long - end interface ymd2date - - ! Clock and alarm option - character(len=*), private, parameter :: & - optNONE = "none" , & !< alarm option none - optNever = "never" , & !< alarm option never - optNSteps = "nsteps" , & !< alarm option nsteps - optNStep = "nstep" , & !< alarm option nstep - optNSeconds = "nseconds" , & !< alarm option nseconds - optNSecond = "nsecond" , & !< alarm option nsecond - optNMinutes = "nminutes" , & !< alarm option nminutes - optNMinute = "nminute" , & !< alarm option nminute - optNHours = "nhours" , & !< alarm option nhours - optNHour = "nhour" , & !< alarm option nhour - optNDays = "ndays" , & !< alarm option ndays - optNDay = "nday" , & !< alarm option nday - optNMonths = "nmonths" , & !< alarm option nmonths - optNMonth = "nmonth" , & !< alarm option nmonth - optNYears = "nyears" , & !< alarm option nyears - optNYear = "nyear" , & !< alarm option nyear - optMonthly = "monthly" , & !< alarm option monthly - optYearly = "yearly" , & !< alarm option yearly - optDate = "date" , & !< alarm option date - optIfdays0 = "ifdays0" !< alarm option for number of days 0 - - ! Module data - character(len=*), parameter :: u_FILE_u = & !< a character string for an ESMF log message - __FILE__ - - !=============================================================================== -contains - !=============================================================================== - !> Get properties of a mesh - !! - !! @param[in] EMeshIn an ESMF Mesh - !! @param[in] gindex_size the length of the gindex - !! @param[in] mesh_name a name to identify the mesh in the PET log - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 09-12-2022 - subroutine diagnose_mesh(EMeshIn, gindex_size, mesh_name, rc) - - use ESMF , only : ESMF_Mesh, ESMF_LOGMSG_Info - - ! input/output variables - type(ESMF_Mesh) , intent(in) :: EMeshIn - integer , intent(in) :: gindex_size - character(len=*), intent(in) :: mesh_name - integer , intent(out) :: rc - - !local variables - logical :: elementCoordsIsPresent - logical :: elementDistGridIsPresent - logical :: nodalDistGridIsPresent - logical :: elementMaskIsPresent - logical :: nodeMaskIsPresent - character(ESMF_MAXSTR) :: msgString - - integer :: ncnt,ecnt,lb,ub - integer :: nowndn, nownde - integer, allocatable :: nids(:), eids(:), nowners(:) - character(len=*),parameter :: subname = '(wav_shr_mod:mesh_diagnose) ' - !------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - !The Mesh class is distributed by elements. This means that a node must be present on any PET that - !contains an element associated with that node, but not on any other PET (a node can't be on a PET - !without an element "home"). Since a node may be used by two or more elements located on different - !PETS, a node may be duplicated on multiple PETs. When a node is duplicated in this manner, one and - !only one of the PETs that contain the node must "own" the node. The user sets this ownership when they - !define the nodes during Mesh creation. When a Field is created on a Mesh (i.e. on the Mesh nodes), - !on each PET the Field is only created on the nodes which are owned by that PET. This means that the - !size of the Field memory on the PET can be smaller than the number of nodes used to create the Mesh - !on that PET. - - !The node id is a unique (across all PETs) integer attached to the particular node. It is used to - !indicate which nodes are the same when connecting together pieces of the Mesh on different processors. - !The node owner indicates which PET is in charge of the node - - !The element id is a unique (across all PETs) integer attached to the particular element. The element - !connectivity indicates which nodes are to be connected together to form the element. The entries - !in this list are NOT the global ids of the nodes, but are indices into the PET local lists of node info used - !in the Mesh Create. - - call ESMF_MeshGet(EMeshIn, nodeCount=ncnt, elementCount=ecnt, & - numOwnedElements=nownde, numOwnedNodes=nowndn, & - elementCoordsIsPresent=elementCoordsIsPresent, & - elementDistGridIsPresent=elementDistGridIsPresent,& - nodalDistGridIsPresent=nodalDistGridIsPresent, & - elementMaskIsPresent=elementMaskIsPresent, & - nodeMaskIsPresent=nodeMaskIsPresent, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - write(msgString,'(5(a,i6))')trim(mesh_name)//' Info: Node Cnt = ',ncnt,' Elem Cnt = ',ecnt, & - ' num Owned Elms = ',nownde,' num Owned Nodes = ',nowndn,& - ' Gindex size = ',gindex_size - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - - allocate(nids(ncnt)) - allocate(nowners(ncnt)) - allocate(eids(ecnt)) - - if (elementDistGridIsPresent) call ESMF_LogWrite('element Distgrid is Present', ESMF_LOGMSG_INFO) - if (nodalDistGridIsPresent) call ESMF_LogWrite('nodal Distgrid is Present', ESMF_LOGMSG_INFO) - if (elementMaskIsPresent) call ESMF_LogWrite('element Mask is Present', ESMF_LOGMSG_INFO) - if (nodeMaskIsPresent) call ESMF_LogWrite('node Mask is Present', ESMF_LOGMSG_INFO) - if (elementCoordsIsPresent) call ESMF_LogWrite('element Coords is Present', ESMF_LOGMSG_INFO) - - call ESMF_MeshGet(EMeshIn, nodeIds=nids, nodeOwners=nowners, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - lb = lbound(nids,1); ub = ubound(nids,1) - write(msgString,'(a,12i8)')trim(mesh_name)//' : NodeIds(lb:lb+9) = ',lb,ub,nids(lb:lb+9) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - write(msgString,'(a,12i8)')trim(mesh_name)//' : NodeOwners(lb:lb+9) = ',lb,ub,nowners(lb:lb+9) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - write(msgString,'(a,12i8)')trim(mesh_name)//' : NodeIds(ub-9:ub) = ',lb,ub,nids(ub-9:ub) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - write(msgString,'(a,12i8)')trim(mesh_name)//' : NodeOwners(ub-9:ub) = ',lb,ub,nowners(ub-9:ub) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - write(msgString,'(a,12i8)')trim(mesh_name)//' : NodeOwners min,max = ',minval(nowners),maxval(nowners) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - - ! some methods not avail when using a dual mesh - if (.not. unstr_mesh) then - call ESMF_MeshGet(EMeshIn, elementIds=eids, rc=rc) - lb = lbound(eids,1); ub = ubound(eids,1) - write(msgString,'(a,12i8)')trim(mesh_name)//' : ElemIds(lb:lb+9) = ',lb,ub,eids(lb:lb+9) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - write(msgString,'(a,12i8)')trim(mesh_name)//' : ElemIds(ub-9:ub) = ',lb,ub,eids(ub-9:ub) - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - end if - deallocate(nids) - deallocate(eids) - deallocate(nowners) - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - - end subroutine diagnose_mesh - !=============================================================================== - !> Write the mesh decomposition to a file - !! - !! @param[in] EMeshIn an ESMF Mesh - !! @param[in] mesh_name a name to identify the mesh - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 09-12-2022 - subroutine write_meshdecomp(EMeshIn, mesh_name, rc) - - use ESMF , only : ESMF_Mesh, ESMF_DistGrid, ESMF_Field, ESMF_FieldBundle, ESMF_FieldBundleAdd - use ESMF , only : ESMF_DistGridGet, ESMF_FieldBundleCreate, ESMF_FieldCreate, ESMF_FieldBundleGet - use ESMF , only : ESMF_MESHLOC_ELEMENT, ESMF_TYPEKIND_R8, ESMF_TYPEKIND_I4, ESMF_LOGMSG_Info - use ESMF , only : ESMF_FieldBundleWrite, ESMF_FieldBundleDestroy - - use w3odatmd , only : iaproc - - ! input/output variables - type(ESMF_Mesh) , intent(in) :: EMeshIn - character(len=*), intent(in) :: mesh_name - integer , intent(out) :: rc - - ! local variables - type(ESMF_FieldBundle) :: FBTemp - type(ESMF_Field) :: lfield - type(ESMF_DistGrid) :: distgrid - type(ESMF_Field) :: doffield - character(len=6), dimension(4) :: lfieldlist - integer :: i,ndims,nelements - real(r8), pointer :: fldptr1d(:) - integer(i4), allocatable :: dof(:) - integer(i4), pointer :: dofptr(:) - real(r8), pointer :: ownedElemCoords(:), ownedElemCoords_x(:), ownedElemCoords_y(:) - character(len=*),parameter :: subname = '(wav_shr_mod:write_meshdecomp) ' - !------------------------------------------------------- - - rc = ESMF_SUCCESS - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' called', ESMF_LOGMSG_INFO) - - ! create a temporary FB to write the fields - FBtemp = ESMF_FieldBundleCreate(rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - call ESMF_MeshGet(EMeshIn, spatialDim=ndims, numOwnedElements=nelements, elementDistgrid=distgrid, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - lfieldlist = (/'dof ', 'coordx', 'coordy', 'decomp'/) - ! index array - doffield = ESMF_FieldCreate(EMeshIn, ESMF_TYPEKIND_I4, name=trim(lfieldlist(1)), & - meshloc=ESMF_MESHLOC_ELEMENT, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldBundleAdd(FBTemp, (/doffield/), rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - ! coords and decomp field - do i = 2,size(lfieldlist) - lfield = ESMF_FieldCreate(EMeshIn, ESMF_TYPEKIND_R8, name=trim(lfieldlist(i)), & - meshloc=ESMF_MESHLOC_ELEMENT, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldBundleAdd(FBTemp, (/lfield/), rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - end do - - ! Set element coordinates - allocate(ownedElemCoords(ndims*nelements)) - allocate(ownedElemCoords_x(ndims*nelements/2)) - allocate(ownedElemCoords_y(ndims*nelements/2)) - call ESMF_MeshGet(EmeshIn, ownedElemCoords=ownedElemCoords, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - ownedElemCoords_x(1:nelements) = ownedElemCoords(1::2) - ownedElemCoords_y(1:nelements) = ownedElemCoords(2::2) - allocate(dof(1:nelements)) - call ESMF_DistGridGet(distgrid, localDE=0, seqIndexList=dof, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldBundleGet(FBtemp, fieldName='dof', field=doffield, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldGet(doffield, farrayPtr=dofptr, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - dofptr(:) = dof(:) - - call ESMF_FieldBundleGet(FBtemp, fieldName='coordx', field=lfield, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldGet(lfield, farrayPtr=fldptr1d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - fldptr1d(:) = ownedElemCoords_x(:) - - call ESMF_FieldBundleGet(FBtemp, fieldName='coordy', field=lfield, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldGet(lfield, farrayPtr=fldptr1d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - fldptr1d(:) = ownedElemCoords_y(:) - - call ESMF_FieldBundleGet(FBtemp, fieldName='decomp', field=lfield, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldGet(lfield, farrayPtr=fldptr1d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - do i = 1,ndims*nelements/2 - fldptr1d(i) = iaproc - end do - call ESMF_FieldBundleWrite(FBtemp, filename=trim(mesh_name)//'.decomp.nc', overwrite=.true., rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - deallocate(ownedElemCoords) - deallocate(ownedElemCoords_x) - deallocate(ownedElemCoords_y) - deallocate(dof) - - call ESMF_FieldBundleDestroy(FBtemp, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - if (dbug_flag > 5) call ESMF_LogWrite(trim(subname)//' done', ESMF_LOGMSG_INFO) - end subroutine write_meshdecomp - - !=============================================================================== - !> Get scalar data from a state - !! - !> @details Obtain the field flds_scalar_name from a State and broadcast and - !! it to all PEs - !! - !! @param[in] State an ESMF_State - !! @param[in] scalar_value the value of the scalar - !! @param[in] scalar_id the identity of the scalar - !! @param[in] flds_scalar_name the name of the scalar - !! @param[in] flds_scalar_num the number of scalars - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine state_getscalar(state, scalar_id, scalar_value, flds_scalar_name, flds_scalar_num, rc) - - ! ---------------------------------------------- - ! Get scalar data from State for a particular name and broadcast it to all other pets - ! ---------------------------------------------- - - ! input/output variables - type(ESMF_State), intent(in) :: state - integer, intent(in) :: scalar_id - real(r8), intent(out) :: scalar_value - character(len=*), intent(in) :: flds_scalar_name - integer, intent(in) :: flds_scalar_num - integer, intent(inout) :: rc - - ! local variables - integer :: mytask, ierr, len - type(ESMF_VM) :: vm - type(ESMF_Field) :: field - real(r8), pointer :: farrayptr(:,:) - real(r8) :: tmp(1) - character(len=*), parameter :: subname = ' (wav_shr_mod:state_getscalar) ' - ! ---------------------------------------------- - - rc = ESMF_SUCCESS - - call ESMF_VMGetCurrent(vm, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - call ESMF_VMGet(vm, localPet=mytask, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - call ESMF_StateGet(State, itemName=trim(flds_scalar_name), field=field, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - if (mytask == 0) then - call ESMF_FieldGet(field, farrayPtr = farrayptr, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - if (scalar_id < 0 .or. scalar_id > flds_scalar_num) then - call ESMF_LogWrite(trim(subname)//": ERROR in scalar_id", ESMF_LOGMSG_INFO, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return - endif - tmp(:) = farrayptr(scalar_id,:) - endif - call ESMF_VMBroadCast(vm, tmp, 1, 0, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - scalar_value = tmp(1) - - end subroutine state_getscalar - - !================================================================================ - !> Set scalar data into a state - !! - !! Called by fldlist_realize to set the required scalar data into a state. The - !! scalar_value will be set into a field with name flds_scalar_name. The scalar_id - !! identifies which dimension in the scalar field is given by the scalar_value. The - !! number of scalars is used to ensure that the scalar_id is within the bounds of - !! the scalar field - !! - !! @param[inout] State an ESMF_State - !! @param[in] scalar_value the value of the scalar - !! @param[in] scalar_id the identity of the scalar - !! @param[in] flds_scalar_name the name of the scalar - !! @param[in] flds_scalar_num the number of scalars - !! @param[inout] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine state_setscalar(scalar_value, scalar_id, State, flds_scalar_name, flds_scalar_num, rc) - - ! ---------------------------------------------- - ! Set scalar data from State for a particular name - ! ---------------------------------------------- - - ! input/output arguments - real(r8), intent(in) :: scalar_value - integer, intent(in) :: scalar_id - type(ESMF_State), intent(inout) :: State - character(len=*), intent(in) :: flds_scalar_name - integer, intent(in) :: flds_scalar_num - integer, intent(inout) :: rc - - ! local variables - integer :: mytask - type(ESMF_Field) :: lfield - type(ESMF_VM) :: vm - real(r8), pointer :: farrayptr(:,:) - character(len=*), parameter :: subname = ' (wav_shr_mod:state_setscalar) ' - ! ---------------------------------------------- - - rc = ESMF_SUCCESS - - call ESMF_VMGetCurrent(vm, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - call ESMF_VMGet(vm, localPet=mytask, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - call ESMF_StateGet(State, itemName=trim(flds_scalar_name), field=lfield, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - if (mytask == 0) then - call ESMF_FieldGet(lfield, farrayPtr = farrayptr, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - if (scalar_id < 0 .or. scalar_id > flds_scalar_num) then - call ESMF_LogWrite(trim(subname)//": ERROR in scalar_id", ESMF_LOGMSG_INFO) - rc = ESMF_FAILURE - return - endif - farrayptr(scalar_id,1) = scalar_value - endif - - end subroutine state_setscalar - - !=============================================================================== - !> Reset all fields in a state to a value - !! - !! @param[inout] State an ESMF_State - !! @param[in] reset_value the reset value - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine state_reset(State, reset_value, rc) - - ! ---------------------------------------------- - ! Set all fields to value in State to value - ! ---------------------------------------------- - - ! intput/output variables - type(ESMF_State) , intent(inout) :: State - real(R8) , intent(in) :: reset_value - integer , intent(out) :: rc - - ! local variables - integer :: i,j,n - type(ESMF_Field) :: lfield - type(ESMF_FieldStatus_Flag) :: lstatus - integer :: fieldCount - integer :: lrank - character(ESMF_MAXSTR), allocatable :: lfieldnamelist(:) - real(R8), pointer :: fldptr1(:) - real(R8), pointer :: fldptr2(:,:) - character(len=*), parameter :: subname = ' (wav_shr_mod:state_reset) ' - ! ---------------------------------------------- - - rc = ESMF_SUCCESS - - call ESMF_StateGet(State, itemCount=fieldCount, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - allocate(lfieldnamelist(fieldCount)) - call ESMF_StateGet(State, itemNameList=lfieldnamelist, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - - do n = 1, fieldCount - call ESMF_StateGet(State, itemName=trim(lfieldnamelist(n)), field=lfield, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_FieldGet(lfield, status=lstatus, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (lstatus == ESMF_FIELDSTATUS_COMPLETE) then - call field_getfldptr(lfield, fldptr1=fldptr1, fldptr2=fldptr2, rank=lrank, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (lrank == 0) then - ! no local data - elseif (lrank == 1) then - fldptr1 = reset_value - elseif (lrank == 2) then - fldptr2 = reset_value - else - call ESMF_LogWrite(trim(subname)//": ERROR in rank "//trim(lfieldnamelist(n)), ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - endif - endif - enddo - - deallocate(lfieldnamelist) - - end subroutine state_reset - - !=============================================================================== - !> Obtain a 1-D pointer to a field in a state - !! - !! @param[in] State an ESMF_State - !! @param[in] fldname the name of an ESMF field - !! @param[inout] fldptr a 1-d pointer to an ESMF field - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine state_getfldptr_1d(State, fldname, fldptr, rc) - ! ---------------------------------------------- - ! Get pointer to a state field - ! ---------------------------------------------- - - ! input/output variables - type(ESMF_State) , intent(in) :: State - character(len=*) , intent(in) :: fldname - real(R8) , pointer , intent(inout) :: fldptr(:) - integer, optional , intent(out) :: rc - - ! local variables - type(ESMF_Field) :: lfield - type(ESMF_FieldStatus_Flag) :: status - character(len=*),parameter :: subname='(wav_import_export:state_getfldptr_1d)' - ! ---------------------------------------------- - - rc = ESMF_SUCCESS - - call ESMF_StateGet(State, itemName=trim(fldname), field=lfield, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_FieldGet(lfield, status=status, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (status /= ESMF_FIELDSTATUS_COMPLETE) then - call ESMF_LogWrite(trim(subname)//": ERROR data not allocated ", ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - else - call ESMF_FieldGet(lfield, farrayPtr=fldptr, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - - end subroutine state_getfldptr_1d - - !=============================================================================== - !> Obtain a 2-D pointer to a field in a state - !! - !! @param[in] State an ESMF_State - !! @param[in] fldname the name of an ESMF field - !! @param[inout] fldptr a 2-d pointer to an ESMF field - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine state_getfldptr_2d(State, fldname, fldptr, rc) - ! ---------------------------------------------- - ! Get pointer to a state field - ! ---------------------------------------------- - - ! input/output variables - type(ESMF_State) , intent(in) :: State - character(len=*) , intent(in) :: fldname - real(R8) , pointer , intent(inout) :: fldptr(:,:) - integer , optional , intent(out) :: rc - - ! local variables - type(ESMF_Field) :: lfield - type(ESMF_FieldStatus_Flag) :: status - character(len=*),parameter :: subname='(wav_import_export:state_getfldptr_2d)' - ! ---------------------------------------------- - - rc = ESMF_SUCCESS - - call ESMF_StateGet(State, itemName=trim(fldname), field=lfield, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - call ESMF_FieldGet(lfield, status=status, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (status /= ESMF_FIELDSTATUS_COMPLETE) then - call ESMF_LogWrite(trim(subname)//": ERROR data not allocated ", ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - return - else - call ESMF_FieldGet(lfield, farrayPtr=fldptr, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - end subroutine state_getfldptr_2d - - !=============================================================================== - !> Return true if a field is in a state - !! - !! @param[in] State an ESMF_State - !! @param[in] fldname the name of an ESMF field - !! @return state_fldchk logical indicating a field is present in a state - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - logical function state_fldchk(State, fldname) - ! ---------------------------------------------- - ! Determine if field is in state - ! ---------------------------------------------- - - ! input/output variables - type(ESMF_State) , intent(in) :: State - character(len=*) , intent(in) :: fldname - - ! local variables - type(ESMF_StateItem_Flag) :: itemType - ! ---------------------------------------------- - - call ESMF_StateGet(State, trim(fldname), itemType) - State_FldChk = (itemType /= ESMF_STATEITEM_NOTFOUND) - - end function state_fldchk - - !=============================================================================== - !> Print minimum, maximum, sum and size for a field in a state - !! - !! @param[in] State an ESMF_State - !! @param[in] string a string for denoting the location of the call - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine state_diagnose(State, string, rc) - - ! ---------------------------------------------- - ! Diagnose status of State - ! ---------------------------------------------- - - type(ESMF_State), intent(in) :: state - character(len=*), intent(in) :: string - integer , intent(out) :: rc - - ! local variables - integer :: i,j,n - type(ESMf_Field) :: lfield - integer :: fieldCount, lrank - character(ESMF_MAXSTR) ,pointer :: lfieldnamelist(:) - real(r8), pointer :: dataPtr1d(:) - real(r8), pointer :: dataPtr2d(:,:) - character(len=ESMF_MAXSTR) :: msgString - character(len=*), parameter :: subname = ' (wav_shr_mod:state_diagnose) ' - ! ---------------------------------------------- - - - call ESMF_StateGet(state, itemCount=fieldCount, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - allocate(lfieldnamelist(fieldCount)) - - call ESMF_StateGet(state, itemNameList=lfieldnamelist, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - do n = 1, fieldCount - - call ESMF_StateGet(state, itemName=lfieldnamelist(n), field=lfield, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - call field_getfldptr(lfield, fldptr1=dataPtr1d, fldptr2=dataPtr2d, rank=lrank, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - if (lrank == 0) then - ! no local data - elseif (lrank == 1) then - if (size(dataPtr1d) > 0) then - write(msgString,'(A,3g14.7,i8)') trim(string)//': '//trim(lfieldnamelist(n))//' ', & - minval(dataPtr1d), maxval(dataPtr1d), sum(dataPtr1d), size(dataPtr1d) - else - write(msgString,'(A,a)') trim(string)//': '//trim(lfieldnamelist(n))," no data" - endif - elseif (lrank == 2) then - if (size(dataPtr2d) > 0) then - write(msgString,'(A,3g14.7,i8)') trim(string)//': '//trim(lfieldnamelist(n))//' ', & - minval(dataPtr2d), maxval(dataPtr2d), sum(dataPtr2d), size(dataPtr2d) - else - write(msgString,'(A,a)') trim(string)//': '//trim(lfieldnamelist(n))," no data" - endif - else - call ESMF_LogWrite(trim(subname)//": ERROR rank not supported ", ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - endif - call ESMF_LogWrite(trim(msgString), ESMF_LOGMSG_INFO) - enddo - - deallocate(lfieldnamelist) - - end subroutine state_diagnose - - !=============================================================================== - !> Obtain a 1 or 2-D pointer to a field - !! - !! @param[in] field an ESMF_Field - !! @param[inout] fldptr1 a 1-d pointer to an ESMF field - !! @param[inout] fldptr2 a 2-d pointer to an ESMF field - !! @param[out] rank the field rank - !! @param[in] abort an optional flag to override the default abort value - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine field_getfldptr(field, fldptr1, fldptr2, rank, abort, rc) - - ! ---------------------------------------------- - ! for a field, determine rank and return fldptr1 or fldptr2 - ! abort is true by default and will abort if fldptr is not yet allocated in field - ! rank returns 0, 1, or 2. 0 means fldptr not allocated and abort=false - ! ---------------------------------------------- - - ! input/output variables - type(ESMF_Field) , intent(in) :: field - real(r8), pointer , intent(inout), optional :: fldptr1(:) - real(r8), pointer , intent(inout), optional :: fldptr2(:,:) - integer , intent(out) , optional :: rank - logical , intent(in) , optional :: abort - integer , intent(out) , optional :: rc - - ! local variables - type(ESMF_GeomType_Flag) :: geomtype - type(ESMF_FieldStatus_Flag) :: status - type(ESMF_Mesh) :: lmesh - integer :: lrank, nnodes, nelements - logical :: labort - character(len=*), parameter :: subname = ' (wav_shr_mod:field_getfldptr) ' - ! ---------------------------------------------- - - if (.not.present(rc)) then - call ESMF_LogWrite(trim(subname)//": ERROR rc not present ", & - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - - rc = ESMF_SUCCESS - - labort = .true. - if (present(abort)) then - labort = abort - endif - lrank = -99 - - call ESMF_FieldGet(field, status=status, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - if (status /= ESMF_FIELDSTATUS_COMPLETE) then - lrank = 0 - if (labort) then - call ESMF_LogWrite(trim(subname)//": ERROR data not allocated ", ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - else - call ESMF_LogWrite(trim(subname)//": WARNING data not allocated ", ESMF_LOGMSG_INFO) - endif - else - - call ESMF_FieldGet(field, geomtype=geomtype, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - if (geomtype == ESMF_GEOMTYPE_GRID) then - call ESMF_FieldGet(field, rank=lrank, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - elseif (geomtype == ESMF_GEOMTYPE_MESH) then - call ESMF_FieldGet(field, rank=lrank, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldGet(field, mesh=lmesh, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_MeshGet(lmesh, numOwnedNodes=nnodes, numOwnedElements=nelements, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - if (nnodes == 0 .and. nelements == 0) lrank = 0 - else - call ESMF_LogWrite(trim(subname)//": ERROR geomtype not supported ", ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - endif ! geomtype - - if (lrank == 0) then - call ESMF_LogWrite(trim(subname)//": no local nodes or elements ", & - ESMF_LOGMSG_INFO) - elseif (lrank == 1) then - if (.not.present(fldptr1)) then - call ESMF_LogWrite(trim(subname)//": ERROR missing rank=1 array ", & - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - call ESMF_FieldGet(field, farrayPtr=fldptr1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - elseif (lrank == 2) then - if (.not.present(fldptr2)) then - call ESMF_LogWrite(trim(subname)//": ERROR missing rank=2 array ", & - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - call ESMF_FieldGet(field, farrayPtr=fldptr2, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - else - call ESMF_LogWrite(trim(subname)//": ERROR in rank ", & - ESMF_LOGMSG_ERROR, line=__LINE__, file=u_FILE_u) - rc = ESMF_FAILURE - return - endif - - endif ! status - - if (present(rank)) then - rank = lrank - endif - - end subroutine field_getfldptr - - !=============================================================================== - !> Set up an alarm in a clock - !! - !> @details Create an ESMF_Alarm according to the desired frequency, where the - !! frequency is relative to a time frequency of seconds, days, hours etc. - !! - !! @param[inout] clock an ESMF_Clock - !! @param[inout] alarm an ESMF_Alarm - !! @param[in] option the alarm option (day,hour etc) - !! @param[in] opt_n the alarm frequency - !! @param[in] opt_ymd the YMD, required for alarm_option when option is - !! date - !! @param[in] opt_tod the time-of-day in seconds - !! @param[in] Reftime initial guess of next alarm time - !! @param[in] alarmname the alarm name - !! @param[inout] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine alarmInit( clock, alarm, option, & - opt_n, opt_ymd, opt_tod, RefTime, alarmname, rc) - - ! Setup an alarm in a clock - ! Notes: The ringtime sent to AlarmCreate MUST be the next alarm - ! time. If you send an arbitrary but proper ringtime from the - ! past and the ring interval, the alarm will always go off on the - ! next clock advance and this will cause serious problems. Even - ! if it makes sense to initialize an alarm with some reference - ! time and the alarm interval, that reference time has to be - ! advance forward to be >= the current time. In the logic below - ! we set an appropriate "NextAlarm" and then we make sure to - ! advance it properly based on the ring interval. - - ! input/output variables - type(ESMF_Clock) , intent(inout) :: clock ! clock - type(ESMF_Alarm) , intent(inout) :: alarm ! alarm - character(len=*) , intent(in) :: option ! alarm option - integer , optional , intent(in) :: opt_n ! alarm freq - integer , optional , intent(in) :: opt_ymd ! alarm ymd - integer , optional , intent(in) :: opt_tod ! alarm tod (sec) - type(ESMF_Time) , optional , intent(in) :: RefTime ! ref time - character(len=*) , optional , intent(in) :: alarmname ! alarm name - integer , intent(inout) :: rc ! Return code - - ! local variables - type(ESMF_Calendar) :: cal ! calendar - integer :: lymd ! local ymd - integer :: ltod ! local tod - integer :: cyy,cmm,cdd,csec ! time info - character(len=64) :: lalarmname ! local alarm name - logical :: update_nextalarm ! update next alarm - type(ESMF_Time) :: CurrTime ! Current Time - type(ESMF_Time) :: NextAlarm ! Next restart alarm time - type(ESMF_TimeInterval) :: AlarmInterval ! Alarm interval - integer :: sec - - character(len=*), parameter :: subname = ' (wav_shr_mod:set_alarmInit) ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - lalarmname = 'alarm_unknown' - if (present(alarmname)) lalarmname = trim(alarmname) - ltod = 0 - if (present(opt_tod)) ltod = opt_tod - lymd = -1 - if (present(opt_ymd)) lymd = opt_ymd - - call ESMF_ClockGet(clock, CurrTime=CurrTime, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - call ESMF_TimeGet(CurrTime, yy=cyy, mm=cmm, dd=cdd, s=csec, rc=rc ) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - ! initial guess of next alarm, this will be updated below - if (present(RefTime)) then - NextAlarm = RefTime - else - NextAlarm = CurrTime - endif - - ! Determine calendar - call ESMF_ClockGet(clock, calendar=cal) - - ! Determine inputs for call to create alarm - selectcase (trim(option)) - - case (optNONE) - call ESMF_TimeIntervalSet(AlarmInterval, yy=9999, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeSet( NextAlarm, yy=9999, mm=12, dd=1, s=0, calendar=cal, rc=rc ) - if (chkerr(rc,__LINE__,u_FILE_u)) return - update_nextalarm = .false. - - case (optNever) - call ESMF_TimeIntervalSet(AlarmInterval, yy=9999, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeSet( NextAlarm, yy=9999, mm=12, dd=1, s=0, calendar=cal, rc=rc ) - if (chkerr(rc,__LINE__,u_FILE_u)) return - update_nextalarm = .false. - - case (optDate) - if (.not. present(opt_ymd)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_ymd', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (lymd < 0 .or. ltod < 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//'opt_ymd, opt_tod invalid', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, yy=9999, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call timeInit(NextAlarm, lymd, cal, ltod, rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - update_nextalarm = .false. - - case (optIfdays0) - if (.not. present(opt_ymd)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_ymd', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, mm=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeSet( NextAlarm, yy=cyy, mm=cmm, dd=opt_n, s=0, calendar=cal, rc=rc ) - if (chkerr(rc,__LINE__,u_FILE_u)) return - update_nextalarm = .true. - - case (optNSteps) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_ClockGet(clock, TimeStep=AlarmInterval, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNStep) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_ClockGet(clock, TimeStep=AlarmInterval, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNSeconds) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, s=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNSecond) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, s=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNMinutes) - call ESMF_TimeIntervalSet(AlarmInterval, s=60, rc=rc) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNMinute) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, s=60, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNHours) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, s=3600, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNHour) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, s=3600, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNDays) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, d=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNDay) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, d=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNMonths) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, mm=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNMonth) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, mm=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optMonthly) - call ESMF_TimeIntervalSet(AlarmInterval, mm=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeSet( NextAlarm, yy=cyy, mm=cmm, dd=1, s=0, calendar=cal, rc=rc ) - if (chkerr(rc,__LINE__,u_FILE_u)) return - update_nextalarm = .true. - - case (optNYears) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, yy=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optNYear) - if (.not.present(opt_n)) then - call ESMF_LogWrite(trim(subname)//trim(option)//' requires opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - if (opt_n <= 0) then - call ESMF_LogWrite(trim(subname)//trim(option)//' invalid opt_n', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - call ESMF_TimeIntervalSet(AlarmInterval, yy=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - AlarmInterval = AlarmInterval * opt_n - update_nextalarm = .true. - - case (optYearly) - call ESMF_TimeIntervalSet(AlarmInterval, yy=1, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeSet( NextAlarm, yy=cyy, mm=1, dd=1, s=0, calendar=cal, rc=rc ) - if (chkerr(rc,__LINE__,u_FILE_u)) return - update_nextalarm = .true. - - case default - call ESMF_LogWrite(trim(subname)//'unknown option '//trim(option), & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - - end select - - ! -------------------------------------------------------------------------------- - ! --- AlarmInterval and NextAlarm should be set --- - ! -------------------------------------------------------------------------------- - - ! --- advance Next Alarm so it won't ring on first timestep for - ! --- most options above. go back one alarminterval just to be careful - - if (update_nextalarm) then - NextAlarm = NextAlarm - AlarmInterval - do while (NextAlarm <= CurrTime) - NextAlarm = NextAlarm + AlarmInterval - enddo - endif - - alarm = ESMF_AlarmCreate( name=lalarmname, clock=clock, ringTime=NextAlarm, & - ringInterval=AlarmInterval, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - end subroutine alarmInit - - !=============================================================================== - !> Create an ESMF_Time object - !! - !> @details Create a ESMF_Time corresponding to a input time YYYYMMMDD and - !! time of day in seconds - !! - !! @param[inout] Time an ESMF_Time object - !! @param[in] ymd year, month, day YYYYMMDD - !! @param[in] cal an ESMF_Calendar - !! @param[in] tod time of day in secons - !! @param[out] rc a return code - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine timeInit( Time, ymd, cal, tod, rc) - - ! Create the ESMF_Time object corresponding to the given input time, - ! given in YMD (Year Month Day) and TOD (Time-of-day) format. - ! Set the time by an integer as YYYYMMDD and integer seconds in the day - - ! input/output parameters: - type(ESMF_Time) , intent(inout) :: Time ! ESMF time - integer , intent(in) :: ymd ! year, month, day YYYYMMDD - type(ESMF_Calendar) , intent(in) :: cal ! ESMF calendar - integer , intent(in) :: tod ! time of day in seconds - integer , intent(out) :: rc - - ! local variables - integer :: year, mon, day ! year, month, day as integers - integer :: tdate ! temporary date - integer :: date ! coded-date (yyyymmdd) - integer, parameter :: SecPerDay = 86400 ! Seconds per day - character(len=*), parameter :: subname = ' (wav_shr_mod:timeInit) ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - if ( (ymd < 0) .or. (tod < 0) .or. (tod > SecPerDay) )then - call ESMF_LogWrite(trim(subname)//'ERROR yymmdd is a negative number or time-of-day out of bounds', & - ESMF_LOGMSG_INFO, rc=rc) - rc = ESMF_FAILURE - end if - - tdate = abs(date) - year = int(tdate/10000) - if (date < 0) year = -year - mon = int( mod(tdate,10000)/ 100) - day = mod(tdate, 100) - - call ESMF_TimeSet( Time, yy=year, mm=mon, dd=day, s=tod, calendar=cal, rc=rc ) - if (chkerr(rc,__LINE__,u_FILE_u)) return - - end subroutine timeInit - - !=============================================================================== - !> Convert year, month, day to integer*4 coded-date - !! - !! @param[in] year calendar year - !! @param[in] month calendary month - !! @param[in] day calendar day - !! @param[out] date calendar date yyyymmmdd - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine ymd2date_int(year,month,day,date) - ! Converts year, month, day to coded-date - - ! input/output variables - integer,intent(in ) :: year,month,day ! calendar year,month,day - integer,intent(out) :: date ! coded (yyyymmdd) calendar date - !--------------------------------------- - - ! NOTE: this calendar has a year zero (but no day or month zero) - date = abs(year)*10000 + month*100 + day ! coded calendar date - if (year < 0) date = -date - end subroutine ymd2date_int - - !=============================================================================== - !> Converts year, month, day to integer*8 coded-date - !! - !! @param[in] year calendar year - !! @param[in] month calendary month - !! @param[in] day calendar day - !! @param[out] date calendar date yyyymmmdd - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - subroutine ymd2date_long(year,month,day,date) - ! Converts year, month, day to coded-date - - ! input/output variables - integer ,intent(in ) :: year,month,day ! calendar year,month,day - integer(I8),intent(out) :: date ! coded ([yy]yyyymmdd) calendar date - !--------------------------------------- - - ! NOTE: this calendar has a year zero (but no day or month zero) - date = abs(year)*10000_I8 + month*100 + day ! coded calendar date - if (year < 0) date = -date - end subroutine ymd2date_long - - !=============================================================================== - !> Write the verbose WW3 log header - !! - !! @param[in] stdout the logfile unit on the root task - !! - !> @author Denise.Worthen@noaa.gov - !> @date 09-14-2024 - - subroutine wav_loginit(stdout) - - integer, intent(in) :: stdout - - write(stdout,984) -984 format (// & - 37x,'| input | output |'/ & - 37x,'|-----------------------|------------------|'/ & - 2x,' step | pass | date time | b w l c t r i i1 i5 d | g p t r b f c r2 |'/ & - 2x,'--------|------|---------------------|-----------------------|------------------|'/ & - 2x,'--------+------+---------------------+---------------------------+--------------+') - - end subroutine wav_loginit - - !=============================================================================== - !> Return a logical true if ESMF_LogFoundError detects an error - !! - !! @param[in] rc return code - !! @param[in] line source code line number - !! @param[in] file user provided source file name - !! @return chkerr logical indicating an error was found - !! - !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov - !> @date 01-05-2022 - logical function chkerr(rc, line, file) - - integer, intent(in) :: rc - integer, intent(in) :: line - character(len=*), intent(in) :: file - - integer :: lrc - - chkerr = .false. - lrc = rc - if (ESMF_LogFoundError(rcToCheck=lrc, msg=ESMF_LOGERR_PASSTHRU, line=line, file=file)) then - chkerr = .true. - endif - end function chkerr - -end module wav_shr_mod diff --git a/model/src/wav_wrapper_mod.F90 b/model/src/wav_wrapper_mod.F90 deleted file mode 100644 index dd2465829..000000000 --- a/model/src/wav_wrapper_mod.F90 +++ /dev/null @@ -1,119 +0,0 @@ -!> @file wav_wrapper_mod -!! -!> A wrapper module for log functionality in UFS -!! -!> @details Contains public logging routines for UFS and -!! stub routines for CESM -!! -!> Denise.Worthen@noaa.gov -!> @date 01-08-2024 -module wav_wrapper_mod - - use wav_kind_mod , only : r8 => shr_kind_r8, r4 => shr_kind_r4, i4 => shr_kind_i4 - use wav_kind_mod , only : CL => shr_kind_cl, CS => shr_kind_cs - - implicit none - - real(r8) :: wtime = 0.0 - -#ifdef CESMCOUPLED -contains - ! Define stub routines that do nothing - they are just here to avoid - ! having cppdefs in the main program - subroutine ufs_settimer(timevalue) - real(r8), intent(inout) :: timevalue - end subroutine ufs_settimer - subroutine ufs_logtimer(nunit,times,tod,string,runtimelog,wtime0) - integer, intent(in) :: nunit - integer(i4), intent(in) :: times(2), tod - character(len=*), intent(in) :: string - logical, intent(in) :: runtimelog - real(r8), intent(in) :: wtime0 - end subroutine ufs_logtimer - subroutine ufs_file_setLogUnit(filename,nunit,runtimelog) - character(len=*), intent(in) :: filename - logical, intent(in) :: runtimelog - integer, intent(out) :: nunit - end subroutine ufs_file_setLogUnit - subroutine ufs_logfhour(msg,hour) - character(len=*), intent(in) :: msg - real(r8), intent(in) :: hour - end subroutine ufs_logfhour -#else -contains - subroutine ufs_settimer(timevalue) - !> Set a time value - !! @param[inout] timevalue a MPI time value - !! - !> Denise.Worthen@noaa.gov - !> @date 01-08-2024 - - real(r8), intent(inout) :: timevalue - real(r8) :: MPI_Wtime - timevalue = MPI_Wtime() - end subroutine ufs_settimer - - subroutine ufs_logtimer(nunit,times,tod,string,runtimelog,wtime0) - !> Log a time interval - !! @param[in] nunit the log file unit - !! @param[in] times the ymd,hms time values - !! @param[in] tod the elapsed seconds in the day - !! @param[in] string a message string to log - !! @param[in] runtimelog a logical to control the log function - !! @param[in] wtime0 an initial MPI time - !! - !> Denise.Worthen@noaa.gov - !> @date 01-08-2024 - integer, intent(in) :: nunit - integer(i4), intent(in) :: times(2),tod - character(len=*), intent(in) :: string - logical, intent(in) :: runtimelog - real(r8), intent(in) :: wtime0 - real(r8) :: MPI_Wtime, timevalue - if (.not. runtimelog) return - if (wtime0 > 0.) then - timevalue = MPI_Wtime()-wtime0 - write(nunit,'(3i8,a,g14.7)')times,tod,' WW3 '//trim(string),timevalue - end if - end subroutine ufs_logtimer - - subroutine ufs_file_setLogUnit(filename,nunit,runtimelog) - !> Create a log unit - !! @param[in] filename the log filename - !! @param[in] runtimelog a logical to control the log function - !! @param[out] nunit the log file unit - !! - !> Denise.Worthen@noaa.gov - !> @date 01-08-2024 - - character(len=*), intent(in) :: filename - logical, intent(in) :: runtimelog - integer, intent(out) :: nunit - if (.not. runtimelog) return - open (newunit=nunit, file=trim(filename)) - end subroutine ufs_file_setLogUnit - - subroutine ufs_logfhour(msg,hour) - !> Log the completion of model output - !! @param[in] msg the log message - !! @param[in] hour the forecast hour - !! - !> Denise.Worthen@noaa.gov - !> @date 01-08-2024 - - character(len=*), intent(in) :: msg - real(r8), intent(in) :: hour - - character(len=CS) :: filename - integer(r4) :: nunit - - write(filename,'(a,i3.3)')'log.ww3.f',int(hour) - open(newunit=nunit,file=trim(filename)) - write(nunit,'(a)')'completed: ww3' - write(nunit,'(a,f10.3)')'forecast hour:',hour - write(nunit,'(a)')'valid time: '//trim(msg) - close(nunit) - end subroutine ufs_logfhour -#endif - -end module wav_wrapper_mod diff --git a/model/src/wmesmfmd.F90 b/model/src/wmesmfmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/wmfinlmd.F90 b/model/src/wmfinlmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/wmgridmd.F90 b/model/src/wmgridmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/wminiomd.F90 b/model/src/wminiomd.F90 old mode 100644 new mode 100755 index dba1be9cc..9e928082c --- a/model/src/wminiomd.F90 +++ b/model/src/wminiomd.F90 @@ -1621,8 +1621,8 @@ SUBROUTINE WMIOHS ( IMOD ) #ifdef W3_MPI ITAG = HGSTGE(J,IMOD)%ISEND(I,5) + IT0 IF ( ITAG .GT. MTAG2 ) THEN - WRITE (MDSE,1001) - CALL EXTCDE (1001) +!jcw WRITE (MDSE,1001) +!jcw CALL EXTCDE (1001) END IF #endif ! diff --git a/model/src/wminitmd.F90 b/model/src/wminitmd.F90 old mode 100644 new mode 100755 index 956490b5e..a5b85e774 --- a/model/src/wminitmd.F90 +++ b/model/src/wminitmd.F90 @@ -426,9 +426,6 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & #endif #ifdef W3_MPRF USE WMMDATMD, ONLY: MDSP -#endif -#ifdef W3_ASCII - USE WMMDATMD, ONLY: MDSUPA #endif USE W3INITMD, ONLY: WWVER USE W3ODATMD, ONLY: OFILES @@ -743,7 +740,7 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! ! 2.c Set up I/O for individual models (initial) ! - ALLOCATE ( MDS(15,NRGRD), NTRACE(2,NRGRD), ODAT(40,0:NRGRD), & + ALLOCATE ( MDS(13,NRGRD), NTRACE(2,NRGRD), ODAT(40,0:NRGRD), & FLGRD(NOGRP,NGRPP,NRGRD), OT2(0:NRGRD), FLGD(NOGRP,NRGRD), & MDSF(-NRINP:NRGRD,JFIRST:9), IPRT(6,NRGRD), LPRT(NRGRD), & FLGR2(NOGRP,NGRPP,NRGRD),FLG2D(NOGRP,NGRPP), FLG1D(NOGRP), & @@ -755,6 +752,7 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & FLG2 = .FALSE. LPRT = .FALSE. IPRT = 0 + ODAT = 0 ! ! ... Fixed and recycleable unit numbers. ! @@ -1900,12 +1898,6 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & CALL WMUSET ( MDSS, MDST, MDSUP, .TRUE., 'OUT', & TRIM(FNMPRE)//'out_pnt.'//MNAMES(0)(1:II), & 'Unified point output') -#ifdef W3_ASCII - CALL WMUGET ( MDSS, MDST, MDSUPA, 'OUA' ) - CALL WMUSET ( MDSS, MDST, MDSUPA, .TRUE., 'OUA', & - TRIM(FNMPRE)//'out_pnt.'//MNAMES(0)(1:II)//'.txt', & - 'Unified point output ascii') -#endif END IF END IF ! @@ -2303,20 +2295,8 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & SELECT CASE (J) CASE (1) MDS(7,I) = NDSFND -#ifdef W3_ASCII - CALL WMUGET ( MDSE, MDST, NDSFND, 'OUT' ) - CALL WMUSET ( MDSE, MDST, NDSFND, .TRUE., & - DESC='ASCII output file' ) - MDS(14,I) = NDSFND ! ASCII -#endif CASE (2) MDS(8,I) = NDSFND -#ifdef W3_ASCII - CALL WMUGET ( MDSE, MDST, NDSFND, 'OUT' ) - CALL WMUSET ( MDSE, MDST, NDSFND, .TRUE., & - DESC='ASCII output file' ) - MDS(15,I) = NDSFND ! ASCII -#endif CASE (3) MDS(12,I) = NDSFND CALL WMUGET ( MDSE, MDST, NDSFND, 'INP' ) @@ -2434,28 +2414,6 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & END IF END IF ! -#ifdef W3_ASCII - IF ( MDS(14,I) .NE. -1 ) THEN ! Grid output (ASCII) - IF ( IAPROC .EQ. NAPFLD ) THEN - TNAME = TRIM(FNMPRE)//'out_grd.' // FILEXT(:II) // '.txt' - CALL WMUSET ( MDSE,MDST, MDS(14,I), .TRUE., NAME=TNAME ) - ELSE - CALL WMUSET ( MDSE,MDST, MDS(14,I), .FALSE. ) - MDS(14,I) = -1 - END IF - END IF - ! - IF ( MDS(15,I) .NE. -1 ) THEN ! Point output (ASCII) - IF ( IAPROC .EQ. NAPPNT ) THEN - TNAME = TRIM(FNMPRE)//'out_pnt.' // FILEXT(:II) // '.txt' - CALL WMUSET ( MDSE,MDST, MDS(15,I), .TRUE., NAME=TNAME ) - ELSE - CALL WMUSET ( MDSE,MDST, MDS(15,I), .FALSE. ) - MDS(15,I) = -1 - END IF - END IF -#endif -! #ifdef W3_T WRITE (MDST,9081) I, TIME #endif @@ -2742,7 +2700,8 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! 8.a.6 Check for coordinate system ! DO I=1, NRGRD-1 - IF ( GRIDS(I)%FLAGLL .NEQV. GRIDS(I+1)%FLAGLL ) GOTO 2070 +! jcw not working correctly for gfortran +! IF ( GRIDS(I)%FLAGLL .NEQV. GRIDS(I+1)%FLAGLL ) GOTO 2070 END DO ! ! 8.b Input files @@ -3423,7 +3382,7 @@ SUBROUTINE WMINIT ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! #ifdef W3_T 9020 FORMAT ( ' TEST WMINIT : UNIT NUMBERS FOR GRIDS (',A,')'/ & - 15X,'GRID MDS(1-15)',43X,'NTRACE') + 15X,'GRID MDS(1-13)',43X,'NTRACE') 9021 FORMAT (14X,16I4) 9022 FORMAT ( ' TEST WMINIT : UNIT NUMBERS FOR INTPUT FILES'/ & 15X,'GRID MDSF(JFIRST-9)') @@ -3542,7 +3501,6 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & !/ Add ESMF override for STIME & ETIME ( version 6.02 ) !/ (T. J. Campbell, NRL) !/ 15-May-2018 : Update namelist ( version 6.05 ) - !/ 28-Oct-2020 : Add SMCTYPE for SMC sub-grid. JGLi ( version 7.13 ) !/ 22-Mar-2021 : Add momentum and air density input ( version 7.13 ) !/ ! 1. Purpose : @@ -3562,8 +3520,8 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! IDST Int. I Unit number for test output. ! IDSE Int. I Unit number for error output. ! IFNAME Char I File name for input file. - ! MPI_COMM Int. I MPI communicator to be used. - ! PREAMB Char I File name preamble (optional). + ! MPI_COMM Int. I MPI communicator to be used. + ! PREAMB Char I File name preamble (optiona). ! ---------------------------------------------------------------- ! ! 4. Subroutines used : @@ -3770,11 +3728,11 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & #endif USE W3WDATMD, ONLY: TIME USE W3ADATMD, ONLY: WADATS - USE W3IDATMD, ONLY: INFLAGS1, INFLAGS2, INPUTS, IINIT, & - JFIRST + USE W3IDATMD, ONLY: INFLAGS1, INPUTS, IINIT, & + JFIRST, INFLAGS2 USE W3ODATMD, ONLY: NOGRP, NGRPP, FLOUT, TONEXT, FLBPI, & FLBPO, NFBPO, NBI, NDS, IAPROC, & - NAPFLD, NAPPNT, NAPTRK, NAPBPT, & + NAPFLD, NAPPNT, NAPTRK, NAPBPT, & NAPPRT, NAPROC, FNMPRE, OUTPTS, NDST, NDSE, & NOPTS, IOSTYP, UNIPTS, UPPROC, DTOUT, & TOLAST, NOTYPE @@ -3793,9 +3751,6 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & #endif #ifdef W3_MPRF USE WMMDATMD, ONLY: MDSP -#endif -#ifdef W3_ASCII - USE WMMDATMD, ONLY: MDSUPA #endif USE W3INITMD, ONLY: WWVER USE W3NMLMULTIMD @@ -4142,17 +4097,16 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! ! 2.c Set up I/O for individual models (initial) ! - ALLOCATE ( MDS(15,NRGRD), NTRACE(2,NRGRD), ODAT(40,0:NRGRD), & + ALLOCATE ( MDS(13,NRGRD), NTRACE(2,NRGRD), ODAT(40,0:NRGRD), & FLGRD(NOGRP,NGRPP,NRGRD), OT2(0:NRGRD), FLGD(NOGRP,NRGRD), & MDSF(-NRINP:NRGRD,JFIRST:9), IPRT(6,NRGRD), LPRT(NRGRD), & FLGR2(NOGRP,NGRPP,NRGRD),FLG2D(NOGRP,NGRPP), FLG1D(NOGRP), & - FLG2(NOGRP,NRGRD),OUTFF(7,0:NRGRD)) + FLG2(NOGRP,NRGRD) & + ,OUTFF(7,0:NRGRD)) ! MDS = -1 MDSF = -1 FLGR2 = .FALSE. - FLG2 = .FALSE. - LPRT = .FALSE. IPRT = 0 ! ! ... Fixed and recycleable unit numbers. @@ -4196,9 +4150,9 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! sources, and from communication rather than ! files. ! - ALLOCATE ( INAMES(2*NRGRD,-7:9), MNAMES(-NRINP:2*NRGRD), & - TMPRNK(2*NRGRD), TMPGRP(2*NRGRD), NINGRP(2*NRGRD), & - RP1(2*NRGRD), RPN(2*NRGRD), BCDTMP(NRGRD+1:2*NRGRD) ) + ALLOCATE ( INAMES(2*NRGRD,-7:9), MNAMES(-NRINP:2*NRGRD), & + TMPRNK(2*NRGRD), TMPGRP(2*NRGRD), NINGRP(2*NRGRD), & + RP1(2*NRGRD), RPN(2*NRGRD), BCDTMP(NRGRD+1:2*NRGRD)) ALLOCATE ( GRANK(NRGRD), GRGRP(NRGRD), USEINP(NRINP) ) ALLOCATE ( CPLINP(NRINP) ) GRANK = -1 @@ -4663,39 +4617,31 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! DO I=1, NRGRD IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) WRITE (MDSS,950) TRIM(MNAMES(NRGRD+I)) - NOTYPE = 8 - ! OTYPE 1 + NOTYPE = 6 + READ(NML_OUTPUT_DATE(I)%FIELD%START, *) ODAT(1,I), ODAT(2,I) READ(NML_OUTPUT_DATE(I)%FIELD%STRIDE, *) ODAT(3,I) READ(NML_OUTPUT_DATE(I)%FIELD%STOP, *) ODAT(4,I), ODAT(5,I) READ(NML_OUTPUT_DATE(I)%FIELD%OUTFFILE, *) OUTFF(1,I) - ! OTYPE 2 READ(NML_OUTPUT_DATE(I)%POINT%START, *) ODAT(6,I), ODAT(7,I) READ(NML_OUTPUT_DATE(I)%POINT%STRIDE, *) ODAT(8,I) READ(NML_OUTPUT_DATE(I)%POINT%STOP, *) ODAT(9,I), ODAT(10,I) READ(NML_OUTPUT_DATE(I)%POINT%OUTFFILE, *) OUTFF(2,I) - ! OTYPE 3 READ(NML_OUTPUT_DATE(I)%TRACK%START, *) ODAT(11,I), ODAT(12,I) READ(NML_OUTPUT_DATE(I)%TRACK%STRIDE, *) ODAT(13,I) READ(NML_OUTPUT_DATE(I)%TRACK%STOP, *) ODAT(14,I), ODAT(15,I) - ! OTYPE 4 READ(NML_OUTPUT_DATE(I)%RESTART%START, *) ODAT(16,I), ODAT(17,I) READ(NML_OUTPUT_DATE(I)%RESTART%STRIDE, *) ODAT(18,I) READ(NML_OUTPUT_DATE(I)%RESTART%STOP, *) ODAT(19,I), ODAT(20,I) - !OTYPE 5 + READ(NML_OUTPUT_DATE(I)%RESTART2%START, *) ODAT(36,I), ODAT(37,I) + READ(NML_OUTPUT_DATE(I)%RESTART2%STRIDE, *) ODAT(38,I) + READ(NML_OUTPUT_DATE(I)%RESTART2%STOP, *) ODAT(39,I), ODAT(40,I) READ(NML_OUTPUT_DATE(I)%BOUNDARY%START, *) ODAT(21,I), ODAT(22,I) READ(NML_OUTPUT_DATE(I)%BOUNDARY%STRIDE, *) ODAT(23,I) READ(NML_OUTPUT_DATE(I)%BOUNDARY%STOP, *) ODAT(24,I), ODAT(25,I) - !OTYPE 6 READ(NML_OUTPUT_DATE(I)%PARTITION%START, *) ODAT(26,I), ODAT(27,I) READ(NML_OUTPUT_DATE(I)%PARTITION%STRIDE, *) ODAT(28,I) READ(NML_OUTPUT_DATE(I)%PARTITION%STOP, *) ODAT(29,I), ODAT(30,I) - !OTYPE 7 - ! for coupling but not implemented yet - !OTYPE 8 - READ(NML_OUTPUT_DATE(I)%RESTART2%START, *) ODAT(36,I), ODAT(37,I) - READ(NML_OUTPUT_DATE(I)%RESTART2%STRIDE, *) ODAT(38,I) - READ(NML_OUTPUT_DATE(I)%RESTART2%STOP, *) ODAT(39,I), ODAT(40,I) ! set the time stride at 0 or more ODAT(3,I) = MAX ( 0 , ODAT(3,I) ) @@ -4908,10 +4854,6 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! ! ... End of output type selecttion ELSE IF ! - ELSE IF ( J .EQ. 8 ) THEN - ! - ! 5.i Type 8: checkpoint files (no additional data) - ! END IF ! ! ... End of IF in 5.b @@ -4921,6 +4863,45 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! ... End of loop J on NOTYPE in 5.a ! END DO + !xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + ! Checkpoint + J=8 + !OUTPTS(I)%FLOUT(8)=.FALSE. + IF ( ODAT(5*(J-1)+3,I) .NE. 0 ) THEN + !OUTPTS(I)%FLOUT(8)=.TRUE. + IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) & + WRITE (MDSS,951) J, IDOTYP(J) + TTIME(1) = ODAT(5*(J-1)+1,I) + TTIME(2) = ODAT(5*(J-1)+2,I) + CALL STME21 ( TTIME , DTME21 ) + IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) & + WRITE (MDSS,952) DTME21 + TTIME(1) = ODAT(5*(J-1)+4,I) + TTIME(2) = ODAT(5*(J-1)+5,I) + CALL STME21 ( TTIME , DTME21 ) + IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) & + WRITE (MDSS,953) DTME21 + TTIME(1) = 0 + TTIME(2) = 0 + DTTST = REAL ( ODAT(5*(J-1)+3,I) ) + CALL TICK21 ( TTIME , DTTST ) + CALL STME21 ( TTIME , DTME21 ) + IF ( ( ODAT(5*(J-1)+1,I) .NE. ODAT(5*(J-1)+4,I) .OR. & + ODAT(5*(J-1)+2,I) .NE. ODAT(5*(J-1)+5,I) ) .AND. & + MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) THEN + DO II=1, 18 + IF ( DTME21(II:II).NE.'0' .AND. & + DTME21(II:II).NE.'/' .AND. & + DTME21(II:II).NE.' ' .AND. & + DTME21(II:II).NE.':' ) EXIT + DTME21(II:II) = ' ' + END DO + WRITE (MDSS,954) DTME21(1:19) + END IF + !ELSE + !OUTPTS(I)%FLOUT(8) = .FALSE. + END IF + !xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ! ! ... End of loop I on NRGRD in 5.a ! @@ -5023,12 +5004,6 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & CALL WMUSET ( MDSS, MDST, MDSUP, .TRUE., 'OUT', & TRIM(FNMPRE)//'out_pnt.'//MNAMES(0)(1:II), & 'Unified point output') -#ifdef W3_ASCII - CALL WMUGET ( MDSS, MDST, MDSUPA, 'OUA' ) - CALL WMUSET ( MDSS, MDST, MDSUPA, .TRUE., 'OUA', & - TRIM(FNMPRE)//'out_pnt.'//MNAMES(0)(1:II)//'.txt', & - 'Unified point output ascii') -#endif END IF END IF ! @@ -5042,17 +5017,16 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! IF ( IOSTYP .GT. 1 ) THEN DO I=1, NRGRD - ! FIELD IF ( ODAT( 3,I) .GT. 0 ) NDPOUT(I) = NDPOUT(I) + 1 - ! TRACK IF ( ODAT(13,I) .GT. 0 ) NDPOUT(I) = NDPOUT(I) + 1 - ! PARTITION IF ( ODAT(28,I) .GT. 0 ) NDPOUT(I) = NDPOUT(I) + 1 - ! POINT .OR. RESTART .OR. BOUNDARY - IF ( ODAT( 8,I) .GT. 0 .OR. ODAT(18,I) .GT. 0 .OR. & - ODAT(23,I) .GT. 0 ) NDPOUT(I) = NDPOUT(I) + 1 - ! RESTART2 + !xxx + ! Checkpoint IF ( ODAT(38,I) .GT. 0 ) NDPOUT(I) = NDPOUT(I) + 1 + !xxx + IF ( ODAT( 8,I) .GT. 0 .OR. ODAT(18,I) .GT. 0 .OR. & + ODAT(23,I) .GT. 0 ) & + NDPOUT(I) = NDPOUT(I) + 1 IF ( IOSTYP .EQ. 2 ) NDPOUT(I) = MIN ( 1 , NDPOUT(I) ) END DO END IF @@ -5434,20 +5408,8 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & SELECT CASE (J) CASE (1) MDS(7,I) = NDSFND -#ifdef W3_ASCII - CALL WMUGET ( MDSE, MDST, NDSFND, 'OUT' ) - CALL WMUSET ( MDSE, MDST, NDSFND, .TRUE., & - DESC='ASCII output file' ) - MDS(14,I) = NDSFND ! ASCII -#endif CASE (2) MDS(8,I) = NDSFND -#ifdef W3_ASCII - CALL WMUGET ( MDSE, MDST, NDSFND, 'OUT' ) - CALL WMUSET ( MDSE, MDST, NDSFND, .TRUE., & - DESC='ASCII output file' ) - MDS(15,I) = NDSFND ! ASCII -#endif CASE (3) MDS(12,I) = NDSFND CALL WMUGET ( MDSE, MDST, NDSFND, 'INP' ) @@ -5477,12 +5439,11 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! ..... Model initialization ! IF ( MDSS.NE.MDSO .AND. NMPSC2.EQ.IMPROC ) WRITE (MDSS,982) - - CALL W3INIT ( I, .TRUE., MNAMES(I), MDS(:,I), NTRACE(:,I), & - ODAT(:,I), & + ! + CALL W3INIT ( I, .TRUE., MNAMES(I), MDS(:,I), NTRACE(:,I), ODAT(:,I), & FLGRD(:,:,I),FLGR2(:,:,I),FLGD(:,I),FLG2(:,I), & OT2(I)%NPTS, OT2(I)%X, OT2(I)%Y, OT2(I)%PNAMES, & - IPRT(:,I), LPRT(I), MPI_COMM_LOC) + IPRT(:,I), LPRT(I), MPI_COMM_LOC ) ! ! ..... Finalize I/O file hook up ! @@ -5565,28 +5526,6 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & END IF END IF ! -#ifdef W3_ASCII - IF ( MDS(14,I) .NE. -1 ) THEN ! Grid output (ASCII) - IF ( IAPROC .EQ. NAPFLD ) THEN - TNAME = TRIM(FNMPRE)//'out_grd.' // FILEXT(:II) // '.txt' - CALL WMUSET ( MDSE,MDST, MDS(14,I), .TRUE., NAME=TNAME ) - ELSE - CALL WMUSET ( MDSE,MDST, MDS(14,I), .FALSE. ) - MDS(14,I) = -1 - END IF - END IF - ! - IF ( MDS(15,I) .NE. -1 ) THEN ! Point output (ASCII) - IF ( IAPROC .EQ. NAPPNT ) THEN - TNAME = TRIM(FNMPRE)//'out_pnt.' // FILEXT(:II) // '.txt' - CALL WMUSET ( MDSE,MDST, MDS(15,I), .TRUE., NAME=TNAME ) - ELSE - CALL WMUSET ( MDSE,MDST, MDS(15,I), .FALSE. ) - MDS(15,I) = -1 - END IF - END IF -#endif -! #ifdef W3_T WRITE (MDST,9081) I, TIME #endif @@ -5596,9 +5535,6 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & IF ( MDSS.NE.MDSO .AND. NMPSC2.EQ.IMPROC ) WRITE (MDSS,983) CALL W3SETI ( I, MDSE, MDST ) ! - !!Li Stop modifying GTYPE from input forcing file. JGLi08Apr2021. - JJJ = GTYPE - ! ! ..... regular input files ! DO J=JFIRST, 6 @@ -5606,16 +5542,9 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & IDINP(I,J) = IDSTR(J) IF ( INPMAP(I,J) .LT. 0 ) CYCLE CALL W3FLDO ('READ', IDINP(I,J), MDSF(I,J), MDST, MDSE2,& - !!Li NX, NY, GTYPE, IERR, MNAMES(I), & - NX, NY, JJJ, IERR, MNAMES(I), & + NX, NY, GTYPE, IERR, MNAMES(I), & TRIM(FNMPRE) ) IF ( IERR .NE. 0 ) GOTO 2080 - ! - !!Li Print a warning message when GTYPE not matching forcing field one. - IF ( (JJJ .NE. GTYPE) .AND. (IMPROC .EQ. NMPSC2) ) & - WRITE (MDSE, *) ' *** Warning: grid', I, ' GTYPE=', & - GTYPE, ' not matching field', J, ' grid type', JJJ - ! IF ( MDSS.NE.MDSO .AND. NMPSC2.EQ.IMPROC ) & WRITE (MDSS,985) IDFLDS(J) ELSE @@ -5679,8 +5608,8 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & IF ( J.EQ.6 ) ALLOCATE ( WADATS(I)%RA0(NSEA) , & WADATS(I)%RAI(NSEA) ) ! - END IF ! IF ( INPMAP(I,J) .NE. 0 ) THEN - END DO ! DO J=JFIRST, 9 + END IF + END DO ! INFLAGS1 = TFLAGS CALL W3SETI ( I, MDSE, MDST ) @@ -5699,20 +5628,34 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & END IF END DO ! + ! Checkpoint + J=8 + OUTPTS(I)%FLOUT(8)=.FALSE. + IF ( ODAT(5*(J-1)+3,I) .NE. 0 ) THEN + OUTPTS(I)%FLOUT(8)=.TRUE. + ELSE + OUTPTS(I)%FLOUT(8)=.FALSE. + ENDIF + + IF ( FLOUT(J) ) THEN + IF ( TOUTP(1,I) .EQ. -1 ) THEN + TOUTP(:,I) = TONEXT(:,J) + ELSE + DTTST = DSEC21 ( TOUTP(:,I), TONEXT(:,J) ) + IF ( DTTST .LT. 0. ) TOUTP(:,I) = TONEXT(:,J) + ENDIF + END IF + ! + ! GRSTAT(I) = 0 TSYNC(:,I) = TIME(:) ! -#ifdef W3_SMC - ! Check GTYPE values after initialization - IF ( IMPROC .EQ. NMPERR ) WRITE(MDSE,*) "GRID IMPROC GTYPE", & - I, IMPROC, GRIDS(I)%GTYPE -#endif - ! #ifdef W3_T WRITE (MDST,9082) GRSTAT(I), TOUTP(:,I), TSYNC(:,I) #endif ! - END DO !! 8.a I-NRGRD loop + END DO ! DO I=1, NRGRD + ! #ifdef W3_MPI CALL MPI_BARRIER (MPI_COMM_MWAVE,IERR_MPI) @@ -5784,7 +5727,7 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & MPI_COMM_BCT, IERR_MPI ) IF ( MPI_COMM_GRD .EQ. MPI_COMM_NULL ) & GSU = W3GSUC( .FALSE., FLAGLL, ICLOSE, & - XGRD, YGRD ) + XGRD, YGRD) CALL MPI_BCAST ( DXDP, NX*NY, MPI_REAL, 0, & MPI_COMM_BCT, IERR_MPI ) CALL MPI_BCAST ( DXDQ, NX*NY, MPI_REAL, 0, & @@ -5913,8 +5856,7 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! DO I=1, NRGRD DO J=JFIRST, 9 - IF ( INPMAP(I,J).LT.0 .AND. INPMAP(I,J).NE.-999) IDINP(I,J) = IDINP( INPMAP(I,J),J) - !IF ( INPMAP(I,J) .LT. 0 ) IDINP(I,J) = IDINP( INPMAP(I,J),J) + IF ( INPMAP(I,J) .LT. 0 ) IDINP(I,J) = IDINP( INPMAP(I,J),J) IF ( INPMAP(I,J) .GT. 0 ) IDINP(I,J) = IDINP(-INPMAP(I,J),J) END DO END DO @@ -6043,7 +5985,7 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! 8.c.3 Relation to same ranked grids ! #ifdef W3_SMC - !! Check whether there is a SMC grid group. JGLi12Apr2021 + !! Check whether there is a SMC grid group. JGLi12Apr2021 NGRPSMC = 0 DO JJ=1, NRGRP J = 0 @@ -6233,8 +6175,7 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & IF ( TSTOUT ) CALL WMUDMP ( MDST, 0 ) ! DEALLOCATE ( MDS, NTRACE, ODAT, FLGRD, FLGR2, FLGD, FLG2, INAMES,& - MNAMES & - ,OUTFF ) + MNAMES ) ! #ifdef W3_MPI CALL MPI_BARRIER ( MPI_COMM_MWAVE, IERR_MPI ) @@ -6561,7 +6502,7 @@ SUBROUTINE WMINITNML ( IDSI, IDSO, IDSS, IDST, IDSE, IFNAME, & ! #ifdef W3_T 9020 FORMAT ( ' TEST WMINITNML : UNIT NUMBERS FOR GRIDS (',A,')'/ & - 15X,'GRID MDS(1-15)',43X,'NTRACE') + 15X,'GRID MDS(1-13)',43X,'NTRACE') 9021 FORMAT (14X,16I4) 9022 FORMAT ( ' TEST WMINITNML : UNIT NUMBERS FOR INTPUT FILES'/ & 15X,'GRID MDSF(JFIRST-9)') diff --git a/model/src/wmiopomd.F90 b/model/src/wmiopomd.F90 old mode 100644 new mode 100755 index 73e036535..071f7e051 --- a/model/src/wmiopomd.F90 +++ b/model/src/wmiopomd.F90 @@ -723,9 +723,6 @@ SUBROUTINE WMIOPO ( TOUT ) ICEO,ICEHO,ICEFO USE WMMDATMD, ONLY: MDST, MDSE, IMPROC, NMPROC, NMPUPT, NRGRD, & RESPEC, UPTMAP, MDSUP -#ifdef W3_ASCII - USE WMMDATMD, ONLY: MDSUPA -#endif #ifdef W3_MPI USE WMMDATMD, ONLY: MPI_COMM_MWAVE, MPI_COMM_GRD, ALLPRC, & MTAG0 @@ -1176,11 +1173,7 @@ SUBROUTINE WMIOPO ( TOUT ) ! TIME = TOUT ! - CALL W3IOPO ( 'WRITE', MDSUP, II, 0 & -#ifdef W3_ASCII - ,MDSUPA & -#endif - ) + CALL W3IOPO ( 'WRITE', MDSUP, II, 0 ) ! RETURN ! diff --git a/model/src/wmmdatmd.F90 b/model/src/wmmdatmd.F90 old mode 100644 new mode 100755 index 94aa7a7a9..e93c2cfb9 --- a/model/src/wmmdatmd.F90 +++ b/model/src/wmmdatmd.F90 @@ -74,8 +74,6 @@ MODULE WMMDATMD ! only. ! MDSP Int. Public Unit number for profiling. ! MDSUP Int. Public Unit number for unified point output. - ! MDSUPA Int. Public Unit number for unified point output. - ! ASCII ! MDSF I.A. Public Unit numbers for input files. ! ! NMPROC Int. Public Number of processors (for total multi- @@ -315,9 +313,6 @@ MODULE WMMDATMD INTEGER :: MDST = 6 !< MDST INTEGER :: MDSE = 6 !< MDSE INTEGER :: MDSUP !< MDSUP -#ifdef W3_ASCII - INTEGER :: MDSUPA !< MDSUPA -#endif INTEGER :: NMPROC = 1 !< NMPROC INTEGER :: IMPROC = 1 !< IMPROC INTEGER :: NMPLOG = 1 !< NMPLOG diff --git a/model/src/wmscrpmd.F90 b/model/src/wmscrpmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/wmunitmd.F90 b/model/src/wmunitmd.F90 old mode 100644 new mode 100755 diff --git a/model/src/wmupdtmd.F90 b/model/src/wmupdtmd.F90 old mode 100644 new mode 100755 index 4bb33df54..bffb3d8c5 --- a/model/src/wmupdtmd.F90 +++ b/model/src/wmupdtmd.F90 @@ -195,6 +195,10 @@ SUBROUTINE WMUPDT ( IMOD ,TDATA ) USE WMMDATMD, ONLY: IMPROC, MDSO, MDSS, MDST, MDSE, NMPSCR, & NMPERR, ETIME, FLLSTL, FLLSTR, FLLSTI, & INPMAP, IDINP, IFLSTI, IFLSTL, IFLSTR +#ifdef W3_COAWST_MODEL + USE CWSTWVCP + USE MCT_COUPLER_PARAMS +#endif !/ IMPLICIT NONE !/ @@ -389,6 +393,27 @@ SUBROUTINE WMUPDT ( IMOD ,TDATA ) ! Data input and time stamp settings for forcing input from ! CPL are handled in wmesmfmd.ftn:GetImport ! + ! JCW we come here for wlev and currents and winds if coupled. +#ifdef W3_WAVES_OCEAN + IF (J.EQ.1) THEN + TFN(1,J)=ETIME(1) + TFN(2,J)=ETIME(2) + CALL TICK21(TFN(:,J),REAL(TI_OCN2WAV)) + ELSEIF (J.EQ.2) THEN + TFN(1,J)=ETIME(1) + TFN(2,J)=ETIME(2) + CALL TICK21(TFN(:,J),REAL(TI_OCN2WAV)) + END IF +#endif +#ifdef W3_AIR_WAVES + IF (J.EQ.3) THEN + TFN(1,J)=ETIME(1) + TFN(2,J)=ETIME(2) + CALL TICK21(TFN(:,J),REAL(TI_ATM2WAV)) + END IF +#endif + + #ifdef W3_T IF ( INPMAP(IMOD,J) .EQ. -999 ) THEN ! *** Forcing input from CPL & defined on native grid *** diff --git a/model/src/wmwavemd.F90 b/model/src/wmwavemd.F90 old mode 100644 new mode 100755 index 6dffa68b2..128d3fe0a --- a/model/src/wmwavemd.F90 +++ b/model/src/wmwavemd.F90 @@ -249,6 +249,11 @@ SUBROUTINE WMWAVE ( TEND ) #endif #ifdef W3_MPRF USE WMMDATMD, ONLY: MDSP +#endif +#ifdef W3_COAWST_MODEL + USE CWSTWVCP + USE MCT_COUPLER_PARAMS + USE W3UPDTMD #endif !/ IMPLICIT NONE @@ -267,7 +272,7 @@ SUBROUTINE WMWAVE ( TEND ) !/ INTEGER :: J, JJ, I, JO, TPRNT(2), TAUX(2), & II, JJJ, IX, IY, UPNEXT(2), UPLAST(2) - INTEGER :: DUMMY2(40)=0 + INTEGER :: DUMMY2(35)=0 #ifdef W3_T INTEGER :: ILOOP #endif @@ -325,6 +330,15 @@ SUBROUTINE WMWAVE ( TEND ) IF ( DTTST .LT. 0. ) GOTO 2001 END IF END DO +! +#if defined W3_AIR_WAVES || defined W3_WAVES_OCEAN + DO I=1, NRGRD + CALL W3SETG ( I, MDSE, MDST ) + CALL INIT_WVCP (I) + END DO + CALL INITIALIZE_WAV_ROUTERS +#endif +! ! ! Consistency of times within groups, set global TSYNC(:,0) ! diff --git a/model/src/ww3_bounc.F90 b/model/src/ww3_bounc.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_bound.F90 b/model/src/ww3_bound.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_gint.F90 b/model/src/ww3_gint.F90 old mode 100644 new mode 100755 index bfd2dd467..ee1150485 --- a/model/src/ww3_gint.F90 +++ b/model/src/ww3_gint.F90 @@ -1302,11 +1302,19 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & ! IX = MAPSF(ISEA,1) IY = MAPSF(ISEA,2) + MAPICE = MOD(MAPST2(IY,IX),2) + MAPDRY = MOD(MAPST2(IY,IX)/2,2) + MAPLND = MOD(MAPST2(IY,IX)/4,2) + MAPMSK = MOD(MAPST2(IY,IX)/8,2) MAPINT = MOD(MAPST2(IY,IX)/16,2) + MAPST2(IY,IX) = MAPST2(IY,IX) - MAPICE - 2*MAPDRY - 4*MAPLND & + - 8*MAPMSK + ACTIVE = (MAPICE .NE. 1 .AND. MAPDRY .NE. 1) ! IF ( MAPINT .EQ. 0 ) THEN ! ! Initial loop to determine status map + ! Initialize by setting it to be ice free and wet ! MAPICE = 0 MAPDRY = 0 @@ -1353,8 +1361,8 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & IF ( NMAPDRY .GT. 50 ) MAPDRYT = 1 IF ( NMAPLND .GT. 50 ) MAPLNDT = 1 IF ( NMAPMSK .GT. 50 ) MAPMSKT = 1 - ! Allow use of grid with ice or dry point. Allow merge of group 1 output - ACTIVE = (MAPLNDT .NE. 1 .AND. MAPMSKT .NE. 1) + ACTIVE = (MAPICET .NE. 1 .AND. MAPDRYT .NE. 1 .AND. & + MAPLNDT .NE. 1 .AND. MAPMSKT .NE. 1) IF ( ACTIVE ) THEN USEGRID(IG) = .TRUE. SUMGRD = SUMGRD+1 @@ -1564,7 +1572,7 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & ! ! Group 1 variables ! - IF ( FLOGRD(1,1) ) THEN + IF ( FLOGRD(1,1) .AND. ACTIVE ) THEN IF ( WADATS(IGRID)%DW(GSEA) .NE. UNDEF ) THEN SUMWT1(1) = SUMWT1(1) + WT IF ( DWAUX .EQ. UNDEF ) THEN @@ -1575,7 +1583,7 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & END IF END IF ! - IF ( FLOGRD(1,2) ) THEN + IF ( FLOGRD(1,2) .AND. ACTIVE ) THEN IF ( WADATS(IGRID)%CX(GSEA) .NE. UNDEF ) THEN SUMWT1(2) = SUMWT1(2) + WT IF ( CXAUX .EQ. UNDEF ) THEN @@ -1601,7 +1609,7 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & END IF END IF ! - IF ( FLOGRD(1,4) ) THEN + IF ( FLOGRD(1,4) .AND. ACTIVE ) THEN IF ( WADATS(IGRID)%AS(GSEA) .NE. UNDEF ) THEN SUMWT1(4) = SUMWT1(4) + WT IF ( ASAUX .EQ. UNDEF ) THEN @@ -1612,7 +1620,7 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & END IF END IF ! - IF ( FLOGRD(1,5) ) THEN + IF ( FLOGRD(1,5) .AND. ACTIVE ) THEN IF ( WDATAS(IGRID)%WLV(GSEA) .NE. UNDEF ) THEN SUMWT1(5) = SUMWT1(5) + WT IF ( WLVAUX .EQ. UNDEF ) THEN @@ -1634,7 +1642,7 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & END IF END IF ! - IF ( FLOGRD(1,7) ) THEN + IF ( FLOGRD(1,7) .AND. ACTIVE ) THEN IF ( WDATAS(IGRID)%BERG(GSEA) .NE. UNDEF ) THEN SUMWT1(7) = SUMWT1(7) + WT IF ( BERGAUX .EQ. UNDEF ) THEN @@ -1658,7 +1666,7 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & END IF END IF ! - IF ( FLOGRD(1,9) ) THEN + IF ( FLOGRD(1,9) .AND. ACTIVE ) THEN IF ( WDATAS(IGRID)%RHOAIR(GSEA) .NE. UNDEF ) THEN SUMWT1(9) = SUMWT1(9) + WT IF ( RHOAIRAUX .EQ. UNDEF ) THEN diff --git a/model/src/ww3_grib.F90 b/model/src/ww3_grib.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_grid.F90 b/model/src/ww3_grid.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_gspl.F90 b/model/src/ww3_gspl.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_multi.F90 b/model/src/ww3_multi.F90 old mode 100644 new mode 100755 index 39a6b5bf3..85839ffe9 --- a/model/src/ww3_multi.F90 +++ b/model/src/ww3_multi.F90 @@ -11,7 +11,11 @@ !> (uncoupled). !> !> @author H. L. Tolman @date 29-May-2009 -PROGRAM W3MLTI +#ifdef W3_COAWST_MODEL + SUBROUTINE WW3_init_multi (MyCOMM) +#else + PROGRAM W3MLTI +#endif !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -92,6 +96,10 @@ PROGRAM W3MLTI USE WMMDATMD, ONLY: MDSI, MDSO, MDSS, MDST, MDSE, & NMPROC, IMPROC, NMPSCR, NRGRD, ETIME !/ +#ifdef W3_COAWST_MODEL + USE CWSTWVCP + USE MCT_COUPLER_PARAMS +#endif IMPLICIT NONE ! #ifdef W3_MPI @@ -110,6 +118,10 @@ PROGRAM W3MLTI #endif #ifdef W3_OMPH INTEGER :: THRLEV +#endif +#ifdef W3_COAWST_MODEL + INTEGER :: COAWSTED, ccount + INTEGER :: MyCOMM #endif !/ !/ ------------------------------------------------------------------- / @@ -118,6 +130,10 @@ PROGRAM W3MLTI ! ! 0.b MPI environment: Here, we use MPI_COMM_WORLD ! +#ifdef W3_COAWST_MODEL + COAWSTED=1 + IF (COAWSTED.EQ.0) THEN +#endif #ifdef W3_OMPH FLHYBR = .TRUE. ! For hybrid MPI-OpenMP specify required thread level: @@ -136,6 +152,14 @@ PROGRAM W3MLTI CALL MPI_COMM_SIZE ( MPI_COMM, NMPROC, IERR_MPI ) CALL MPI_COMM_RANK ( MPI_COMM, IMPROC, IERR_MPI ) IMPROC = IMPROC + 1 +#endif +#ifdef W3_COAWST_MODEL + END IF + MPI_COMM = MyCOMM + WAV_COMM_WORLD = MyCOMM + CALL MPI_COMM_SIZE ( MPI_COMM, NMPROC, IERR_MPI ) + CALL MPI_COMM_RANK ( MPI_COMM, IMPROC, IERR_MPI ) + IMPROC = IMPROC + 1 #endif ! ! 0.c Identifying output to "screen" unit @@ -197,9 +221,18 @@ PROGRAM W3MLTI ! IF ( IMPROC .EQ. NMPSCR ) WRITE (*,999) ! +#ifdef W3_COAWST_MODEL + IF (COAWSTED.EQ.0) THEN +#endif #ifdef W3_MPI CALL MPI_BARRIER ( MPI_COMM, IERR_MPI ) CALL MPI_FINALIZE ( IERR_MPI ) +#endif +#ifdef W3_COAWST_MODEL + END IF +#endif +#if defined W3_AIR_WAVES || defined W3_WAVES_OCEAN + CALL FINALIZE_WAV_COUPLING(1) #endif ! ! Formats @@ -218,4 +251,8 @@ PROGRAM W3MLTI !/ !/ End of W3MLTI ----------------------------------------------------- / !/ +#ifdef W3_COAWST_MODEL +END SUBROUTINE WW3_init_multi +#else END PROGRAM W3MLTI +#endif diff --git a/model/src/ww3_ounf.F90 b/model/src/ww3_ounf.F90 old mode 100644 new mode 100755 index 10b1043a5..0a2cadfca --- a/model/src/ww3_ounf.F90 +++ b/model/src/ww3_ounf.F90 @@ -65,7 +65,6 @@ PROGRAM W3OUNF !/ 02-Feb-2021 : Make default global meta optional ( version 7.12 ) !/ 22-Mar-2021 : New coupling fields output ( version 7.12 ) !/ 02-Sep-2021 : Added coordinates attribute ( version 7.12 ) - !/ 14-Feb-2023 : Added QKK output ( version 7.12 ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -187,13 +186,13 @@ PROGRAM W3OUNF TAUOX, TAUOY, TAUWIX, & TAUWIY, PHIAW, PHIOC, TUSX, TUSY, PRMS, TPMS,& USSX, USSY, MSSX, MSSY, MSSD, MSCX, MSCY, & - MSCD, CHARN, TWS, TAUA, TAUADIR,USSHX,USSHY, & + MSCD, CHARN, TWS, TAUA, TAUADIR, & TAUWNX, TAUWNY, BHD, T02, HSIG, CGE, & T01, BEDFORMS, WHITECAP, TAUBBL, PHIBBL, & CFLTHMAX, CFLXYMAX, CFLKMAX, TAUICE, PHICE, & STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, HCMAXD,& P2SMS, EF, US3D, TH1M, STH1M, TH2M, STH2M, & - WN, USSP, WBT, WNMEAN, QKK + WN, USSP, WBT, WNMEAN USE W3ODATMD, ONLY: NDSO, NDSE, SCREEN, NOGRP, NGRPP, IDOUT, & UNDEF, FLOGRD, FNMPRE, NOSWLL, NOGE ! @@ -1597,10 +1596,7 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & ! ! Wave energy flux ELSE IF ( IFI .EQ. 5 .AND. IFJ .EQ. 3 ) THEN - DO ISEA=1, NSEA - IF ( CGE(ISEA) .NE. UNDEF ) & - CGE(ISEA) = 0.001 * CGE(ISEA) ! from W / m to kW / m - END DO + CGE=CGE*0.001 ! from W / m to kW / m CALL S2GRID(CGE(1:NSEA), X1) ! ! Wind to wave energy flux @@ -1815,6 +1811,9 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & ! Wave to sea ice energy flux ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 11 ) THEN IF (NCVARTYPEI.EQ.3) NCVARTYPE=4 + DO ISEA=1, NSEA + PHIOC(ISEA)=MIN(3000.,PHIOC(ISEA)) + END DO CALL S2GRID(PHICE(1:NSEA), X1) ! ! Partitioned surface stokes drift @@ -1855,23 +1854,6 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TAUOCY(1:NSEA) & , MAPSF, XY ) ENDIF ! SMCGRD - ! - NFIELD=2 - - ! - ! Surface averaged stokes drift - ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 14 ) THEN - DO ISEA=1, NSEA - USSHX(ISEA)=MAX(-0.9998,MIN(0.9998,USSHX(ISEA))) - USSHY(ISEA)=MAX(-0.9998,MIN(0.9998,USSHY(ISEA))) - END DO -#ifdef W3_RTD - ! Rotate x,y vector back to standard pole - IF ( FLAGUNR ) CALL W3XYRTN(NSEA, USSHX(1:NSEA), USSHY(1:NSEA), AnglD) -#endif - CALL S2GRID(USSHX(1:NSEA), XX) - CALL S2GRID(USSHY(1:NSEA), XY) - ! NFIELD=2 ! ! RMS of bottom displacement amplitude @@ -1973,10 +1955,6 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 5 ) THEN CALL S2GRID(QP, X1) ! - ! k bandwidth - ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 6 ) THEN - CALL S2GRID(QKK, X1) - ! ! Dynamic time step ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 1 ) THEN DO ISEA=1, NSEA @@ -1992,17 +1970,14 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & ! ! Maximum CFL for spatial advection ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 3 ) THEN - IF (NCVARTYPEI.EQ.3) NCVARTYPE=4 CALL S2GRID(CFLXYMAX, X1) ! ! Maximum CFL for direction advection ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 4 ) THEN - IF (NCVARTYPEI.EQ.3) NCVARTYPE=4 CALL S2GRID(CFLTHMAX, X1) ! ! Maximum CFL for frequency advection ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 5 ) THEN - IF (NCVARTYPEI.EQ.3) NCVARTYPE=4 CALL S2GRID(CFLKMAX, X1) ! ! User defined... @@ -2576,31 +2551,39 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & IVAR=IVAR1+I IF (COORDTYPE.EQ.1) THEN IF (NCVARTYPE.EQ.2) THEN + IF( SMCGRD ) THEN #ifdef W3_SMC - IF( SMCGRD .AND. SMCOTYPE .EQ. 1 ) THEN - ! SMC Flat file - IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) - ELSE -#endif - IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, DIMID(2:4+EXTRADIM), VARID(IVAR)) -#ifdef W3_SMC - ENDIF + IF( SMCOTYPE .EQ. 1 ) THEN + ! SMC Flat file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) + ELSE + ! SMC Regridded file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, DIMID(2:4+EXTRADIM), VARID(IVAR)) + ENDIF + CALL CHECK_ERR(IRET) #endif - CALL CHECK_ERR(IRET) + ELSE ! SMCGRD + IRET=NF90_DEF_VAR(NCID,META(I)%VARNM, NF90_SHORT, DIMID(2:4+EXTRADIM), VARID(IVAR)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD IF (NCTYPE.EQ.4) IRET = NF90_DEF_VAR_DEFLATE(NCID, VARID(IVAR), 1, 1, DEFLATE) IF (NCTYPE.EQ.4) CALL CHECK_ERR(IRET) ELSE + IF( SMCGRD ) THEN #ifdef W3_SMC - IF( SMCGRD .AND. SMCOTYPE .EQ. 1 ) THEN - ! SMC Flat file - IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) - ELSE -#endif - IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, DIMID(2:4+EXTRADIM), VARID(IVAR)) -#ifdef W3_SMC - ENDIF + IF( SMCOTYPE .EQ. 1 ) THEN + ! SMC Flat file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) + ELSE + ! SMC Regridded file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, DIMID(2:4+EXTRADIM), VARID(IVAR)) + ENDIF + CALL CHECK_ERR(IRET) #endif - CALL CHECK_ERR(IRET) + ELSE ! SMCGRD + IRET=NF90_DEF_VAR(NCID,META(I)%VARNM, NF90_FLOAT, DIMID(2:4+EXTRADIM), VARID(IVAR)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD IF (NCTYPE.EQ.4) IRET = NF90_DEF_VAR_DEFLATE(NCID, VARID(IVAR), 1, 1, DEFLATE) IF (NCTYPE.EQ.4) CALL CHECK_ERR(IRET) END IF @@ -2665,16 +2648,19 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & ELSE ! If it is spherical coordinate IF (FLAGLL) THEN + IF(SMCGRD) THEN #ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_INQ_DIMID (NCID, 'seapoint', DIMID(2)) - ELSE + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_INQ_DIMID (NCID, 'seapoint', DIMID(2)) + ELSE + IRET=NF90_INQ_DIMID (NCID, 'longitude', DIMID(2)) + IRET=NF90_INQ_DIMID (NCID, 'latitude', DIMID(3)) + ENDIF #endif + ELSE IRET=NF90_INQ_DIMID (NCID, 'longitude', DIMID(2)) IRET=NF90_INQ_DIMID (NCID, 'latitude', DIMID(3)) -#ifdef W3_SMC - ENDIF -#endif + ENDIF ! SMCGRD IRET=NF90_INQ_VARID (NCID, 'longitude', VARID(1)) IRET=NF90_INQ_VARID (NCID, 'latitude', VARID(2)) ! If it is cartesian coordinate @@ -2719,30 +2705,36 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & IVAR=IVAR1+I IF (COORDTYPE.EQ.1) THEN IF (NCVARTYPE.EQ.2) THEN + IF( SMCGRD ) THEN #ifdef W3_SMC - IF( SMCGRD .AND. SMCOTYPE .EQ. 1 ) THEN - ! SMC Flat file - IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) - ELSE + IF( SMCOTYPE .EQ. 1 ) THEN + ! SMC Flat file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) + ELSE + ! SMC Regridded file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, DIMID(2:4+EXTRADIM), VARID(IVAR)) + ENDIF #endif + ELSE IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_SHORT, DIMID(2:4+EXTRADIM), VARID(IVAR)) -#ifdef W3_SMC - ENDIF -#endif - CALL CHECK_ERR(IRET) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD IF (NCTYPE.EQ.4) IRET = NF90_DEF_VAR_DEFLATE(NCID, VARID(IVAR), 1, 1, DEFLATE) ELSE + IF( SMCGRD ) THEN #ifdef W3_SMC - IF( SMCGRD .AND. SMCOTYPE .EQ. 1 ) THEN - ! SMC Flat file - IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) - ELSE + IF( SMCOTYPE .EQ. 1 ) THEN + ! SMC Flat file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, (/DIMID(2), DIMID(4+EXTRADIM)/), VARID(IVAR)) + ELSE + ! SMC Regridded file + IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, DIMID(2:4+EXTRADIM), VARID(IVAR)) + ENDIF #endif + ELSE IRET = NF90_DEF_VAR(NCID,META(I)%varnm, NF90_FLOAT, DIMID(2:4+EXTRADIM), VARID(IVAR)) -#ifdef W3_SMC - ENDIF -#endif - CALL CHECK_ERR(IRET) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD IF (NCTYPE.EQ.4) IRET = NF90_DEF_VAR_DEFLATE(NCID, VARID(IVAR), 1, 1, DEFLATE) IF (NCTYPE.EQ.4) CALL CHECK_ERR(IRET) END IF @@ -2857,171 +2849,263 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & ! NFIELD=3 IF (NCVARTYPE.EQ.2) THEN IF ( NFIELD.EQ.3 ) THEN - DO IX=IX1, IXN - DO IY=IY1, IYN - IF ( X1(IX,IY) .EQ. UNDEF ) THEN - MXX(IX,IY) = MFILL - MYY(IX,IY) = MFILL - MXY(IX,IY) = MFILL - ELSE - MXX(IX,IY) = NINT(X1(IX,IY)/META(1)%FSC) - MYY(IX,IY) = NINT(X2(IX,IY)/META(2)%FSC) - MXY(IX,IY) = NINT(XY(IX,IY)/META(3)%FSC) - END IF - END DO - END DO + IF (SMCGRD) THEN #ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXX(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MYY(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & - MXY(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - ELSE -#endif - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXX(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MYY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & - MXY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) -#ifdef W3_SMC - ENDIF -#endif - ! NFIELD=2 - ELSE IF (NFIELD.EQ.2 ) THEN - ! EXTRADIM=0 - IF (EXTRADIM.EQ.0) THEN DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XX(IX,IY) .EQ. UNDEF ) THEN + ! TODO: Find some other way to access MAPSTA + IF ( X1(IX,IY) .EQ. UNDEF ) THEN MXX(IX,IY) = MFILL MYY(IX,IY) = MFILL + MXY(IX,IY) = MFILL ELSE - MXX(IX,IY) = NINT(XX(IX,IY)/META(1)%FSC) - MYY(IX,IY) = NINT(XY(IX,IY)/META(2)%FSC) + MXX(IX,IY) = NINT(X1(IX,IY)/META(1)%FSC) + MYY(IX,IY) = NINT(X2(IX,IY)/META(2)%FSC) + MXY(IX,IY) = NINT(XY(IX,IY)/META(3)%FSC) END IF END DO END DO -#ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN + IF(SMCOTYPE .EQ. 1) THEN IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & MXX(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & MYY(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & + MXY(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) + call CHECK_ERR(IRET) ELSE -#endif IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & MXX(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & MYY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) -#ifdef W3_SMC + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & + MXY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + call CHECK_ERR(IRET) ENDIF #endif - ! EXTRADIM=1 - ELSE - START(3+1-COORDTYPE)=0 - DO IK=I1F,I2F - START(3+1-COORDTYPE)=START(3+1-COORDTYPE)+1 + ELSE ! IF(SMCGRD) + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR. X1(IX,IY) .EQ. UNDEF ) THEN + MXX(IX,IY) = MFILL + MYY(IX,IY) = MFILL + MXY(IX,IY) = MFILL + ELSE + MXX(IX,IY) = NINT(X1(IX,IY)/META(1)%FSC) + MYY(IX,IY) = NINT(X2(IX,IY)/META(2)%FSC) + MXY(IX,IY) = NINT(XY(IX,IY)/META(3)%FSC) + END IF + END DO + END DO + + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXX(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & + MXY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD + ! NFIELD=2 + ELSE IF (NFIELD.EQ.2 ) THEN + ! EXTRADIM=0 + IF (EXTRADIM.EQ.0) THEN + IF (SMCGRD) THEN +#ifdef W3_SMC DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XXK(IX,IY,IK) .EQ. UNDEF ) THEN + ! TODO: Find some other way to access MAPSTA + IF ( XX(IX,IY) .EQ. UNDEF ) THEN MXX(IX,IY) = MFILL MYY(IX,IY) = MFILL ELSE - MXX(IX,IY) = NINT(XXK(IX,IY,IK)/META(1)%FSC) - MYY(IX,IY) = NINT(XYK(IX,IY,IK)/META(2)%FSC) + MXX(IX,IY) = NINT(XX(IX,IY)/META(1)%FSC) + MYY(IX,IY) = NINT(XY(IX,IY)/META(2)%FSC) END IF END DO END DO -#ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXX(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & - (/COUNT(1), COUNT(3), COUNT(4)/)) + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXX(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MXY(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & - (/COUNT(1), COUNT(3), COUNT(4)/)) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYY(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) ELSE -#endif IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXX(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + MXX(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MXX(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + MYY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) -#ifdef W3_SMC ENDIF #endif + ELSE ! IF(SMCGRD) + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR. XX(IX,IY) .EQ. UNDEF ) THEN + MXX(IX,IY) = MFILL + MYY(IX,IY) = MFILL + ELSE + !PRINT*,XX(IX,IY),XY(IX,IY) + !STOP + MXX(IX,IY) = NINT(XX(IX,IY)/META(1)%FSC) + MYY(IX,IY) = NINT(XY(IX,IY)/META(2)%FSC) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXX(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYY(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD + ! EXTRADIM=1 + ELSE + START(3+1-COORDTYPE)=0 + DO IK=I1F,I2F + START(3+1-COORDTYPE)=START(3+1-COORDTYPE)+1 + + IF (SMCGRD) THEN +#ifdef W3_SMC + DO IX=IX1, IXN + DO IY=IY1, IYN + ! TODO: Find some other way to access MAPSTA + IF ( XXK(IX,IY,IK) .EQ. UNDEF ) THEN + MXX(IX,IY) = MFILL + MYY(IX,IY) = MFILL + ELSE + MXX(IX,IY) = NINT(XXK(IX,IY,IK)/META(1)%FSC) + MYY(IX,IY) = NINT(XYK(IX,IY,IK)/META(2)%FSC) + END IF + END DO + END DO + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXX(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & + (/COUNT(1), COUNT(3), COUNT(4)/)) + call CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MXY(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & + (/COUNT(1), COUNT(3), COUNT(4)/)) + call CHECK_ERR(IRET) + ELSE + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXX(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + call CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXX(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + call CHECK_ERR(IRET) + ENDIF +#endif + ELSE ! IF(SMCGRD) + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR.XXK(IX,IY,IK) .EQ. UNDEF ) THEN + MXX(IX,IY) = MFILL + MYY(IX,IY) = MFILL + ELSE + MXX(IX,IY) = NINT(XXK(IX,IY,IK)/META(1)%FSC) + MYY(IX,IY) = NINT(XYK(IX,IY,IK)/META(2)%FSC) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXX(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYY(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + ENDIF ! SMCGRD END DO END IF ! EXTRADIM ! NFIELD=1 ELSE ! EXTRADIM=0 IF (EXTRADIM.EQ.0) THEN - DO IX=IX1, IXN - DO IY=IY1, IYN - IF ( X1(IX,IY) .EQ. UNDEF ) THEN - MX1(IX,IY) = MFILL - ELSE - MX1(IX,IY) = NINT(X1(IX,IY)/META(1)%FSC) - END IF - END DO - END DO + IF (SMCGRD) THEN #ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - ELSE -#endif - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) -#ifdef W3_SMC - ENDIF -#endif - ! EXTRADIM=1 - ELSE - START(3+1-COORDTYPE)=0 - DO IK=I1F,I2F - START(3+1-COORDTYPE)=START(3+1-COORDTYPE)+1 DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XK(IX,IY,IK) .EQ. UNDEF ) THEN + ! TODO: Find some other way to access MAPSTA + IF ( X1(IX,IY) .EQ. UNDEF ) THEN MX1(IX,IY) = MFILL ELSE - MX1(IX,IY) = NINT(XK(IX,IY,IK)/META(1)%FSC) + MX1(IX,IY) = NINT(X1(IX,IY)/META(1)%FSC) END IF END DO END DO -#ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & - (/COUNT(1), COUNT(3), COUNT(4)/)) + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) ELSE -#endif IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + MX1(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) -#ifdef W3_SMC ENDIF #endif + ELSE ! IF(SMCGRD) + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR.X1(IX,IY) .EQ. UNDEF ) THEN + MX1(IX,IY) = MFILL + ELSE + MX1(IX,IY) = NINT(X1(IX,IY)/META(1)%FSC) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD + ! EXTRADIM=1 + ELSE + START(3+1-COORDTYPE)=0 + DO IK=I1F,I2F + START(3+1-COORDTYPE)=START(3+1-COORDTYPE)+1 + + IF (SMCGRD) THEN +#ifdef W3_SMC + DO IX=IX1, IXN + DO IY=IY1, IYN + ! TODO: Find some other way to access MAPSTA + IF ( XK(IX,IY,IK) .EQ. UNDEF ) THEN + MX1(IX,IY) = MFILL + ELSE + MX1(IX,IY) = NINT(XK(IX,IY,IK)/META(1)%FSC) + END IF + END DO + END DO + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) + call CHECK_ERR(IRET) + ELSE + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + call CHECK_ERR(IRET) + ENDIF +#endif + ELSE ! IF(SMCGRD) + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR.XK(IX,IY,IK) .EQ. UNDEF ) THEN + MX1(IX,IY) = MFILL + ELSE + MX1(IX,IY) = NINT(XK(IX,IY,IK)/META(1)%FSC) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD END DO END IF ! EXTRADIM END IF ! NFIELD @@ -3030,171 +3114,258 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, & ! ELSE IF ( NFIELD.EQ.3 ) THEN - DO IX=IX1, IXN - DO IY=IY1, IYN - IF ( X1(IX,IY) .EQ. UNDEF ) THEN - MXXR(IX,IY) = MFILLR - MYYR(IX,IY) = MFILLR - MXYR(IX,IY) = MFILLR - ELSE - MXXR(IX,IY) = X1(IX,IY) - MYYR(IX,IY) = X2(IX,IY) - MXYR(IX,IY) = XY(IX,IY) - END IF - END DO - END DO + IF (SMCGRD) THEN #ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXXR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MYYR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & - MXYR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - ELSE -#endif - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXXR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MYYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & - MXYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) -#ifdef W3_SMC - ENDIF -#endif - ! NFIELD=2 - ELSE IF (NFIELD.EQ.2 ) THEN - ! EXTRADIM=0 - IF (EXTRADIM.EQ.0) THEN DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XX(IX,IY) .EQ. UNDEF ) THEN + ! TODO: Find some other way to access MAPSTA + IF ( X1(IX,IY) .EQ. UNDEF ) THEN MXXR(IX,IY) = MFILLR MYYR(IX,IY) = MFILLR + MXYR(IX,IY) = MFILLR ELSE - MXXR(IX,IY) = XX(IX,IY) - MYYR(IX,IY) = XY(IX,IY) + MXXR(IX,IY) = X1(IX,IY) + MYYR(IX,IY) = X2(IX,IY) + MXYR(IX,IY) = XY(IX,IY) END IF END DO END DO -#ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN + IF(SMCOTYPE .EQ. 1) THEN IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & MXXR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & MYYR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & + MXYR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) + call CHECK_ERR(IRET) ELSE -#endif IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & MXXR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & MYYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) -#ifdef W3_SMC + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & + MXYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + call CHECK_ERR(IRET) ENDIF #endif - ! EXTRADIM=1 - ELSE - START(4-COORDTYPE)=0 - DO IK=I1F,I2F - START(4-COORDTYPE)=START(4-COORDTYPE)+1 + ELSE ! IF(SMCGRD) + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR. X1(IX,IY) .EQ. UNDEF ) THEN + MXXR(IX,IY) = MFILLR + MYYR(IX,IY) = MFILLR + MXYR(IX,IY) = MFILLR + ELSE + MXXR(IX,IY) = X1(IX,IY) + MYYR(IX,IY) = X2(IX,IY) + MXYR(IX,IY) = XY(IX,IY) + END IF + END DO + END DO + + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXXR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+3), & + MXYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD + ! NFIELD=2 + ELSE IF (NFIELD.EQ.2 ) THEN + ! EXTRADIM=0 + IF (EXTRADIM.EQ.0) THEN + IF (SMCGRD) THEN +#ifdef W3_SMC DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XXK(IX,IY,IK) .EQ. UNDEF ) THEN + ! TODO: Find some other way to access MAPSTA + IF ( XX(IX,IY) .EQ. UNDEF ) THEN MXXR(IX,IY) = MFILLR MYYR(IX,IY) = MFILLR ELSE - MXXR(IX,IY) = XXK(IX,IY,IK) - MYYR(IX,IY) = XYK(IX,IY,IK) + MXXR(IX,IY) = XX(IX,IY) + MYYR(IX,IY) = XY(IX,IY) END IF END DO END DO -#ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXXR(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & - (/COUNT(1), COUNT(3), COUNT(4)/)) + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXXR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MYYR(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & - (/COUNT(1), COUNT(3), COUNT(4)/)) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYYR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) ELSE -#endif IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MXXR(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + MXXR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & - MYYR(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + MYYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) -#ifdef W3_SMC ENDIF #endif + ELSE ! IF SMCGRD + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR. XX(IX,IY) .EQ. UNDEF ) THEN + MXXR(IX,IY) = MFILLR + MYYR(IX,IY) = MFILLR + ELSE + MXXR(IX,IY) = XX(IX,IY) + MYYR(IX,IY) = XY(IX,IY) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXXR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD + ! EXTRADIM=1 + ELSE + START(4-COORDTYPE)=0 + DO IK=I1F,I2F + START(4-COORDTYPE)=START(4-COORDTYPE)+1 + + IF (SMCGRD) THEN +#ifdef W3_SMC + DO IX=IX1, IXN + DO IY=IY1, IYN + ! TODO: Find some other way to access MAPSTA + IF ( XXK(IX,IY,IK) .EQ. UNDEF ) THEN + MXXR(IX,IY) = MFILLR + MYYR(IX,IY) = MFILLR + ELSE + MXXR(IX,IY) = XXK(IX,IY,IK) + MYYR(IX,IY) = XYK(IX,IY,IK) + END IF + END DO + END DO + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXXR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) + call CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYYR(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) + call CHECK_ERR(IRET) + ELSE + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXXR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + call CHECK_ERR(IRET) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYYR(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + call CHECK_ERR(IRET) + ENDIF +#endif + ELSE ! IF SMCGRD + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR.XXK(IX,IY,IK) .EQ. UNDEF ) THEN + MXXR(IX,IY) = MFILLR + MYYR(IX,IY) = MFILLR + ELSE + MXXR(IX,IY) = XXK(IX,IY,IK) + MYYR(IX,IY) = XYK(IX,IY,IK) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MXXR(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+2), & + MYYR(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + ENDIF ! SMCGRD END DO END IF ! EXTRADIM ! NFIELD=1 ELSE ! EXTRADIM=0 IF (EXTRADIM.EQ.0) THEN - DO IX=IX1, IXN - DO IY=IY1, IYN - IF ( X1(IX,IY) .EQ. UNDEF ) THEN - MX1R(IX,IY) = MFILLR - ELSE - MX1R(IX,IY) = X1(IX,IY) - END IF - END DO - END DO + IF (SMCGRD) THEN #ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1R(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) - call CHECK_ERR(IRET) - ELSE -#endif - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1R(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) - call CHECK_ERR(IRET) -#ifdef W3_SMC - ENDIF -#endif - ! EXTRADIM=1 - ELSE - START(4-COORDTYPE)=0 - DO IK=I1F,I2F - START(4-COORDTYPE)=START(4-COORDTYPE)+1 DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XK(IX,IY,IK) .EQ. UNDEF ) THEN + ! TODO: Find some other way to access MAPSTA + IF ( X1(IX,IY) .EQ. UNDEF ) THEN MX1R(IX,IY) = MFILLR ELSE - MX1R(IX,IY) = XK(IX,IY,IK) + MX1R(IX,IY) = X1(IX,IY) END IF END DO END DO -#ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1R(IX1:IXN,IY1:IYN),(/START(1), START(3), START(4)/), & - (/COUNT(1), COUNT(3), COUNT(4)/)) + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1R(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) call CHECK_ERR(IRET) ELSE -#endif IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & - MX1R(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + MX1R(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) call CHECK_ERR(IRET) -#ifdef W3_SMC ENDIF #endif + ELSE ! IF SMCGRD + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR.X1(IX,IY) .EQ. UNDEF ) THEN + MX1R(IX,IY) = MFILLR + ELSE + MX1R(IX,IY) = X1(IX,IY) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1R(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + CALL CHECK_ERR(IRET) + ENDIF ! SMCGRD + ! EXTRADIM=1 + ELSE + START(4-COORDTYPE)=0 + DO IK=I1F,I2F + START(4-COORDTYPE)=START(4-COORDTYPE)+1 + IF (SMCGRD) THEN +#ifdef W3_SMC + DO IX=IX1, IXN + DO IY=IY1, IYN + ! TODO: Find some other way to access MAPSTA + IF ( XK(IX,IY,IK) .EQ. UNDEF ) THEN + MX1R(IX,IY) = MFILLR + ELSE + MX1R(IX,IY) = XK(IX,IY,IK) + END IF + END DO + END DO + IF(SMCOTYPE .EQ. 1) THEN + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1R(IX1:IXN,IY1:IYN),(/START(1), START(3)/),(/COUNT(1), COUNT(3)/)) + call CHECK_ERR(IRET) + ELSE + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1R(IX1:IXN,IY1:IYN),(/START(1:3)/),(/COUNT(1:3)/)) + call CHECK_ERR(IRET) + ENDIF +#endif + ELSE ! IF SMCGRD + DO IX=IX1, IXN + DO IY=IY1, IYN + IF ( MAPSTA(IY,IX) .LE. 0 .OR.XK(IX,IY,IK) .EQ. UNDEF ) THEN + MX1R(IX,IY) = MFILLR + ELSE + MX1R(IX,IY) = XK(IX,IY,IK) + END IF + END DO + END DO + IRET=NF90_PUT_VAR(NCID,VARID(IVAR1+1), & + MX1R(IX1:IXN,IY1:IYN),(/START(1:4)/),(/COUNT(1:4)/)) + CALL CHECK_ERR(IRET) + END IF ! SMCGRD END DO END IF ! EXTRADIM END IF ! NFIELD @@ -3339,18 +3510,21 @@ SUBROUTINE W3CRNC (NCFILE, NCID, DIMID, DIMLN, VARID, & ! IF (GTYPE.NE.UNGTYPE) THEN IF (FLAGLL) THEN + IF (SMCGRD) THEN #ifdef W3_SMC - IF(SMCGRD .AND. SMCOTYPE .EQ. 1) THEN - ! Flat seapoints file - IRET = NF90_DEF_DIM(NCID, 'seapoint', dimln(2), DIMID(2)) - ELSE -#endif - ! Regular gridded file: - IRET = NF90_DEF_DIM(NCID, 'longitude', dimln(2), DIMID(2)) - IRET = NF90_DEF_DIM(NCID, 'latitude', dimln(3), DIMID(3)) -#ifdef W3_SMC - ENDIF + IF(SMCOTYPE .EQ. 1) THEN + ! Flat seapoints file + IRET = NF90_DEF_DIM(NCID, 'seapoint', dimln(2), DIMID(2)) + ELSE + ! Regular gridded file: + IRET = NF90_DEF_DIM(NCID, 'longitude', dimln(2), DIMID(2)) + IRET = NF90_DEF_DIM(NCID, 'latitude', dimln(3), DIMID(3)) + ENDIF #endif + ELSE + IRET = NF90_DEF_DIM(NCID, 'longitude', DIMLN(2), DIMID(2)) + IRET = NF90_DEF_DIM(NCID, 'latitude', DIMLN(3), DIMID(3)) + ENDIF ! SMCGRD ELSE IRET = NF90_DEF_DIM(NCID, 'x', DIMLN(2), DIMID(2)) IRET = NF90_DEF_DIM(NCID, 'y', DIMLN(3), DIMID(3)) diff --git a/model/src/ww3_ounp.F90 b/model/src/ww3_ounp.F90 old mode 100644 new mode 100755 index 499e0371f..8d726479d --- a/model/src/ww3_ounp.F90 +++ b/model/src/ww3_ounp.F90 @@ -1547,7 +1547,6 @@ SUBROUTINE W3EXNC(I,NCID,NREQ,INDREQ,ORDER) #endif #ifdef W3_NL1 USE W3SNL1MD - USE W3GDATMD, ONLY: IQTPE #endif #ifdef W3_NL2 USE W3SNL2MD @@ -2422,11 +2421,7 @@ SUBROUTINE W3EXNC(I,NCID,NREQ,INDREQ,ORDER) END IF IF ( FLSRCE(3) ) THEN #ifdef W3_NL1 - IF (IQTPE.GT.0) THEN - CALL W3SNL1 ( A, CG, WNMEAN*DEPTH, XNL, DIA ) - ELSE - CALL W3SNLGQM ( A, CG, WN, DEPTH, XNL, DIA ) - END IF + CALL W3SNL1 ( A, CG, WNMEAN*DEPTH, XNL, DIA ) #endif #ifdef W3_NL2 CALL W3SNL2 ( A, CG, DEPTH, XNL, DIA ) @@ -3208,7 +3203,7 @@ SUBROUTINE W3CRNC (ITYPE, OTYPE, NCTYPE, NCFILE, NCID, DIMID, DIMLN, VARID, ONE, IRET=NF90_PUT_ATT(NCID,VARID(4),'long_name','x') IRET=NF90_PUT_ATT(NCID,VARID(4),'standard_name','x') IRET=NF90_PUT_ATT(NCID,VARID(4),'globwave_name','x') - IRET=NF90_PUT_ATT(NCID,VARID(4),'units','km') + IRET=NF90_PUT_ATT(NCID,VARID(4),'units','m') IRET=NF90_PUT_ATT(NCID,VARID(4),'scale_factor',1.) IRET=NF90_PUT_ATT(NCID,VARID(4),'add_offset',0.) IRET=NF90_PUT_ATT(NCID,VARID(4),'valid_min',0.) @@ -3225,7 +3220,7 @@ SUBROUTINE W3CRNC (ITYPE, OTYPE, NCTYPE, NCFILE, NCID, DIMID, DIMLN, VARID, ONE, IRET=NF90_PUT_ATT(NCID,VARID(5),'long_name','y') IRET=NF90_PUT_ATT(NCID,VARID(5),'standard_name','y') IRET=NF90_PUT_ATT(NCID,VARID(5),'globwave_name','y') - IRET=NF90_PUT_ATT(NCID,VARID(5),'units','km') + IRET=NF90_PUT_ATT(NCID,VARID(5),'units','m') IRET=NF90_PUT_ATT(NCID,VARID(5),'scale_factor',1.) IRET=NF90_PUT_ATT(NCID,VARID(5),'add_offset',0.) IRET=NF90_PUT_ATT(NCID,VARID(5),'valid_min',0.) @@ -3361,7 +3356,7 @@ SUBROUTINE W3CRNC (ITYPE, OTYPE, NCTYPE, NCFILE, NCID, DIMID, DIMLN, VARID, ONE, IRET=NF90_PUT_ATT(NCID,VARID(12),'scale_factor',1.) IRET=NF90_PUT_ATT(NCID,VARID(12),'add_offset',0.) IRET=NF90_PUT_ATT(NCID,VARID(12),'valid_min',0.) - IRET=NF90_PUT_ATT(NCID,VARID(12),'valid_max',1000.) + IRET=NF90_PUT_ATT(NCID,VARID(12),'valid_max',100.) IRET=NF90_PUT_ATT(NCID,VARID(12),'_FillValue',NF90_FILL_FLOAT) IRET=NF90_PUT_ATT(NCID,VARID(12),'content','TXY') IRET=NF90_PUT_ATT(NCID,VARID(12),'associates','time station frequency') diff --git a/model/src/ww3_outf.F90 b/model/src/ww3_outf.F90 old mode 100644 new mode 100755 index 7bcafdb0f..e4c1affed --- a/model/src/ww3_outf.F90 +++ b/model/src/ww3_outf.F90 @@ -159,7 +159,7 @@ PROGRAM W3OUTF ABA, ABD, UBA, UBD, SXX, SYY, SXY, USERO, & PHS, PTP, PLP, PDIR, PSI, PWS, PWST, PNR, & PTM1, PT1, PT2, PEP, TAUOCX, TAUOCY, & - PTHP0, PQP, PSW, PPE, PGW, QP, QKK, & + PTHP0, PQP, PSW, PPE, PGW, QP, & TAUOX, TAUOY, TAUWIX,BHD, & TAUWIY, PHIAW, PHIOC, TUSX, TUSY, PRMS, TPMS,& USSX, USSY, MSSX, MSSY, MSCX, MSCY, CHARN, & @@ -167,7 +167,7 @@ PROGRAM W3OUTF CFLTHMAX, CFLKMAX, BEDFORMS, WHITECAP, T02, & CGE, T01, HSIG, STMAXE, STMAXD, HMAXE, & HCMAXE, HMAXD, HCMAXD, MSSD, MSCD, WBT, & - WNMEAN, TAUA, TAUADIR, USSHX, USSHY + WNMEAN, TAUA, TAUADIR USE W3ODATMD, ONLY: NDSO, NDSE, NDST, NOGRP, NGRPP, IDOUT, & UNDEF, FLOGRD, FNMPRE, NOSWLL, NOGE ! @@ -1940,57 +1940,6 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) CALL W3S2XY (NSEA,NSEA,NX+1,NY, TAUOCY(1:NSEA) & , MAPSF, X2 ) ENDIF - - ! - ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 14 ) THEN - IF ( VECTOR ) THEN - FLTWO = .TRUE. - ELSE - FLDIR = .TRUE. - END IF - FSC = 0.001 - UNITS = 'm s-1' - ENAME = '.ussh' - DO ISEA=1, NSEA - IF (USSHX(ISEA) .NE. UNDEF) THEN - USSHX(ISEA)=MAX(-0.9998,MIN(0.9998,USSHX(ISEA))) - USSHY(ISEA)=MAX(-0.9998,MIN(0.9998,USSHY(ISEA))) - END IF - END DO -#ifdef W3_RTD - ! Rotate x,y vector back to standard pole - IF ( FLAGUNR ) CALL W3XYRTN(NSEA, USSHX, USSHY, AnglD) -#endif - IF ( ITYPE .EQ. 4 ) THEN - XS1 = USSHX(1:NSEA) - XS2 = USSHY(1:NSEA) - ELSE - CALL W3S2XY ( NSEA, NSEA, NX+1, NY, USSHX(1:NSEA) & - , MAPSF, XX ) - CALL W3S2XY ( NSEA, NSEA, NX+1, NY, USSHY(1:NSEA) & - , MAPSF, XY ) - ENDIF - DO ISEA=1, NSEA - CABS = SQRT(USSHX(ISEA)**2+USSHY(ISEA)**2) - IF ( USSHX(ISEA) .NE. UNDEF ) THEN - USSHY(ISEA) = MOD ( 630. - & - RADE*ATAN2(USSHY(ISEA),USSHX(ISEA)) , 360. ) - ELSE - USSHY(ISEA) = UNDEF - CABS = UNDEF - END IF - USSHX(ISEA) = CABS - END DO - IF ( ITYPE .EQ. 4 ) THEN - XS3 = USSHX(1:NSEA) - XS4 = USSHY(1:NSEA) - ELSE - CALL W3S2XY ( NSEA, NSEA, NX+1, NY, USSHX(1:NSEA), & - MAPSF, X1 ) - CALL W3S2XY ( NSEA, NSEA, NX+1, NY, USSHY(1:NSEA), & - MAPSF, X2 ) - ENDIF - ! ELSE IF ( IFI .EQ. 7 .AND. IFJ .EQ. 1 ) THEN IF ( VECTOR ) THEN @@ -2247,7 +2196,7 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) ! ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 5 ) THEN FLONE = .TRUE. - FSC = 0.001 + FSC = 0.01 UNITS = '1' ENAME = '.qp' IF ( ITYPE .EQ. 4 ) THEN @@ -2256,17 +2205,6 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) CALL W3S2XY ( NSEA, NSEA, NX+1, NY, QP, MAPSF, X1 ) ENDIF ! - ELSE IF ( IFI .EQ. 8 .AND. IFJ .EQ. 6 ) THEN - FLONE = .TRUE. - FSC = 0.05 - UNITS = '1' - ENAME = '.qkk' - IF ( ITYPE .EQ. 4 ) THEN - XS1 = QKK - ELSE - CALL W3S2XY ( NSEA, NSEA, NX+1, NY, QKK, MAPSF, X1 ) - ENDIF - ! ELSE IF ( IFI .EQ. 9 .AND. IFJ .EQ. 1 ) THEN FLONE = .TRUE. FSC = 0.1 @@ -2427,7 +2365,8 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) ! DO IX=IX1, IXN DO IY=IY1, IYN - IF ( X1(IX,IY) .NE. UNDEF ) THEN + IF ( MAPSTA(IY,IX) .GT. 0 .AND. & + X1(IX,IY) .NE. UNDEF ) THEN NINGRD = NINGRD + 1 XMIN = MIN ( XMIN , X1(IX,IY) ) XMAX = MAX ( XMAX , X1(IX,IY) ) @@ -2516,7 +2455,8 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) IF ( FLTRI ) THEN DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XX(IX,IY) .EQ. UNDEF ) THEN + IF ( MAPSTA(IY,IX) .LE. 0 .OR. & + XX(IX,IY) .EQ. UNDEF ) THEN MXX(IX,IY) = MFILL MYY(IX,IY) = MFILL MXY(IX,IY) = MFILL @@ -2555,7 +2495,8 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) IF ( FLTWO .OR. FLDIR ) THEN DO IX=IX1, IXN DO IY=IY1, IYN - IF ( XX(IX,IY) .EQ. UNDEF ) THEN + IF ( MAPSTA(IY,IX) .LE. 0 .OR. & + XX(IX,IY) .EQ. UNDEF ) THEN MXX(IX,IY) = MFILL MYY(IX,IY) = MFILL ELSE @@ -2594,7 +2535,8 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) ELSE DO IX=IX1, IXN DO IY=IY1, IYN - IF ( X1(IX,IY) .EQ. UNDEF ) THEN + IF ( MAPSTA(IY,IX) .LE. 0 .OR. & + X1(IX,IY) .EQ. UNDEF ) THEN MX1(IX,IY) = MFILL ELSE MX1(IX,IY) = NINT(X1(IX,IY)/FSC) diff --git a/model/src/ww3_outp.F90 b/model/src/ww3_outp.F90 old mode 100644 new mode 100755 index 6d750687a..a95ec2e93 --- a/model/src/ww3_outp.F90 +++ b/model/src/ww3_outp.F90 @@ -1983,11 +1983,7 @@ SUBROUTINE W3EXPO END IF IF ( FLSRCE(3) ) THEN #ifdef W3_NL1 - IF (IQTPE.GT.0) THEN - CALL W3SNL1 ( A, CG, WNMEAN*DEPTH, XNL, DIA ) - ELSE - CALL W3SNLGQM ( A, CG, WN, DEPTH, XNL, DIA ) - END IF + CALL W3SNL1 ( A, CG, WNMEAN*DEPTH, XNL, DIA ) #endif #ifdef W3_NL2 CALL W3SNL2 ( A, CG, DEPTH, XNL, DIA ) diff --git a/model/src/ww3_prep.F90 b/model/src/ww3_prep.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_prnc.F90 b/model/src/ww3_prnc.F90 old mode 100644 new mode 100755 index e77bbd918..980b7553a --- a/model/src/ww3_prnc.F90 +++ b/model/src/ww3_prnc.F90 @@ -299,8 +299,7 @@ PROGRAM W3PRNC REAL, ALLOCATABLE :: XC(:,:), YC(:,:), AC(:,:), & DATA(:,:), XTEMP(:,:) ! - REAL, ALLOCATABLE, TARGET :: ALA(:,:), ALO(:,:) - REAL, POINTER :: PTR_ALA(:,:), PTR_ALO(:,:) + REAL, POINTER :: ALA(:,:), ALO(:,:) ! DOUBLE PRECISION :: REFJULDAY, CURJULDAY, STARTJULDAY, STPJULDAY ! @@ -1008,9 +1007,7 @@ PROGRAM W3PRNC ! ! ... create grid search utility ! - PTR_ALA => ALA - PTR_ALO => ALO - GSI = W3GSUC( .TRUE., FLAGLL, ICLO, PTR_ALO, PTR_ALA ) + GSI = W3GSUC( .TRUE., FLAGLL, ICLO, ALO, ALA ) ! ! ... construct Interpolation data ! @@ -1213,9 +1210,9 @@ PROGRAM W3PRNC ! ! ... read lat-lon data ! - IF ( ALLOCATED(ALA) ) THEN + IF ( ASSOCIATED(ALA) ) THEN DEALLOCATE ( ALA, ALO ) - NULLIFY ( PTR_ALA, PTR_ALO ) + NULLIFY ( ALA, ALO ) END IF ALLOCATE ( ALA(NXJ(J),NYJ(J)), ALO(NXJ(J),NYJ(J)) ) CALL INA2R (ALA, NXJ(J), NYJ(J), 1, NXJ(J), 1, NYJ(J),& @@ -2224,7 +2221,7 @@ PROGRAM W3PRNC END DO ! NTI ! DEALLOCATE(XC,YC,AC,XTEMP) - IF (ALLOCATED(ALA)) DEALLOCATE(ALA,ALO) + IF (ASSOCIATED(ALA)) DEALLOCATE(ALA,ALO) ! ! End loop over input fields !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/model/src/ww3_prtide.F90 b/model/src/ww3_prtide.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_sbs1.F90 b/model/src/ww3_sbs1.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_shel.F90 b/model/src/ww3_shel.F90 old mode 100644 new mode 100755 index ee3464f44..ac80d8fd4 --- a/model/src/ww3_shel.F90 +++ b/model/src/ww3_shel.F90 @@ -13,7 +13,11 @@ !> !> @author H. L. Tolman @date 22-Mar-2021 ! -PROGRAM W3SHEL +#ifdef W3_COAWST_MODEL + SUBROUTINE WW3_init (MyCOMM) +#else + PROGRAM W3SHEL +#endif !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -259,6 +263,9 @@ PROGRAM W3SHEL #ifdef W3_OASIS USE W3WDATMD, ONLY: TIME00, TIMEEND #endif +#ifdef W3_COAWST_MODEL + USE W3WDATMD, ONLY: TIMEEND +#endif #ifdef W3_NL5 USE W3WDATMD, ONLY: QI5TBEG #endif @@ -298,7 +305,10 @@ PROGRAM W3SHEL #ifdef W3_OASICM USE W3IGCMMD, ONLY: SND_FIELDS_TO_ICE #endif - +#ifdef W3_COAWST_MODEL + USE CWSTWVCP + USE MCT_COUPLER_PARAMS +#endif #ifdef W3_TIDE USE W3TIDEMD #endif @@ -329,7 +339,7 @@ PROGRAM W3SHEL NDSEN, IERR, J, I, ILOOP, IPTS, NPTS, & NDTNEW, MPI_COMM = -99, & FLAGTIDE, COUPL_COMM, IH, N_TOT - INTEGER :: NDSF(-7:9), NDS(15), NTRACE(2), NDT(7:9), & + INTEGER :: NDSF(-7:9), NDS(13), NTRACE(2), NDT(7:9), & TIME0(2), TIMEN(2), TTIME(2), TTT(2), & NH(-7:10), THO(2,-7:10,NHMAX), RCLD(7:9), & NODATA(7:9), ODAT(40), IPRT(6) = 0, & @@ -344,6 +354,10 @@ PROGRAM W3SHEL INTEGER :: CLKDT1(8), CLKDT2(8), CLKDT3(8) #ifdef W3_MPI INTEGER :: IERR_MPI +#endif +#ifdef W3_COAWST_MODEL + INTEGER :: COAWSTED, ccount + INTEGER :: MyCOMM #endif ! REAL :: FACTOR, DTTST, XX, YY, & @@ -436,6 +450,9 @@ PROGRAM W3SHEL #ifdef W3_OASIS OASISED=1 #endif +#ifdef W3_COAWST_MODEL + COAWSTED=1 +#endif #ifdef W3_PDLIB LPDLIB = .TRUE. #endif @@ -469,6 +486,9 @@ PROGRAM W3SHEL CALL CPL_OASIS_INIT(MPI_COMM) ELSE #endif +#ifdef W3_COAWST_MODEL + IF (COAWSTED.EQ.0) THEN +#endif #ifdef W3_OMPH ! For hybrid MPI-OpenMP specify required thread level. JGLi06Sep2019 IF( FLHYBR ) THEN @@ -484,6 +504,11 @@ PROGRAM W3SHEL #ifdef W3_MPI MPI_COMM = MPI_COMM_WORLD #endif +#ifdef W3_COAWST_MODEL + END IF + MPI_COMM = MyCOMM + WAV_COMM_WORLD = MyCOMM +#endif #ifdef W3_OASIS END IF #endif @@ -600,9 +625,6 @@ PROGRAM W3SHEL NDS(11) = 22 NDS(12) = 23 NDS(13) = 34 - NDS(14) = 36 - NDS(15) = 37 - ! NTRACE(1) = NDS(3) NTRACE(2) = 10 @@ -1730,6 +1752,9 @@ PROGRAM W3SHEL TIME00 = TIME0 TIMEEND = TIMEN #endif +#ifdef W3_COAWST_MODEL + TIMEEND = TIMEN +#endif #ifdef W3_NL5 QI5TBEG = TIME0 #endif @@ -1782,6 +1807,17 @@ PROGRAM W3SHEL TTIME(1) = 0 TTIME(2) = 0 DTTST = REAL ( ODAT(5*(J-1)+3) ) +!jcw if J=1, then DTTST above is the output time step for mean wave field params. +#ifdef W3_WAVES_OCEAN + IF (J.EQ.1) THEN + DTTST=MIN(DTTST,REAL(TI_OCN2WAV)) + END IF +#endif +#ifdef W3_AIR_WAVES + IF (J.EQ.1) THEN + DTTST=MIN(DTTST,REAL(TI_ATM2WAV)) + END IF +#endif CALL TICK21 ( TTIME , DTTST ) CALL STME21 ( TTIME , DTME21 ) IF ( ( ODAT(5*(J-1)+1) .NE. ODAT(5*(J-1)+4) .OR. & @@ -1952,6 +1988,14 @@ PROGRAM W3SHEL CALL CPL_OASIS_DEFINE(NDSO, FLDIN, FLDOUT) END IF #endif +#if defined W3_AIR_WAVES || defined W3_WAVES_OCEAN + CALL INIT_WVCP (1) + CALL INITIALIZE_WAV_ROUTERS +! +! do not do first couple here, wait til end of init in w3wavemd. +! ccount=0 +! CALL COAWST_CPL (ccount) +#endif !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2069,6 +2113,10 @@ PROGRAM W3SHEL DSEC21 (TFN(:,J), TIMEEND) .GT. 0.0 ) DTTST=0. ENDIF ENDIF +#endif +#ifdef W3_COAWST_MODEL + ELSE + IF (DSEC21 (TIME, TIMEEND) .GT. 0.0) DTTST=0. #endif END IF ! @@ -2247,6 +2295,11 @@ PROGRAM W3SHEL #ifdef W3_OASOCM IF (.NOT.FLAGSC(J)) ID_OASIS_TIME = -1 #endif +#ifdef W3_WAVES_OCEAN + TFN(1,J)=TIME0(1) + TFN(2,J)=TIME0(2) + CALL TICK21(TFN(:,J),REAL(TI_OCN2WAV)) +#else CALL W3FLDG ('READ', IDSTR(J), NDSF(J), & NDST, NDSEN, NX, NY, NX, NY, TIME0, TIMEN, & TTT, XXX, XXX, XXX, TLN, XXX, XXX, WLEV, & @@ -2255,6 +2308,7 @@ PROGRAM W3SHEL , COUPL_COMM & #endif ) +#endif #ifdef W3_TIDE END IF #endif @@ -2295,6 +2349,11 @@ PROGRAM W3SHEL #ifdef W3_OASOCM IF (.NOT.FLAGSC(J)) ID_OASIS_TIME = -1 #endif +#ifdef W3_WAVES_OCEAN + TFN(1,J)=TIME0(1) + TFN(2,J)=TIME0(2) + CALL TICK21(TFN(:,J),REAL(TI_OCN2WAV)) +#else CALL W3FLDG ('READ', IDSTR(J), NDSF(J), & NDST, NDSEN, NX, NY, NX, NY, TIME0, TIMEN, & TC0, CX0, CY0, XXX, TCN, CXN, CYN, XXX, & @@ -2303,6 +2362,7 @@ PROGRAM W3SHEL , COUPL_COMM & #endif ) +#endif #ifdef W3_TIDE END IF #endif @@ -2331,6 +2391,11 @@ PROGRAM W3SHEL #ifdef W3_OASACM IF (.NOT.FLAGSC(J)) ID_OASIS_TIME = -1 #endif +#ifdef W3_AIR_WAVES + TFN(1,J)=TIME0(1) + TFN(2,J)=TIME0(2) + CALL TICK21(TFN(:,J),REAL(TI_ATM2WAV)) +#else CALL W3FLDG ('READ', IDSTR(J), NDSF(J), & NDST, NDSEN, NX, NY, NX, NY, TIME0, TIMEN, & TW0, WX0, WY0, DT0, TWN, WXN, WYN, DTN, & @@ -2339,6 +2404,7 @@ PROGRAM W3SHEL , COUPL_COMM & #endif ) +#endif END IF ! ICE : ice conc. @@ -2719,9 +2785,20 @@ PROGRAM W3SHEL CALL CPL_OASIS_FINALIZE ELSE #endif + +#ifdef W3_COAWST_MODEL + IF (COAWSTED.EQ.0) THEN +#endif #ifdef W3_MPI CALL MPI_FINALIZE ( IERR_MPI ) #endif +#ifdef W3_COAWST_MODEL + END IF +#endif +#if defined W3_AIR_WAVES || defined W3_WAVES_OCEAN + CALL FINALIZE_WAV_COUPLING(1) +#endif + #ifdef W3_OASIS END IF #endif @@ -2921,4 +2998,9 @@ PROGRAM W3SHEL !/ !/ End of W3SHEL ----------------------------------------------------- / !/ -END PROGRAM W3SHEL +#ifdef W3_COAWST_MODEL + END SUBROUTINE WW3_init +#else + END PROGRAM W3SHEL +#endif + diff --git a/model/src/ww3_strt.F90 b/model/src/ww3_strt.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_systrk.F90 b/model/src/ww3_systrk.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_trck.F90 b/model/src/ww3_trck.F90 old mode 100644 new mode 100755 diff --git a/model/src/ww3_trnc.F90 b/model/src/ww3_trnc.F90 old mode 100644 new mode 100755 index ec69db4dc..b26d0d642 --- a/model/src/ww3_trnc.F90 +++ b/model/src/ww3_trnc.F90 @@ -47,7 +47,6 @@ PROGRAM W3TRNC ! ---------------------------------------------------------------- ! W3NMOD Subr. W3GDATMD Set number of model. ! W3NOUT Subr. W3ODATMD Set number of model for output. - ! W3IOGR Subr. W3IOGRMD Reading/writing model definition file. ! ---------------------------------------------------------------- ! ! 5. Called by : @@ -71,17 +70,13 @@ PROGRAM W3TRNC !/ ------------------------------------------------------------------- / USE CONSTANTS -#ifdef W3_NL1 - USE W3ADATMD, ONLY : W3NAUX, W3SETA -#endif - USE W3GDATMD, ONLY : W3NMOD, W3SETG, FLAGLL, XFR, GNAME + USE W3GDATMD, ONLY : W3NMOD, W3SETG, FLAGLL, XFR USE W3ODATMD, ONLY : W3NOUT, W3SETO, FNMPRE USE W3SERVMD, ONLY : ITRACE, NEXTLN, EXTCDE #ifdef W3_S USE W3SERVMD, ONLY : STRACE #endif USE W3TIMEMD - USE W3IOGRMD, ONLY: W3IOGR ! USE W3ODATMD, ONLY: NDSO, NDSE ! @@ -96,7 +91,7 @@ PROGRAM W3TRNC TYPE(NML_TRACK_T) :: NML_TRACK TYPE(NML_FILE_T) :: NML_FILE ! - INTEGER :: NDSI, NDSINP, NDSM, & + INTEGER :: NDSI, NDSINP, & NDSOUT, NDSTRC, NTRACE, & NSPEC, IERR, MK, MTH, IT, & ILOC, ISPEC, S3, IOUT, & @@ -134,17 +129,12 @@ PROGRAM W3TRNC ! CALL W3NMOD ( 1, 6, 6 ) CALL W3SETG ( 1, 6, 6 ) -#ifdef W3_NL1 - CALL W3NAUX ( 6, 6 ) - CALL W3SETA ( 1, 6, 6 ) -#endif CALL W3NOUT ( 6, 6 ) CALL W3SETO ( 1, 6, 6 ) ! ! 1. IO set-up. ! NDSI = 10 - NDSM = 20 NDSINP = 11 NDSOUT = 51 ! @@ -158,16 +148,11 @@ PROGRAM W3TRNC ! WRITE (NDSO,900) ! - !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! 2. Read model definition file. - ! - CALL W3IOGR ( 'READ', NDSM ) - WRITE (NDSO,920) GNAME ! !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! 3. Read requests from input file. + ! 2. Read requests from input file. ! ! @@ -178,13 +163,13 @@ PROGRAM W3TRNC ! Read namelist CALL W3NMLTRNC (NDSI, TRIM(FNMPRE)//'ww3_trnc.nml', NML_TRACK, NML_FILE, IERR) - ! 3.1 Time setup IDTIME, DTREQ, NOUT + ! 2.1 Time setup IDTIME, DTREQ, NOUT READ(NML_TRACK%TIMESTRIDE, *) DTREQ READ(NML_TRACK%TIMECOUNT, *) NOUT READ(NML_TRACK%TIMESTART, *) TOUT(1), TOUT(2) - ! 3.2 Output type + ! 2.2 Output type NCTYPE = NML_FILE%NETCDF FILEPREFIX = NML_FILE%PREFIX S3 = NML_TRACK%TIMESPLIT @@ -204,12 +189,12 @@ PROGRAM W3TRNC WRITE (NDSO,901) COMSTR - ! 3.1 Time setup IDTIME, DTREQ, NOUT + ! 2.1 Time setup IDTIME, DTREQ, NOUT CALL NEXTLN ( COMSTR , NDSI , NDSE ) READ (NDSI,*,END=806,ERR=807) TOUT, DTREQ, NOUT - ! 3.2 Output type + ! 2.2 Output type CALL NEXTLN ( COMSTR , NDSI , NDSE ) READ (NDSI,*,END=806,ERR=807) NCTYPE CALL NEXTLN ( COMSTR , NDSI , NDSE ) @@ -223,7 +208,7 @@ PROGRAM W3TRNC - ! 3.3 Time setup IDTIME, DTREQ, NOUT + ! 2.1 Time setup IDTIME, DTREQ, NOUT DTREQ = MAX ( 0. , DTREQ ) IF ( DTREQ.EQ.0. ) NOUT = 1 NOUT = MAX ( 1 , NOUT ) @@ -242,7 +227,7 @@ PROGRAM W3TRNC WRITE (NDSO,941) IDTIME, NOUT - ! 3.4 Output type + ! 2.2 Output type IF ( NCTYPE.LT.3 .OR. NCTYPE.GT.4 ) THEN WRITE (NDSE,1010) NCTYPE CALL EXTCDE ( 1 ) @@ -254,7 +239,7 @@ PROGRAM W3TRNC ! !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! 4. Check consistency with input file and track_o.ww3 + ! 3. Check consistency with input file and track_o.ww3 ! OPEN (NDSINP,FILE=TRIM(FNMPRE)//'track_o.ww3',form='UNFORMATTED', convert=file_endian, & STATUS='OLD',ERR=800,IOSTAT=IERR) @@ -277,7 +262,7 @@ PROGRAM W3TRNC ! !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! 5. Time management. + ! 4. Time management. ! IOUT = 0 NCID = 0 @@ -286,7 +271,7 @@ PROGRAM W3TRNC BACKSPACE (NDSINP) - ! 5.1 Loops on track_o.ww3 to read the time and data + ! 4.1 Loops on track_o.ww3 to read the time and data DO DTEST = DSEC21 ( TIME , TOUT ) @@ -325,17 +310,17 @@ PROGRAM W3TRNC END IF - ! 5.1.1 Increments the global time counter IOUT + ! 4.1.1 Increments the global time counter IOUT IOUT = IOUT + 1 CALL STME21 ( TOUT , IDTIME ) WRITE (NDSO,971) IDTIME - ! 5.1.2 Processes the variable value for the time step IOUT + ! 4.1.2 Processes the variable value for the time step IOUT CALL W3EXNC ( FILEPREFIX, NCTYPE, NCID, S3, STRSTOPDATE, MK, MTH ) - ! 5.1.3 Defines the stop date + ! 4.1.3 Defines the stop date CALL T2D(TOUT,STOPDATE,IERR) WRITE(STRSTOPDATE,'(I4.4,A,4(I2.2,A),I2.2)') STOPDATE(1),'-',STOPDATE(2), & '-',STOPDATE(3),' ',STOPDATE(5),':',STOPDATE(6),':',STOPDATE(7) @@ -346,7 +331,7 @@ PROGRAM W3TRNC 444 CONTINUE - ! 5.2 Closes the netCDF file + ! 4.2 Closes the netCDF file IF (NCID.NE.0) THEN IRET = NF90_REDEF(NCID) CALL CHECK_ERR(IRET) @@ -398,8 +383,6 @@ PROGRAM W3TRNC 902 FORMAT ( ' Spectral grid size : ',I3,' by ',I3// & ' Opening file : '/ & ' -----------------------------------------------') -920 FORMAT ( ' Grid name : ',A/) - ! 940 FORMAT (/' Output time data : '/ & ' --------------------------------------------------'/ & ' First time : ',A) diff --git a/model/src/ww3_uprstr.F90 b/model/src/ww3_uprstr.F90 old mode 100644 new mode 100755 diff --git a/model/tools/README.md b/model/tools/README.md old mode 100644 new mode 100755 diff --git a/model/tools/bash/ww3_multi_inp2nml.sh b/model/tools/bash/ww3_multi_inp2nml.sh index c616282d3..aa9afd497 100755 --- a/model/tools/bash/ww3_multi_inp2nml.sh +++ b/model/tools/bash/ww3_multi_inp2nml.sh @@ -705,13 +705,13 @@ cat >> $nmlfile << EOF ! ! * the detailed list of field names is given in model/nml/ww3_shel.nml : ! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 -! HS LM T02 T0M1 T01 FP DIR SPR DP HIG MXE MXES MXH MXHC SDMH SDMHC WBT TP WNM +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG ! EF TH1M STH1M TH2M STH2M WN ! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR ! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS ! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC USP TOC ! ABR UBR BED FBB TBB -! MSS MSC MSD MCD QP QKK +! MSS MSC WL02 AXT AYT AXY ! DTD FC CFX CFD CFK ! U1 U2 ! diff --git a/model/tools/bash/ww3_shel_inp2nml.sh b/model/tools/bash/ww3_shel_inp2nml.sh index 619002aa8..7798abf20 100755 --- a/model/tools/bash/ww3_shel_inp2nml.sh +++ b/model/tools/bash/ww3_shel_inp2nml.sh @@ -878,7 +878,7 @@ cat >> $nmlfile << EOF ! T T 2 1 HS HS Wave height. ! T T 2 2 WLM LM Mean wave length. ! T T 2 3 T02 T02 Mean wave period (Tm0,2). -! T T 2 4 TM10 T0M1 Mean wave period (Tm-1,0). +! T T 2 4 TM10 TM10 Mean wave period (Tm-1,0). ! T T 2 5 T01 T01 Mean wave period (Tm0,1). ! T T 2 6 FP0 FP Peak frequency. ! T T 2 7 THM DIR Mean wave direction. @@ -893,7 +893,6 @@ cat >> $nmlfile << EOF ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT ! F F 2 18 FP0 TP Peak period (from peak freq) -! F F 2 19 WNMEAN WNM Mean wavenumber ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -913,7 +912,7 @@ cat >> $nmlfile << EOF ! T T 4 5 PSI PSPR Partitioned mean directional spread. ! T T 4 6 PWS PWS Partitioned wind sea fraction. ! T T 4 7 PTHP0 PDP Peak wave direction of partition. -! T T 4 8 PQP PQP Goda peakedness parameter of partition. +! T T 4 8 PQP PQP Goda peakdedness parameter of partition. ! T T 4 9 PPE PPE JONSWAP peak enhancement factor of partition. ! T T 4 10 PGW PGW Gaussian frequency width of partition. ! T T 4 11 PSW PSW Spectral width of partition. @@ -966,10 +965,10 @@ cat >> $nmlfile << EOF ! ------------------------------------------------- ! F F 8 1 MSS[X,Y] MSS Mean square slopes ! F F 8 2 MSC[X,Y] MSC Spectral level at high frequency tail -! F F 8 3 MSSD MSD Slope direction -! F F 8 4 MSCD MCD Tail slope direction -! F F 8 5 QP QP Goda peakedness parameter -! F F 8 6 QKK QKK Wavenumber peakedness +! F F 8 3 WL02[X,Y] WL02 East/X North/Y mean wavelength compon +! F F 8 4 ALPXT AXT Correl sea surface gradients (x,t) +! F F 8 5 ALPYT AYT Correl sea surface gradients (y,t) +! F F 8 6 ALPXY AXY Correl sea surface gradients (x,y) ! ------------------------------------------------- ! 9 Numerical diagnostics ! ------------------------------------------------- diff --git a/regtests/bin/matrix.base b/regtests/bin/matrix.base index 23f8385b1..a273372a9 100755 --- a/regtests/bin/matrix.base +++ b/regtests/bin/matrix.base @@ -31,7 +31,7 @@ prop1D prop2D time fetch hur1mg \ multi01 multi02 multi03 multi04 multi05 \ hybd shwtr unstr pdlib smcgr rtd mudice infgrv \ - lmp uost assim calendar confignc oasis \ + uost assim calendar confignc oasis \ esmf ufs ufscoarse rstrt_b4b nth_b4b npl_b4b grib \ multi06 multi07 multi08 multi09 do @@ -74,7 +74,6 @@ echo " echo ' Growth curves (fetch) : $fetch'" >> matrix.head echo " echo ' Shallow water tests : $shwtr'" >> matrix.head echo " echo ' Unstructured grid tests : $unstr'" >> matrix.head - echo " echo ' Langmuir mixing parameterization : $lmp'" >> matrix.head echo " echo ' SMC grid tests : $smcgr'" >> matrix.head echo " echo ' Rotated pole tests : $rtd'" >> matrix.head echo " echo ' Hurricane with one moving grid : $hur1mg'" >> matrix.head @@ -172,7 +171,7 @@ echo "$rtst -s PR1 -w work_PR1_f -m grdset_f $ww3 mww3_test_04" >> matrix.body echo "$rtst -s PR1 -w work_PR1_g -m grdset_g $ww3 mww3_test_04" >> matrix.body fi - + fi if [ "$dist" = 'y' ] @@ -225,7 +224,7 @@ echo "$rtst -s PR1_MPI -w work_PR1_MPI_d -m grdset_d -f -p $mpi -n $np $ww3 mww3_test_04" >> matrix.body echo "$rtst -s PR1_MPI -w work_PR1_MPI_e -m grdset_e -f -p $mpi -n $np $ww3 mww3_test_04" >> matrix.body fi - + fi if [ "$prop2D" = 'y' ] && [ "$dist" = 'y' ] @@ -690,7 +689,6 @@ echo "$rtst -s ST0 -w work_ST0 $ww3 ww3_tp2.6" >> matrix.body echo "$rtst -s ST0 -w work_ST0 $ww3 ww3_tp2.7" >> matrix.body echo "$rtst -s ST4 -w work_ST4 $ww3 ww3_tp2.6" >> matrix.body - echo "$rtst -s ST4_ASCII -w work_ST4_ASCII $ww3 ww3_tp2.6" >> matrix.body fi if [ "$prop1D" = 'y' ] @@ -814,13 +812,6 @@ echo "$rtst -s MPI -w work_MPI_5km -g 5km -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body echo "$rtst -s TIDE_MPI -w work_TIDE_MPI -f -p $mpi -n $np $ww3 ww3_tp2.18" >> matrix.body - - if [ "$lmp" == "y" ]; # Langmuir mixing parameterization - then - echo ' ' >> matrix.body - echo "$rtst -w work_LMPN -f -p $mpi -n $np $ww3 ww3_tp2.22" >> matrix.body - echo "$rtst -g sdtail -w work_LMPN_SDTAIL -f -p $mpi -n $np $ww3 ww3_tp2.22" >> matrix.body - fi fi if [ "$multi01" = 'y' ] @@ -920,8 +911,6 @@ echo "$rtst -s ST4_TSA -w work_ST4_TSA $ww3 ww3_ts1" >> matrix.body echo "$rtst -s ST6 -w work_ST6 $ww3 ww3_ts1" >> matrix.body echo "$rtst -w work_NL5 -i input_nl5_matrix $ww3 ww3_ts1" >> matrix.body - echo "$rtst -g ST4_T707 -w work_T707GQM -i input_10ms -N $ww3 ww3_ts1" >> matrix.body - echo "$rtst -g ST4_T713 -w work_T713GQM -i input_10ms -N $ww3 ww3_ts1" >> matrix.body fi # fetch limited growth, no switch sharing here @@ -996,9 +985,9 @@ if [ "$dist" = 'y' ] then -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1009,7 +998,7 @@ echo "$rtst -s ST1_PR1_MPI -w work_ST1_PR1_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1020,7 +1009,7 @@ echo "$rtst -s ST1_PR2_UQ_MPI -w work_ST1_PR2_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1031,7 +1020,7 @@ echo "$rtst -s ST1_PR2_UNO_MPI -w work_ST1_PR2_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1042,7 +1031,7 @@ echo "$rtst -s ST1_PR3_UQ_MPI -w work_ST1_PR3_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1052,9 +1041,9 @@ then echo "$rtst -s ST1_PR3_UNO_MPI -w work_ST1_PR3_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1065,7 +1054,7 @@ echo "$rtst -s ST2_PR1_MPI -w work_ST2_PR1_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1076,7 +1065,7 @@ echo "$rtst -s ST2_PR2_UQ_MPI -w work_ST2_PR2_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1087,7 +1076,7 @@ echo "$rtst -s ST2_PR2_UNO_MPI -w work_ST2_PR2_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1098,7 +1087,7 @@ echo "$rtst -s ST2_PR3_UQ_MPI -w work_ST2_PR3_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1108,9 +1097,9 @@ then echo "$rtst -s ST2_PR3_UNO_MPI -w work_ST2_PR3_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1121,7 +1110,7 @@ echo "$rtst -s ST3_PR1_MPI -w work_ST3_PR1_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1132,7 +1121,7 @@ echo "$rtst -s ST3_PR2_UQ_MPI -w work_ST3_PR2_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1143,7 +1132,7 @@ echo "$rtst -s ST3_PR2_UNO_MPI -w work_ST3_PR2_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1154,7 +1143,7 @@ echo "$rtst -s ST3_PR3_UQ_MPI -w work_ST3_PR3_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1164,9 +1153,9 @@ then echo "$rtst -s ST3_PR3_UNO_MPI -w work_ST3_PR3_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1179,7 +1168,7 @@ echo "$rtst -s ST4_PR1_MPI -w work_ST4_PR1_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1190,7 +1179,7 @@ echo "$rtst -s ST4_PR2_UQ_MPI -w work_ST4_PR2_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1201,7 +1190,7 @@ echo "$rtst -s ST4_PR2_UNO_MPI -w work_ST4_PR2_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1212,7 +1201,7 @@ echo "$rtst -s ST4_PR3_UQ_MPI -w work_ST4_PR3_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1222,9 +1211,9 @@ then echo "$rtst -s ST4_PR3_UNO_MPI -w work_ST4_PR3_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1235,7 +1224,7 @@ echo "$rtst -s ST6_PR1_MPI -w work_ST6_PR1_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1246,7 +1235,7 @@ echo "$rtst -s ST6_PR2_UQ_MPI -w work_ST6_PR2_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1257,7 +1246,7 @@ echo "$rtst -s ST6_PR2_UNO_MPI -w work_ST6_PR2_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1268,7 +1257,7 @@ echo "$rtst -s ST6_PR3_UQ_MPI -w work_ST6_PR3_UQ_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1279,7 +1268,7 @@ echo "$rtst -s ST6_PR3_UNO_MPI -w work_ST6_PR3_UNO_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - fi @@ -1289,9 +1278,9 @@ if [ "$hybd" = 'y' ] then -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1302,7 +1291,7 @@ echo "$rtst -s ST1_PR1_MPI_OMPH -w work_ST1_PR1_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1313,7 +1302,7 @@ echo "$rtst -s ST1_PR2_UQ_MPI_OMPH -w work_ST1_PR2_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1324,7 +1313,7 @@ echo "$rtst -s ST1_PR2_UNO_MPI_OMPH -w work_ST1_PR2_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1335,7 +1324,7 @@ echo "$rtst -s ST1_PR3_UQ_MPI_OMPH -w work_ST1_PR3_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1345,9 +1334,9 @@ then echo "$rtst -s ST1_PR3_UNO_MPI_OMPH -w work_ST1_PR3_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1358,7 +1347,7 @@ echo "$rtst -s ST2_PR1_MPI_OMPH -w work_ST2_PR1_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1369,7 +1358,7 @@ echo "$rtst -s ST2_PR2_UQ_MPI_OMPH -w work_ST2_PR2_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1380,7 +1369,7 @@ echo "$rtst -s ST2_PR2_UNO_MPI_OMPH -w work_ST2_PR2_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1391,7 +1380,7 @@ echo "$rtst -s ST2_PR3_UQ_MPI_OMPH -w work_ST2_PR3_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1401,9 +1390,9 @@ then echo "$rtst -s ST2_PR3_UNO_MPI_OMPH -w work_ST2_PR3_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1414,7 +1403,7 @@ echo "$rtst -s ST3_PR1_MPI_OMPH -w work_ST3_PR1_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1425,7 +1414,7 @@ echo "$rtst -s ST3_PR2_UQ_MPI_OMPH -w work_ST3_PR2_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1436,7 +1425,7 @@ echo "$rtst -s ST3_PR2_UNO_MPI_OMPH -w work_ST3_PR2_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1447,7 +1436,7 @@ echo "$rtst -s ST3_PR3_UQ_MPI_OMPH -w work_ST3_PR3_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1457,9 +1446,9 @@ then echo "$rtst -s ST3_PR3_UNO_MPI_OMPH -w work_ST3_PR3_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1470,7 +1459,7 @@ echo "$rtst -s ST4_PR1_MPI_OMPH -w work_ST4_PR1_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1481,7 +1470,7 @@ echo "$rtst -s ST4_PR2_UQ_MPI_OMPH -w work_ST4_PR2_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1492,7 +1481,7 @@ echo "$rtst -s ST4_PR2_UNO_MPI_OMPH -w work_ST4_PR2_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1503,7 +1492,7 @@ echo "$rtst -s ST4_PR3_UQ_MPI_OMPH -w work_ST4_PR3_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1513,9 +1502,9 @@ then echo "$rtst -s ST4_PR3_UNO_MPI_OMPH -w work_ST4_PR3_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1526,7 +1515,7 @@ echo "$rtst -s ST6_PR1_MPI_OMPH -w work_ST6_PR1_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1537,7 +1526,7 @@ echo "$rtst -s ST6_PR2_UQ_MPI_OMPH -w work_ST6_PR2_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1548,7 +1537,7 @@ echo "$rtst -s ST6_PR2_UNO_MPI_OMPH -w work_ST6_PR2_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1559,7 +1548,7 @@ echo "$rtst -s ST6_PR3_UQ_MPI_OMPH -w work_ST6_PR3_UQ_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1570,7 +1559,7 @@ echo "$rtst -s ST6_PR3_UNO_MPI_OMPH -w work_ST6_PR3_UNO_MPI_OMPH -m grdset_a -f -p $mpi -n $nr -t $nth $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - fi # Moving grid cases for OpenMP, ww3_ts3 and mww3_test_05 share switches @@ -1579,9 +1568,9 @@ if [ "$omp" = 'y' ] then -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1592,7 +1581,7 @@ echo "$rtst -s ST1_PR1_OMP -w work_ST1_PR1_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1603,7 +1592,7 @@ echo "$rtst -s ST1_PR2_UQ_OMP -w work_ST1_PR2_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1614,7 +1603,7 @@ echo "$rtst -s ST1_PR2_UNO_OMP -w work_ST1_PR2_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1625,7 +1614,7 @@ echo "$rtst -s ST1_PR3_UQ_OMP -w work_ST1_PR3_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1635,9 +1624,9 @@ then echo "$rtst -s ST1_PR3_UNO_OMP -w work_ST1_PR3_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1648,7 +1637,7 @@ echo "$rtst -s ST2_PR1_OMP -w work_ST2_PR1_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1659,7 +1648,7 @@ echo "$rtst -s ST2_PR2_UQ_OMP -w work_ST2_PR2_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1670,7 +1659,7 @@ echo "$rtst -s ST2_PR2_UNO_OMP -w work_ST2_PR2_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1681,7 +1670,7 @@ echo "$rtst -s ST2_PR3_UQ_OMP -w work_ST2_PR3_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1691,9 +1680,9 @@ then echo "$rtst -s ST2_PR3_UNO_OMP -w work_ST2_PR3_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1704,7 +1693,7 @@ echo "$rtst -s ST3_PR1_OMP -w work_ST3_PR1_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1715,7 +1704,7 @@ echo "$rtst -s ST3_PR2_UQ_OMP -w work_ST3_PR2_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1726,7 +1715,7 @@ echo "$rtst -s ST3_PR2_UNO_OMP -w work_ST3_PR2_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1737,7 +1726,7 @@ echo "$rtst -s ST3_PR3_UQ_OMP -w work_ST3_PR3_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1747,9 +1736,9 @@ then echo "$rtst -s ST3_PR3_UNO_OMP -w work_ST3_PR3_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1760,7 +1749,7 @@ echo "$rtst -s ST4_PR1_OMP -w work_ST4_PR1_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1771,7 +1760,7 @@ echo "$rtst -s ST4_PR2_UQ_OMP -w work_ST4_PR2_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1782,7 +1771,7 @@ echo "$rtst -s ST4_PR2_UNO_OMP -w work_ST4_PR2_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1793,7 +1782,7 @@ echo "$rtst -s ST4_PR3_UQ_OMP -w work_ST4_PR3_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1803,9 +1792,9 @@ then echo "$rtst -s ST4_PR3_UNO_OMP -w work_ST4_PR3_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1816,7 +1805,7 @@ echo "$rtst -s ST6_PR1_OMP -w work_ST6_PR1_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1827,7 +1816,7 @@ echo "$rtst -s ST6_PR2_UQ_OMP -w work_ST6_PR2_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1838,7 +1827,7 @@ echo "$rtst -s ST6_PR2_UNO_OMP -w work_ST6_PR2_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1849,7 +1838,7 @@ echo "$rtst -s ST6_PR3_UQ_OMP -w work_ST6_PR3_UQ_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi - if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then + if [ "$hur1mg" = 'y' ] || [ "$multi05" = 'y' ] ; then echo ' ' >> matrix.body ; fi if [ "$hur1mg" = 'y' ] then @@ -1859,13 +1848,13 @@ then echo "$rtst -s ST6_PR3_UNO_OMP -w work_ST6_PR3_UNO_OMP -m grdset_a -f -O -n $np $ww3 mww3_test_05" >> matrix.body fi -# - - - - - - - - - - - - +# - - - - - - - - - - - - fi # Second harmonic test case - if [ "$infgrv" = 'y' ] && [ "$shrd" = 'y' ] + if [ "$infgrv" = 'y' ] && [ "$shrd" = 'y' ] then echo ' ' >> matrix.body echo "$rtst $ww3 -w work_IG1 ww3_tig1.1" >> matrix.body @@ -1896,7 +1885,6 @@ then echo ' ' >> matrix.body echo "$rtst -s MPI -w work_MPI -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_09" >> matrix.body - echo "$rtst -s MPI_ASCII -w work_MPI_ASCII -m grdset_a -f -p $mpi -n $np $ww3 mww3_test_09" >> matrix.body fi # Rotated pole grid cases, (ww3_tp2.11 MPI only if requested) @@ -1986,7 +1974,7 @@ echo "$rtst -s IC1IS2 -w work_IC1IS2_1000 -g 1000m $ww3 ww3_tic1.4" >> matrix.body echo "$rtst -s IC2IS2 -w work_IC2IS2_IC2b -g IC2b_1000m $ww3 ww3_tic1.4" >> matrix.body echo "$rtst -s IC2IS2 -w work_IC2IS2_IC2d -g IC2d_1000m $ww3 ww3_tic1.4" >> matrix.body - echo "$rtst -s IC2IS2 -w work_IC2IS2scat -g scat $ww3 ww3_tic2.3" >> matrix.body + echo "$rtst -s IC2IS2 -w work_IC2IS2scat -g scat $ww3 ww3_tic2.3" >> matrix.body echo "$rtst -s IC2IS2 -w work_IC2IS2creep -g creepOnly $ww3 ww3_tic2.3" >> matrix.body echo "$rtst -s IC2IS2 -w work_IC2IS2dissip -g dissipOnly $ww3 ww3_tic2.3" >> matrix.body fi @@ -2018,7 +2006,7 @@ echo "$rtst -s MPI -s NO_PDLIB -w work_ma -m grdset_a -f -p $mpi -n $np $ww3 ww3_tp2.17" >> matrix.body echo "$rtst -s MPI -s PDLIB -w work_b -g b -f -p $mpi -n $np $ww3 ww3_tp2.17" >> matrix.body echo "$rtst -s MPI -s PDLIB -w work_c -g c -f -p $mpi -n $np $ww3 ww3_tp2.17" >> matrix.body - echo "$rtst -s MPI -s PDLIB -w work_pdlib -g pdlib -f -p $mpi -n $np $ww3 ww3_tp2.6" >> matrix.body + echo "$rtst -s MPI -s PDLIB -w work_pdlib -g pdlib -f -p $mpi -n $np $ww3 ww3_tp2.6" >> matrix.body echo "$rtst -s MPI -s PDLIB -w work_mb -m grdset_b -f -p $mpi -n $np $ww3 ww3_tp2.17" >> matrix.body echo "$rtst -s MPI -s PDLIB -w work_mc -m grdset_c -f -p $mpi -n $np $ww3 ww3_tp2.17" >> matrix.body if [ "$rstrt_b4b" = 'y' ] @@ -2035,7 +2023,7 @@ fi # unstructured grid with PDLIB for domain decomposition and implicit solver, Neumann Bnd, depth breaking & triad interaction ST - if [ "$pdlib" = 'y' ] && [ "$dist" = 'y' ] + if [ "$pdlib" = 'y' ] && [ "$dist" = 'y' ] then echo ' ' >> matrix.body echo "$rtst -s MPI -s PDLIB -w work_1A_a -f -g a -p $mpi -n $np -o netcdf -i input_Case1A $ww3 ww3_tp2.19" >> matrix.body @@ -2044,23 +2032,23 @@ fi - #Unresolved Obstacles Source Term (UOST) - if [ "$uost" = 'y' ] + #Unresolved Obstacles Source Term (UOST) + if [ "$uost" = 'y' ] then echo ' ' >> matrix.body if [ "$dist" = 'y' ] - then + then echo "$rtst -s MPI -w work_rg_shel_MPI -i input_rg_shel -f -p $mpi -n $np $ww3 ww3_ts4" >> matrix.body echo "$rtst -s MPI -w work_rg_multi_MPI -i input_rg_multi -m grdset -f -p $mpi -n $np $ww3 ww3_ts4" >> matrix.body echo "$rtst -s MPI -w work_ug_MPI -i input_ug -f -p $mpi -n $np $ww3 ww3_ts4" >> matrix.body - else + else echo "$rtst -w work_rg_shel -i input_rg_shel $ww3 ww3_ts4" >> matrix.body echo "$rtst -w work_rg_multi -i input_rg_multi -m grdset $ww3 ww3_ts4" >> matrix.body echo "$rtst -w work_ug -i input_ug $ww3 ww3_ts4" >> matrix.body fi fi - # Global unstructured grid and Unresolved Obstacles Source Term (UOST) + # Global unstructured grid and Unresolved Obstacles Source Term (UOST) if [ "$uost" = 'y' ] && [ "$dist" = 'y' ] then echo ' ' >> matrix.body @@ -2074,10 +2062,7 @@ fi fi - - - - #Test of updating the restart spectra + #Test of updating the restart spectra if [ "$assim" = 'y' ] then echo ' ' >> matrix.body @@ -2097,7 +2082,7 @@ echo "$rtst -s ST4 -w work_UPD6_U_cap -i input_UPD6_U_cap $ww3 ww3_ta1" >> matrix.body fi - #Test of atmosphere, ocean, and ice coupling using OASIS + #Test of atmosphere, ocean, and ice coupling using OASIS if [ "$oasis" = 'y' ] && [ "$dist" = 'y' ] then echo ' ' >> matrix.body @@ -2167,13 +2152,11 @@ # Global unstr case # Domain Decomposition Explicit fi - if [ "$ufs" = 'y' ] && [ "$pdlib" = 'y' ] && [ "$dist" = 'y' ]; then echo "$rtst -s MPI -s PDLIB -i input_unstr -w work_unstr_a -g a -f -p $mpi -n $np $ww3 ww3_ufs1.1" >> matrix.body # Domain Decomposition Block Explicit echo "$rtst -s MPI -s PDLIB -i input_unstr -w work_unstr_b -g b -f -p $mpi -n $np $ww3 ww3_ufs1.1" >> matrix.body # Domain Decomposition Implicit echo "$rtst -s MPI -s PDLIB -i input_unstr -w work_unstr_c -g c -f -p $mpi -n $np $ww3 ww3_ufs1.1" >> matrix.body - fi #Test of UFS applications with ww3_multi_esmf and grib2 output if [ "$ufs" = 'y' ] && [ "$esmf" = 'y' ] && [ "$grib" = 'y' ] @@ -2221,15 +2204,15 @@ fi fi - #Test gint for restarts + #Test gint for restarts if [ "$ufs" = 'y' ] && [ "$grib" = 'y' ] then - echo ' ' >> matrix.body + echo ' ' >> matrix.body echo "$rtst -s MPI_OMPH -w work_c -m grdset_c -f -p $mpi -n $npl -t $nth1 $ww3 ww3_ufs1.2" >> matrix.body echo "mkdir -p ww3_ufs1.2/work_l" >> matrix.body echo "cp ww3_ufs1.2/work_c/restart.hafsl ww3_ufs1.2/work_l/restart.hafsl" >> matrix.body echo "$rtst -s MPI_OMPH -w work_l -m grdset_l -f -p $mpi -n $npl -t $nth1 $ww3 ww3_ufs1.2" >> matrix.body - fi + fi #GEFSv12 setup with ww3_multi and grib2 output diff --git a/regtests/bin/matrix.comp b/regtests/bin/matrix.comp index 0d70b1b7b..cc3ecf20a 100755 --- a/regtests/bin/matrix.comp +++ b/regtests/bin/matrix.comp @@ -5,8 +5,8 @@ # Intended for interactive running only. # # # # Hendrik L. Tolman # -# Updated by Yukino Nagai # -# June 2017 # +# Updated by Yukino Nagai # +# June 2017 # # # # Copyright 2013 National Weather Service (NWS), # # National Oceanic and Atmospheric Administration. All rights # @@ -17,24 +17,6 @@ # This script takes in one argument: the name of a test directory or 'all' # # 1. Set up - -function isbinary { - # Check if file is binary [or text] - # - # Uses `file` command to check if a file is binary or text by inspecting - # the MIME type of file. - # - # `file -i ` will return `text/` if file is a text file. - # Anything else can be considered a binary file. - # - # If your version of `file` does not accept the -i or --mime flag, you - # can also just run `file` with no flags and use `grep -i text`. - # - # The mime checking version is a bit more robust though. - - file -i $1 | grep -vq "text/" -} - # 1.a Computer/ user dependent set up if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] @@ -172,7 +154,7 @@ function isbinary { if [[ -d $file ]]; then if [[ $file == build* ]] || [[ $file == exe* ]] || [[ $file == *oasis3-mct* ]] || [[ $file == toy* ]]; then - : # skip + echo "do not compare build or exe directories $file" else #add files: files_dir=`ls $file` @@ -186,6 +168,9 @@ function isbinary { fi done + #Generate list of binary files in the directory + binaryfiles=`grep . -r * | grep 'Binary file' | sed -e "s/^Binary file //" -e "s/ matches$//"` + #Generate list of files to skip skipfiles="ww3_shel.out ww3_multi.out prf.*.mww3 finished ww3_systrk.out gmon.out time_count.txt oasis_make.out oasis_clean.out toy_model toy_make.out toy_clean.out build.log" @@ -201,7 +186,7 @@ function isbinary { if [[ -d $file ]]; then if [[ $file == build* ]] || [[ $file == exe* ]] || [[ $file == *oasis3-mct* ]] || [[ $file == toy* ]]; then - : # skip + echo "do not compare build or exe directories $file" else #add files: files_dir=`ls $file` @@ -242,7 +227,7 @@ function isbinary { elif [[ $file == log.* ]] || [[ $file == "output.ww3" ]] then filetype="log" - elif isbinary $file + elif [[ $binaryfiles =~ (^|[[:space:]])"$file"($|[[:space:]]) ]] then filetype="binary" else diff --git a/regtests/bin/matrix_cmake_datarmor b/regtests/bin/matrix_cmake_datarmor index 7728f6e1f..f8ffaaa63 100755 --- a/regtests/bin/matrix_cmake_datarmor +++ b/regtests/bin/matrix_cmake_datarmor @@ -27,7 +27,7 @@ usage () { cat 2>&1 << EOF -Usage: $myname model_dir +Usage: $myname model_dir Required: model_dir : path to model dir of WW3 source EOF @@ -51,7 +51,7 @@ main_dir="`cd $main_dir 1>/dev/null 2>&1 && pwd`" # 1. Set up - + export np='28' #number of mpi tasks export npl='28' #number of mpi tasks for ufs applications and large setups export npl1='20' #number of mpi tasks for ufs/large setups (b4b check) @@ -112,7 +112,6 @@ main_dir="`cd $main_dir 1>/dev/null 2>&1 && pwd`" echo " export NETCDF_CONFIG=/home/datawork-wave/NETCDF2019/${COMP}/bin/nc-config" >> matrix.head echo " export NetCDF_ROOT=/home/datawork-wave/NETCDF2019/${COMP}" >> matrix.head echo " export METIS_PATH=/home/datawork-wave/PARMETIS2019/${COMP}" >> matrix.head - echo " export SCOTCH_PATH=/home/datawork-wave/LIB/SCOTCH/v7.0.3/${COMP}" >> matrix.head echo " export WW3_PARCOMPN=4" >> matrix.head echo " export G2_LIB4=/home/datawork-wave/NCEPLIBS/${COMP}/g2-3.4.5/lib64/libg2_4.a" >> matrix.head echo " export BACIO_LIB4=/home/datawork-wave/NCEPLIBS/${COMP}/bacio-2.4.1/lib/libbacio_4.a" >> matrix.head @@ -129,7 +128,7 @@ main_dir="`cd $main_dir 1>/dev/null 2>&1 && pwd`" export mpi='$MPI_LAUNCH' # Compile option - opt="-f -N -S -T -o both" + opt="-f -N -S -T" # Base run_test command line export rtst="./bin/run_cmake_test $opt" @@ -152,10 +151,9 @@ main_dir="`cd $main_dir 1>/dev/null 2>&1 && pwd`" export shwtr='y' # shallow water tests export unstr='y' # unstructured grid tests export pdlib='y' # unstr with pdlib for domain decomposition and implicit solver - export lmp='y' # Langmuir mixing parameterization export smcgr='y' # SMC grid test export rtd='y' # Rotated pole test - export mudice='y' # Mud/Ice and wave interaction tests + export mudice='y' # Mud/Ice and wave interaction tests export infgrv='y' # Second harmonic generation tests export uost='y' # ww3_ts4 Unresolved Obstacles Source Term (UOST) export assim='y' # Restart spectra update @@ -180,17 +178,17 @@ main_dir="`cd $main_dir 1>/dev/null 2>&1 && pwd`" export nth_b4b='y' # Thread Reproducibility export esmf='n' # ESMF coupling # export filter='PR3 ST2 UQ' - # The filter does a set of consecutive greps on the + # The filter does a set of consecutive greps on the # command lines generated by filter.base with the above # selected options. # --------------------------------------------------------------------------- # # 2. Execute matrix.base ... # # --------------------------------------------------------------------------- # - + $main_dir/../regtests/bin/matrix.base - $main_dir/../regtests/bin/matrix_divider_cmake.sh + $main_dir/../regtests/bin/matrix_divider_cmake.sh # --------------------------------------------------------------------------- # # End to the matrix # diff --git a/regtests/bin/matrix_cmake_milhydro b/regtests/bin/matrix_cmake_milhydro index 6be47ab24..8213b9b33 100755 --- a/regtests/bin/matrix_cmake_milhydro +++ b/regtests/bin/matrix_cmake_milhydro @@ -19,10 +19,10 @@ # # # --------------------------------------------------------------------------- # usage () -{ +{ cat 2>&1 << EOF - Usage: $myname model_dir + Usage: $myname model_dir Required: model_dir : path to model dir of WW3 source EOF @@ -41,7 +41,7 @@ EOF # Convert main_dir to absolute path main_dir="`cd $main_dir 1>/dev/null 2>&1 && pwd`" -# Set batchq queue, choose modules and other custom variables to fit system and +# Set batchq queue, choose modules and other custom variables to fit system and # to define headers etc (default to original version if empty) # 1. Set up # 1.a Computer/ user dependent set up @@ -58,7 +58,7 @@ EOF echo " export path_build_root=$(dirname $main_dir)/regtests/buildmatrix" >> matrix.head echo ' [[ -d ${path_build_root} ]] && rm -rf ${path_build_root}' >> matrix.head - echo ' ' + echo ' ' if [ "$batchq" = 'slurm' ] then @@ -97,10 +97,9 @@ echo " export path_build_root=$(dirname $main_dir)/regtests/buildmatrix" >> mat export shwtr='y' # shallow water tests export unstr='y' # unstructured grid tests export pdlib='y' # unstr with pdlib for domain decomposition and implicit solver - export lmp='y' # Langmuir mixing parameterization export smcgr='y' # SMC grid test export rtd='y' # Rotated pole test - export mudice='y' # Mud/Ice and wave interaction tests + export mudice='y' # Mud/Ice and wave interaction tests export infgrv='y' # Second harmonic generation tests export uost='y' # ww3_ts4 Unresolved Obstacles Source Term (UOST) export assim='y' # Restart spectra update @@ -125,14 +124,14 @@ echo " export path_build_root=$(dirname $main_dir)/regtests/buildmatrix" >> mat export npl_b4b='n' # MPI task Reproducibility export nth_b4b='n' # Thread Reproducibility export esmf='n' # ESMF coupling - # The filter does a set of consecutinve greps on the + # The filter does a set of consecutinve greps on the # command lines generated by filter.base with the above # selected options. # --------------------------------------------------------------------------- # # 2. Execute matrix.base ... # # --------------------------------------------------------------------------- # - + $main_dir/../regtests/bin/matrix.base @@ -147,7 +146,7 @@ echo " export path_build_root=$(dirname $main_dir)/regtests/buildmatrix" >> mat do echo "sbatch < $file" >> msuball.sh done - fi + fi # --------------------------------------------------------------------------- # # End to the matrix # diff --git a/regtests/bin/matrix_cmake_ncep b/regtests/bin/matrix_cmake_ncep index 4e2b3504d..19ce9c5e1 100755 --- a/regtests/bin/matrix_cmake_ncep +++ b/regtests/bin/matrix_cmake_ncep @@ -41,18 +41,16 @@ EOF # Convert main_dir to absolute path main_dir="`cd $main_dir 1>/dev/null 2>&1 && pwd`" -# Module Versions from spack-stack that are common for all platforms - modnetcdfc='netcdf-c/4.9.2' - modnetcdff='netcdf-fortran/4.6.0' - modjasper='jasper/2.0.32' - modzlib='zlib/1.2.13' +# Module Versions from HPC-Stack that are common for all platforms + modnetcdf='netcdf/4.7.4' + modjasper='jasper/2.0.25' + modzlib='zlib/1.2.11' modpng='libpng/1.6.37' - modhdf5='hdf5/1.14.0' + modhdf5='hdf5/1.10.6' modbacio='bacio/2.4.1' modg2='g2/3.4.5' - modw3emc='w3emc/2.10.0' - modesmf='esmf/8.4.2' - modscotch='scotch/7.0.4' + modw3emc='w3emc/2.9.2' + modesmf='esmf/8.3.0b09' # Set batchq queue, choose modules and other custom variables to fit system and # to define headers etc (default to original version if empty) @@ -62,19 +60,27 @@ EOF then # If no other h, assuming Hera batchq='slurm' - spackstackpath='/scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-1.5.0/envs/unified-env-noavx512/install/modulefiles/Core' - modcomp='stack-intel/2021.5.0' - modmpi='stack-intel-oneapi-mpi/2021.5.1' - metispath='/scratch1/NCEPDEV/climate/Matthew.Masarik/waves/opt/spack-stack/1.5.0/parmetis-4.0.3/install' - modcmake='cmake/3.23.1' + basemodcomp='intel/2022.1.2' + basemodmpi='impi/2022.1.2' + hpcstackpath='/scratch1/NCEPDEV/nems/role.epic/hpc-stack/libs/intel-2022.1.2/modulefiles/stack' + hpcstackversion='hpc/1.2.0' + modcomp='hpc-intel/2022.1.2' + modmpi='hpc-impi/2022.1.2' + scotchpath='/scratch1/NCEPDEV/climate/Matthew.Masarik/waves/opt/hpc-stack/scotch-v7.0.3/install' + metispath='/scratch1/NCEPDEV/climate/Matthew.Masarik/waves/opt/hpc-stack/parmetis-4.0.3/install' + modcmake='cmake/3.20.1' elif [ $isorion ] then batchq='slurm' - spackstackpath='/work/noaa/epic/role-epic/spack-stack/orion/spack-stack-1.5.0/envs/unified-env/install/modulefiles/Core' - modcomp='stack-intel/2022.0.2' - modmpi='stack-intel-oneapi-mpi/2021.5.1' - metispath='/work/noaa/marine/Matthew.Masarik/waves/opt/spack-stack/1.5.0/parmetis-4.0.3/install' - modcmake='cmake/3.23.1' + basemodcomp='intel/2022.1.2' + basemodmpi='impi/2022.1.2' + hpcstackpath='/work/noaa/epic-ps/hpc-stack/libs/intel/2022.1.2/modulefiles/stack' + hpcstackversion='hpc/1.2.0' + modcomp='hpc-intel/2022.1.2' + modmpi='hpc-impi/2022.1.2' + scotchpath='/work2/noaa/marine/mmasarik/waves/opt/hpc-stack/scotch-v7.0.3/install' + metispath='/work2/noaa/marine/mmasarik/waves/opt/hpc-stack/parmetis-4.0.3/install' + modcmake='cmake/3.22.1' else batchq= fi @@ -90,7 +96,7 @@ EOF # 1.a Computer/ user dependent set up - echo '#!/bin/sh' > matrix.head + echo '#!/bin/sh --login' > matrix.head echo ' ' >> matrix.head if [ $batchq = "slurm" ] && [ $isorion ] then @@ -133,28 +139,29 @@ EOF # Netcdf, Parmetis and SCOTCH modules & variables echo " module purge" >> matrix.head + echo " module load $modcmake" >> matrix.head if [ ! -z $basemodcomp ]; then echo " module load $basemodcomp" >> matrix.head fi if [ ! -z $basemodmpi ]; then echo " module load $basemodmpi" >> matrix.head fi - echo " module use $spackstackpath" >> matrix.head + echo " module use $hpcstackpath" >> matrix.head + echo " module load $hpcstackversion" >> matrix.head echo " module load $modcomp" >> matrix.head echo " module load $modmpi" >> matrix.head - echo " module load $modcmake" >> matrix.head echo " module load $modpng" >> matrix.head echo " module load $modzlib" >> matrix.head echo " module load $modjasper" >> matrix.head echo " module load $modhdf5" >> matrix.head - echo " module load $modnetcdfc" >> matrix.head - echo " module load $modnetcdff" >> matrix.head + echo " module load $modnetcdf" >> matrix.head echo " module load $modbacio" >> matrix.head echo " module load $modg2" >> matrix.head echo " module load $modw3emc" >> matrix.head echo " module load $modesmf" >> matrix.head - echo " module load $modscotch" >> matrix.head + echo " export METIS_PATH=${metispath}" >> matrix.head + echo " export SCOTCH_PATH=${scotchpath}" >> matrix.head echo " export path_build_root=$(dirname $main_dir)/regtests/buildmatrix" >> matrix.head echo ' [[ -d ${path_build_root} ]] && rm -rf ${path_build_root}' >> matrix.head echo ' ' @@ -196,7 +203,6 @@ EOF export shwtr='y' # shallow water tests export unstr='y' # unstructured grid tests export pdlib='y' # unstr with pdlib for domain decomposition and implicit solver - export lmp='y' # Langmuir mixing parameterization export smcgr='y' # SMC grid test export rtd='y' # Rotated pole test export mudice='y' # Mud/Ice and wave interaction tests diff --git a/regtests/bin/matrix_cmake_ukmo_cray b/regtests/bin/matrix_cmake_ukmo_cray index a4df5da0a..fc6cf64b9 100755 --- a/regtests/bin/matrix_cmake_ukmo_cray +++ b/regtests/bin/matrix_cmake_ukmo_cray @@ -29,7 +29,7 @@ usage () { cat 2>&1 << EOF - Usage: $myname model_dir + Usage: $myname model_dir Required: model_dir : path to model dir of WW3 source EOF @@ -139,15 +139,14 @@ fi export shwtr='y' # shallow water tests export unstr='y' # unstructured grid tests export pdlib='y' # unstr with pdlib for domain decomposition and implicit solver - export lmp='y' # Langmuir mixing parameterization export smcgr='y' # SMC grid test export rtd='y' # Rotated pole test - export mudice='y' # Mud/Ice and wave interaction tests + export mudice='y' # Mud/Ice and wave interaction tests export infgrv='y' # Second harmonic generation tests export uost='y' # ww3_ts4 Unresolved Obstacles Source Term (UOST) export assim='y' # Restart spectra update export oasis='y' # Atmosphere, ocean, and ice coupling using oasis - export calendar='y' # Calendar type + export calendar='y' # Calendar type export confignc='y' # Configurable netCDF meta data (ww3_ounf) export multi01='y' # mww3_test_01 (wetting and drying) @@ -167,14 +166,14 @@ fi export nth_b4b='y' # Thread Reproducibility export esmf='n' # ESMF coupling # export filter='PR3 ST2 UQ' - # The filter does a set of consecutinve greps on the + # The filter does a set of consecutinve greps on the # command lines generated by filter.base with the above # selected options. # --------------------------------------------------------------------------- # # 2. Execute matrix.base ... # # --------------------------------------------------------------------------- # - + $main_dir/../regtests/bin/matrix.base $main_dir/../regtests/bin/matrix_divider_cmake.sh diff --git a/regtests/bin/run_cmake_test b/regtests/bin/run_cmake_test index 86248bb4e..e114cd72a 100755 --- a/regtests/bin/run_cmake_test +++ b/regtests/bin/run_cmake_test @@ -491,9 +491,7 @@ then cp $path_build/install/bin/ww3_shel $path_e/ cp $path_build/install/bin/ww3_multi $path_e/ cp $path_build/install/bin/ww3_systrk $path_e/ - if [ -e $path_build/install/bin/ww3_prtide ]; then - cp $path_build/install/bin/ww3_prtide $path_e/ - fi + cp $path_build/install/bin/ww3_prtide $path_e/ fi else path_build=${path_build_root} @@ -628,7 +626,7 @@ then fi # link conf file - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -654,11 +652,7 @@ then if [ $multi -eq 2 ] then mv mod_def.ww3 mod_def.$g - if [ -e mod_def.ww3.txt ] - then - mv mod_def.ww3.txt mod_def.${g}.txt - fi - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -756,7 +750,7 @@ then then mv restart.ww3 restart.$g \rm -f mod_def.ww3 - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -855,7 +849,7 @@ then then mv nest.ww3 nest.$g \rm -f mod_def.ww3 - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -954,7 +948,7 @@ then then mv nest.ww3 nest.$g \rm -f mod_def.ww3 - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -1058,7 +1052,7 @@ then then \rm -f mod_def.ww3 mv $otype.ww3 $otype.$g - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -1133,9 +1127,9 @@ then if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] then - inputs_tmp="`ls ${path_i}/${prog}${gu}*nml 2>/dev/null`" + inputs_tmp=`( ls ${path_i}/${prog}${gu}*nml)` else - inputs_tmp="`ls ${path_i}/${prog}${gu}*inp 2>/dev/null`" + inputs_tmp=`( ls ${path_i}/${prog}${gu}*inp)` fi if [ ! -z "$inputs_tmp" ];then @@ -1182,7 +1176,7 @@ then then \rm -f mod_def.ww3 mv $otype.ww3 $otype.$g - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -1305,7 +1299,7 @@ then then \rm -f mod_def.ww3 mv $otype.ww3 $otype.$g - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -1449,7 +1443,7 @@ then \rm -f PET*.ESMF_LogFile \rm -f ww3_esmf.rc \cp -f ${path_i}/ww3_esmf.rc ww3_esmf.rc - if [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ ! -z "`echo ${ifile} | grep -o nml`" ] then echo "WAV_input_file_name: $prog.nml" >> ww3_esmf.rc fi @@ -1758,7 +1752,7 @@ do then \rm -f mod_def.ww3 \rm -f out_grd.ww3 - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -1825,7 +1819,7 @@ do then \rm -f mod_def.ww3 \rm -f out_grd.ww3 - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -1993,7 +1987,7 @@ do then \rm -f mod_def.ww3 \rm -f out_pnt.ww3 - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi @@ -2031,7 +2025,7 @@ done # end of loop on progs case $outopt in native) out_progs="ww3_trck" ;; netcdf) out_progs="ww3_trnc" ;; - both|all) out_progs="ww3_trck ww3_trnc" ;; + both) out_progs="ww3_trck ww3_trnc" ;; *) out_progs="" ;; esac @@ -2074,9 +2068,6 @@ do then continue fi - - \ln -s mod_def.$g mod_def.ww3 - gu="_$g" fileconf="$prog${gu}" else @@ -2131,9 +2122,8 @@ do \rm -f $prog.nml if [ $multi -eq 2 ] then - \rm -f mod_def.ww3 \rm -f track_o.ww3 - if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log fi diff --git a/regtests/bin/run_test b/regtests/bin/run_test index 560ab0725..7ed5ce40e 100755 --- a/regtests/bin/run_test +++ b/regtests/bin/run_test @@ -2368,7 +2368,7 @@ done # end of loop on progs case $outopt in native) out_progs="ww3_trck" ;; netcdf) out_progs="ww3_trnc" ;; - both|all) out_progs="ww3_trck ww3_trnc" ;; + both) out_progs="ww3_trck ww3_trnc" ;; *) out_progs="" ;; esac @@ -2448,9 +2448,6 @@ do then continue fi - - \ln -s mod_def.$g mod_def.ww3 - gu="_$g" fileconf="$prog${gu}" else @@ -2505,7 +2502,6 @@ do \rm -f $prog.nml if [ $multi -eq 2 ] then - \rm -f mod_def.ww3 \rm -f track_o.ww3 if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then diff --git a/regtests/mww3_test_01/info b/regtests/mww3_test_01/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/Status.depth b/regtests/mww3_test_01/input/Status.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/Status.mask b/regtests/mww3_test_01/input/Status.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/gx_outf.inp b/regtests/mww3_test_01/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/gx_outp.inp b/regtests/mww3_test_01/input/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/map_m01.gs b/regtests/mww3_test_01/input/map_m01.gs old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/namelists_Status.nml b/regtests/mww3_test_01/input/namelists_Status.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/points.list b/regtests/mww3_test_01/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch b/regtests/mww3_test_01/input/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR1 b/regtests/mww3_test_01/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR1_MPI b/regtests/mww3_test_01/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR2_UNO b/regtests/mww3_test_01/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR2_UNO_MPI b/regtests/mww3_test_01/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR2_UQ b/regtests/mww3_test_01/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR2_UQ_MPI b/regtests/mww3_test_01/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR3_UNO b/regtests/mww3_test_01/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR3_UNO_MPI b/regtests/mww3_test_01/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR3_UQ b/regtests/mww3_test_01/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/switch_PR3_UQ_MPI b/regtests/mww3_test_01/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_grid.inp b/regtests/mww3_test_01/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_grid.nml b/regtests/mww3_test_01/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_ounf.inp b/regtests/mww3_test_01/input/ww3_ounf.inp old mode 100644 new mode 100755 index f78b0e667..55b74a100 --- a/regtests/mww3_test_01/input/ww3_ounf.inp +++ b/regtests/mww3_test_01/input/ww3_ounf.inp @@ -11,7 +11,7 @@ $ file for a full documentation of field output options. Namelist type $ selection is used here (for alternative F/T flags, see ww3_shel.inp). $ N - HS ICE + HS $ $--------------------------------------------------------------------- $ $ Output type 4 [3,4] (version netCDF) diff --git a/regtests/mww3_test_01/input/ww3_ounf.nml b/regtests/mww3_test_01/input/ww3_ounf.nml old mode 100644 new mode 100755 index b6a115a7f..5a92a0cb5 --- a/regtests/mww3_test_01/input/ww3_ounf.nml +++ b/regtests/mww3_test_01/input/ww3_ounf.nml @@ -9,7 +9,7 @@ FIELD%TIMESTART = '19680606 000000' FIELD%TIMESTRIDE = '3600' FIELD%TIMECOUNT = '999' - FIELD%LIST = 'HS ICE' + FIELD%LIST = 'HS' FIELD%PARTITION = '0 1 2' FIELD%TYPE = 4 / diff --git a/regtests/mww3_test_01/input/ww3_ounp.inp b/regtests/mww3_test_01/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_ounp.nml b/regtests/mww3_test_01/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_outf.inp b/regtests/mww3_test_01/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_outf_file.inp b/regtests/mww3_test_01/input/ww3_outf_file.inp old mode 100644 new mode 100755 index db8c14716..6d909ff53 --- a/regtests/mww3_test_01/input/ww3_outf_file.inp +++ b/regtests/mww3_test_01/input/ww3_outf_file.inp @@ -6,7 +6,7 @@ $ 19680606 000000 3600 999 $ N - HS ICE + HS $ 3 0 1 999 1 999 1 1 diff --git a/regtests/mww3_test_01/input/ww3_outf_screen.inp b/regtests/mww3_test_01/input/ww3_outf_screen.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_outp_tab50.inp b/regtests/mww3_test_01/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_outp_tab51.inp b/regtests/mww3_test_01/input/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_prep.inp b/regtests/mww3_test_01/input/ww3_prep.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_01/input/ww3_shel.inp b/regtests/mww3_test_01/input/ww3_shel.inp old mode 100644 new mode 100755 index ecc511800..1585f747e --- a/regtests/mww3_test_01/input/ww3_shel.inp +++ b/regtests/mww3_test_01/input/ww3_shel.inp @@ -18,7 +18,7 @@ $ 19680606 000000 450 19680607 000000 $ N - HS FP DP ICE + HS FP DP $ 19680606 000000 450 19680607 000000 100.E3 100.E3 'point_A' diff --git a/regtests/mww3_test_01/input/ww3_shel.nml b/regtests/mww3_test_01/input/ww3_shel.nml old mode 100644 new mode 100755 index 903cef0c8..f9a586f53 --- a/regtests/mww3_test_01/input/ww3_shel.nml +++ b/regtests/mww3_test_01/input/ww3_shel.nml @@ -22,7 +22,7 @@ ! Define the output types point parameters via OUTPUT_TYPE_NML namelist ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML - TYPE%FIELD%LIST = 'HS FP DP ICE' + TYPE%FIELD%LIST = 'HS FP DP' TYPE%POINT%FILE = '../input/points.list' / diff --git a/regtests/mww3_test_01/input/ww3_strt.inp b/regtests/mww3_test_01/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/info b/regtests/mww3_test_02/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/coarse.depth b/regtests/mww3_test_02/input/coarse.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/curv_coarse.depth b/regtests/mww3_test_02/input/curv_coarse.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/curv_fine.depth b/regtests/mww3_test_02/input/curv_fine.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/curv_outer.depth b/regtests/mww3_test_02/input/curv_outer.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/curv_respec.depth b/regtests/mww3_test_02/input/curv_respec.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/curv_tiny.depth b/regtests/mww3_test_02/input/curv_tiny.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/fine.depth b/regtests/mww3_test_02/input/fine.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/grdset_a b/regtests/mww3_test_02/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/grdset_b b/regtests/mww3_test_02/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/grdset_c b/regtests/mww3_test_02/input/grdset_c old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/grdset_d b/regtests/mww3_test_02/input/grdset_d old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/gx_outf.inp b/regtests/mww3_test_02/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/map_m02.gs b/regtests/mww3_test_02/input/map_m02.gs old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_coarse.nml b/regtests/mww3_test_02/input/namelists_coarse.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_curv_coarse.nml b/regtests/mww3_test_02/input/namelists_curv_coarse.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_curv_fine.nml b/regtests/mww3_test_02/input/namelists_curv_fine.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_curv_outer.nml b/regtests/mww3_test_02/input/namelists_curv_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_curv_respec.nml b/regtests/mww3_test_02/input/namelists_curv_respec.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_curv_tiny.nml b/regtests/mww3_test_02/input/namelists_curv_tiny.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_fine.nml b/regtests/mww3_test_02/input/namelists_fine.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_outer.nml b/regtests/mww3_test_02/input/namelists_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_respec.nml b/regtests/mww3_test_02/input/namelists_respec.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/namelists_tiny.nml b/regtests/mww3_test_02/input/namelists_tiny.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/outer.depth b/regtests/mww3_test_02/input/outer.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/points.list b/regtests/mww3_test_02/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/respec.depth b/regtests/mww3_test_02/input/respec.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch b/regtests/mww3_test_02/input/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR1 b/regtests/mww3_test_02/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR1_MPI b/regtests/mww3_test_02/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR2_UNO b/regtests/mww3_test_02/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR2_UNO_MPI b/regtests/mww3_test_02/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR2_UQ b/regtests/mww3_test_02/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR2_UQ_MPI b/regtests/mww3_test_02/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR2_UQ_NC4_MPI b/regtests/mww3_test_02/input/switch_PR2_UQ_NC4_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UNO b/regtests/mww3_test_02/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UNO_MPI b/regtests/mww3_test_02/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UNO_MPI_SCRIP b/regtests/mww3_test_02/input/switch_PR3_UNO_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UNO_MPI_SCRIPNC b/regtests/mww3_test_02/input/switch_PR3_UNO_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UNO_MPI_SCRIP_T38 b/regtests/mww3_test_02/input/switch_PR3_UNO_MPI_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UNO_SCRIP b/regtests/mww3_test_02/input/switch_PR3_UNO_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UNO_SCRIP_T38 b/regtests/mww3_test_02/input/switch_PR3_UNO_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UQ b/regtests/mww3_test_02/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UQ_MPI b/regtests/mww3_test_02/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UQ_MPI_SCRIP b/regtests/mww3_test_02/input/switch_PR3_UQ_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UQ_MPI_SCRIPNC b/regtests/mww3_test_02/input/switch_PR3_UQ_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UQ_MPI_SCRIP_T38 b/regtests/mww3_test_02/input/switch_PR3_UQ_MPI_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UQ_SCRIP b/regtests/mww3_test_02/input/switch_PR3_UQ_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/switch_PR3_UQ_SCRIP_T38 b/regtests/mww3_test_02/input/switch_PR3_UQ_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/tiny.depth b/regtests/mww3_test_02/input/tiny.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/track_i.outer b/regtests/mww3_test_02/input/track_i.outer old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_esmf.rc b/regtests/mww3_test_02/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_coarse.inp b/regtests/mww3_test_02/input/ww3_grid_coarse.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_coarse.nml b/regtests/mww3_test_02/input/ww3_grid_coarse.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_coarse.inp b/regtests/mww3_test_02/input/ww3_grid_curv_coarse.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_coarse.nml b/regtests/mww3_test_02/input/ww3_grid_curv_coarse.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_fine.inp b/regtests/mww3_test_02/input/ww3_grid_curv_fine.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_fine.nml b/regtests/mww3_test_02/input/ww3_grid_curv_fine.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_outer.inp b/regtests/mww3_test_02/input/ww3_grid_curv_outer.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_outer.nml b/regtests/mww3_test_02/input/ww3_grid_curv_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_respec.inp b/regtests/mww3_test_02/input/ww3_grid_curv_respec.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_respec.nml b/regtests/mww3_test_02/input/ww3_grid_curv_respec.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_tiny.inp b/regtests/mww3_test_02/input/ww3_grid_curv_tiny.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_curv_tiny.nml b/regtests/mww3_test_02/input/ww3_grid_curv_tiny.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_fine.inp b/regtests/mww3_test_02/input/ww3_grid_fine.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_fine.nml b/regtests/mww3_test_02/input/ww3_grid_fine.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_outer.inp b/regtests/mww3_test_02/input/ww3_grid_outer.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_outer.nml b/regtests/mww3_test_02/input/ww3_grid_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_respec.inp b/regtests/mww3_test_02/input/ww3_grid_respec.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_respec.nml b/regtests/mww3_test_02/input/ww3_grid_respec.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_tiny.inp b/regtests/mww3_test_02/input/ww3_grid_tiny.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_grid_tiny.nml b/regtests/mww3_test_02/input/ww3_grid_tiny.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_a.nml b/regtests/mww3_test_02/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_b.nml b/regtests/mww3_test_02/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_c.nml b/regtests/mww3_test_02/input/ww3_multi_grdset_c.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_d.nml b/regtests/mww3_test_02/input/ww3_multi_grdset_d.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_ounf.inp b/regtests/mww3_test_02/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_ounf.nml b/regtests/mww3_test_02/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_ounp.inp b/regtests/mww3_test_02/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_ounp.nml b/regtests/mww3_test_02/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_outf.inp b/regtests/mww3_test_02/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_outp_tab50.inp b/regtests/mww3_test_02/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_strt.inp b/regtests/mww3_test_02/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ww3_trnc_outer.nml b/regtests/mww3_test_02/input/ww3_trnc_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/xgrd.coarse.inp b/regtests/mww3_test_02/input/xgrd.coarse.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/xgrd.fine.inp b/regtests/mww3_test_02/input/xgrd.fine.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/xgrd.outer.inp b/regtests/mww3_test_02/input/xgrd.outer.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/xgrd.tiny.inp b/regtests/mww3_test_02/input/xgrd.tiny.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/xygrd.f90 b/regtests/mww3_test_02/input/xygrd.f90 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ygrd.coarse.inp b/regtests/mww3_test_02/input/ygrd.coarse.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ygrd.fine.inp b/regtests/mww3_test_02/input/ygrd.fine.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ygrd.outer.inp b/regtests/mww3_test_02/input/ygrd.outer.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_02/input/ygrd.tiny.inp b/regtests/mww3_test_02/input/ygrd.tiny.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/info b/regtests/mww3_test_03/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/cmpl.depth b/regtests/mww3_test_03/input/cmpl.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/grdset_a b/regtests/mww3_test_03/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/grdset_a0 b/regtests/mww3_test_03/input/grdset_a0 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/grdset_b b/regtests/mww3_test_03/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/grdset_c b/regtests/mww3_test_03/input/grdset_c old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/grdset_d b/regtests/mww3_test_03/input/grdset_d old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/grdset_d2 b/regtests/mww3_test_03/input/grdset_d2 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/grdset_e b/regtests/mww3_test_03/input/grdset_e old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/gx_outf.inp b/regtests/mww3_test_03/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh0.depth b/regtests/mww3_test_03/input/hgh0.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh0.mask b/regtests/mww3_test_03/input/hgh0.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh1.depth b/regtests/mww3_test_03/input/hgh1.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh1.mask b/regtests/mww3_test_03/input/hgh1.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh2.depth b/regtests/mww3_test_03/input/hgh2.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh2.mask b/regtests/mww3_test_03/input/hgh2.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh3.depth b/regtests/mww3_test_03/input/hgh3.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/hgh3.mask b/regtests/mww3_test_03/input/hgh3.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/low0.depth b/regtests/mww3_test_03/input/low0.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/low1.depth b/regtests/mww3_test_03/input/low1.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/low2.depth b/regtests/mww3_test_03/input/low2.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/low3.depth b/regtests/mww3_test_03/input/low3.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/map_m03.gs b/regtests/mww3_test_03/input/map_m03.gs old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_cmpl.nml b/regtests/mww3_test_03/input/namelists_cmpl.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_hgh0.nml b/regtests/mww3_test_03/input/namelists_hgh0.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_hgh1.nml b/regtests/mww3_test_03/input/namelists_hgh1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_hgh2.nml b/regtests/mww3_test_03/input/namelists_hgh2.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_hgh3.nml b/regtests/mww3_test_03/input/namelists_hgh3.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_low0.nml b/regtests/mww3_test_03/input/namelists_low0.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_low1.nml b/regtests/mww3_test_03/input/namelists_low1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_low2.nml b/regtests/mww3_test_03/input/namelists_low2.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_low3.nml b/regtests/mww3_test_03/input/namelists_low3.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/namelists_points.nml b/regtests/mww3_test_03/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/points.depth b/regtests/mww3_test_03/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/points.list b/regtests/mww3_test_03/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch b/regtests/mww3_test_03/input/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR1 b/regtests/mww3_test_03/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR1_MPI b/regtests/mww3_test_03/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR2_UNO b/regtests/mww3_test_03/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR2_UNO_MPI b/regtests/mww3_test_03/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR2_UQ b/regtests/mww3_test_03/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR2_UQ_MPI b/regtests/mww3_test_03/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UNO b/regtests/mww3_test_03/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UNO_MPI b/regtests/mww3_test_03/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UNO_MPI_SCRIP b/regtests/mww3_test_03/input/switch_PR3_UNO_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UNO_MPI_SCRIPNC b/regtests/mww3_test_03/input/switch_PR3_UNO_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UNO_SCRIP b/regtests/mww3_test_03/input/switch_PR3_UNO_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UNO_SCRIP_T38 b/regtests/mww3_test_03/input/switch_PR3_UNO_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UQ b/regtests/mww3_test_03/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UQ_MPI b/regtests/mww3_test_03/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UQ_MPI_IS2 b/regtests/mww3_test_03/input/switch_PR3_UQ_MPI_IS2 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UQ_MPI_SCRIP b/regtests/mww3_test_03/input/switch_PR3_UQ_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UQ_MPI_SCRIPNC b/regtests/mww3_test_03/input/switch_PR3_UQ_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UQ_SCRIP b/regtests/mww3_test_03/input/switch_PR3_UQ_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/switch_PR3_UQ_SCRIP_T38 b/regtests/mww3_test_03/input/switch_PR3_UQ_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_esmf.rc b/regtests/mww3_test_03/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_gint_grdset_a.inp b/regtests/mww3_test_03/input/ww3_gint_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_gint_grdset_b.inp b/regtests/mww3_test_03/input/ww3_gint_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_gint_grdset_c.inp b/regtests/mww3_test_03/input/ww3_gint_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_gint_grdset_d.inp b/regtests/mww3_test_03/input/ww3_gint_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_cmpl.inp b/regtests/mww3_test_03/input/ww3_grid_cmpl.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_cmpl.nml b/regtests/mww3_test_03/input/ww3_grid_cmpl.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh0.inp b/regtests/mww3_test_03/input/ww3_grid_hgh0.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh0.nml b/regtests/mww3_test_03/input/ww3_grid_hgh0.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh1.inp b/regtests/mww3_test_03/input/ww3_grid_hgh1.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh1.nml b/regtests/mww3_test_03/input/ww3_grid_hgh1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh2.inp b/regtests/mww3_test_03/input/ww3_grid_hgh2.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh2.nml b/regtests/mww3_test_03/input/ww3_grid_hgh2.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh3.inp b/regtests/mww3_test_03/input/ww3_grid_hgh3.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_hgh3.nml b/regtests/mww3_test_03/input/ww3_grid_hgh3.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low0.inp b/regtests/mww3_test_03/input/ww3_grid_low0.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low0.nml b/regtests/mww3_test_03/input/ww3_grid_low0.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low1.inp b/regtests/mww3_test_03/input/ww3_grid_low1.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low1.nml b/regtests/mww3_test_03/input/ww3_grid_low1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low2.inp b/regtests/mww3_test_03/input/ww3_grid_low2.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low2.nml b/regtests/mww3_test_03/input/ww3_grid_low2.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low3.inp b/regtests/mww3_test_03/input/ww3_grid_low3.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_low3.nml b/regtests/mww3_test_03/input/ww3_grid_low3.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_points.inp b/regtests/mww3_test_03/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_grid_points.nml b/regtests/mww3_test_03/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_a.nml b/regtests/mww3_test_03/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_a0.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_a0.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_a0.nml b/regtests/mww3_test_03/input/ww3_multi_grdset_a0.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_b.nml b/regtests/mww3_test_03/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_c.nml b/regtests/mww3_test_03/input/ww3_multi_grdset_c.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_d.nml b/regtests/mww3_test_03/input/ww3_multi_grdset_d.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_d2.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_d2.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_d2.nml b/regtests/mww3_test_03/input/ww3_multi_grdset_d2.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_e.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_e.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_e.nml b/regtests/mww3_test_03/input/ww3_multi_grdset_e.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_ounf.inp b/regtests/mww3_test_03/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_ounf.nml b/regtests/mww3_test_03/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_ounp.inp b/regtests/mww3_test_03/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_ounp.nml b/regtests/mww3_test_03/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_outf.inp b/regtests/mww3_test_03/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_outp_tab50.inp b/regtests/mww3_test_03/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_03/input/ww3_strt.inp b/regtests/mww3_test_03/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/info b/regtests/mww3_test_04/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/bound.depth b/regtests/mww3_test_04/input/bound.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/buoy.all b/regtests/mww3_test_04/input/buoy.all old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/curr.data b/regtests/mww3_test_04/input/curr.data old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/depth.data b/regtests/mww3_test_04/input/depth.data old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/grdset_a b/regtests/mww3_test_04/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/grdset_b b/regtests/mww3_test_04/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/grdset_c b/regtests/mww3_test_04/input/grdset_c old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/grdset_d b/regtests/mww3_test_04/input/grdset_d old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/grdset_e b/regtests/mww3_test_04/input/grdset_e old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/grdset_f b/regtests/mww3_test_04/input/grdset_f old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/grdset_g b/regtests/mww3_test_04/input/grdset_g old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/gx_outf.inp b/regtests/mww3_test_04/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/gx_outp.inp b/regtests/mww3_test_04/input/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/inner.depth b/regtests/mww3_test_04/input/inner.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/map_m04.gs b/regtests/mww3_test_04/input/map_m04.gs old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/mask.data b/regtests/mww3_test_04/input/mask.data old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/namelists_bound.nml b/regtests/mww3_test_04/input/namelists_bound.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/namelists_inner.nml b/regtests/mww3_test_04/input/namelists_inner.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/namelists_mount.nml b/regtests/mww3_test_04/input/namelists_mount.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/namelists_outer.nml b/regtests/mww3_test_04/input/namelists_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/namelists_points.nml b/regtests/mww3_test_04/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/outer.depth b/regtests/mww3_test_04/input/outer.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/points.depth b/regtests/mww3_test_04/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/points.list b/regtests/mww3_test_04/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/points_2.list b/regtests/mww3_test_04/input/points_2.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/points_3.list b/regtests/mww3_test_04/input/points_3.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch b/regtests/mww3_test_04/input/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR1 b/regtests/mww3_test_04/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR1_MPI b/regtests/mww3_test_04/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR2_UNO b/regtests/mww3_test_04/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR2_UNO_MPI b/regtests/mww3_test_04/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR2_UQ b/regtests/mww3_test_04/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR2_UQ_MPI b/regtests/mww3_test_04/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UNO b/regtests/mww3_test_04/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UNO_MPI b/regtests/mww3_test_04/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UNO_MPI_SCRIP b/regtests/mww3_test_04/input/switch_PR3_UNO_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UNO_MPI_SCRIPNC b/regtests/mww3_test_04/input/switch_PR3_UNO_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UNO_SCRIP b/regtests/mww3_test_04/input/switch_PR3_UNO_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UNO_SCRIP_T38 b/regtests/mww3_test_04/input/switch_PR3_UNO_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UQ b/regtests/mww3_test_04/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UQ_MPI b/regtests/mww3_test_04/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UQ_MPI_SCRIP b/regtests/mww3_test_04/input/switch_PR3_UQ_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UQ_MPI_SCRIPNC b/regtests/mww3_test_04/input/switch_PR3_UQ_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UQ_SCRIP b/regtests/mww3_test_04/input/switch_PR3_UQ_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/switch_PR3_UQ_SCRIP_T38 b/regtests/mww3_test_04/input/switch_PR3_UQ_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_esmf.rc b/regtests/mww3_test_04/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_bound.inp b/regtests/mww3_test_04/input/ww3_grid_bound.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_bound.nml b/regtests/mww3_test_04/input/ww3_grid_bound.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_inner.inp b/regtests/mww3_test_04/input/ww3_grid_inner.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_inner.nml b/regtests/mww3_test_04/input/ww3_grid_inner.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_mount.inp b/regtests/mww3_test_04/input/ww3_grid_mount.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_mount.nml b/regtests/mww3_test_04/input/ww3_grid_mount.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_outer.inp b/regtests/mww3_test_04/input/ww3_grid_outer.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_outer.nml b/regtests/mww3_test_04/input/ww3_grid_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_points.inp b/regtests/mww3_test_04/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_grid_points.nml b/regtests/mww3_test_04/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_a.nml b/regtests/mww3_test_04/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_b.nml b/regtests/mww3_test_04/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_c.nml b/regtests/mww3_test_04/input/ww3_multi_grdset_c.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_d.nml b/regtests/mww3_test_04/input/ww3_multi_grdset_d.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_e.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_e.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_e.nml b/regtests/mww3_test_04/input/ww3_multi_grdset_e.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_f.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_f.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_f.nml b/regtests/mww3_test_04/input/ww3_multi_grdset_f.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_g.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_g.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_g.nml b/regtests/mww3_test_04/input/ww3_multi_grdset_g.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_ounf.inp b/regtests/mww3_test_04/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_ounf.nml b/regtests/mww3_test_04/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_ounp.inp b/regtests/mww3_test_04/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_ounp.nml b/regtests/mww3_test_04/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_outf.inp b/regtests/mww3_test_04/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_outp.inp b/regtests/mww3_test_04/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_prep_current.inp b/regtests/mww3_test_04/input/ww3_prep_current.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_04/input/ww3_strt.inp b/regtests/mww3_test_04/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/info b/regtests/mww3_test_05/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/buoy.all b/regtests/mww3_test_05/input/buoy.all old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd0.depth b/regtests/mww3_test_05/input/grd0.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd0.mask b/regtests/mww3_test_05/input/grd0.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd1.depth b/regtests/mww3_test_05/input/grd1.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd1.mask b/regtests/mww3_test_05/input/grd1.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd2.depth b/regtests/mww3_test_05/input/grd2.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd2.mask b/regtests/mww3_test_05/input/grd2.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd3.depth b/regtests/mww3_test_05/input/grd3.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grd3.mask b/regtests/mww3_test_05/input/grd3.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grdset_a b/regtests/mww3_test_05/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grdset_b b/regtests/mww3_test_05/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grdset_c b/regtests/mww3_test_05/input/grdset_c old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grdset_d b/regtests/mww3_test_05/input/grdset_d old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/grdset_e b/regtests/mww3_test_05/input/grdset_e old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/gx_outf.inp b/regtests/mww3_test_05/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/gx_outp.inp b/regtests/mww3_test_05/input/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/input.depth b/regtests/mww3_test_05/input/input.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/input.mask b/regtests/mww3_test_05/input/input.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/map_m05.gs b/regtests/mww3_test_05/input/map_m05.gs old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/namelists_grd0.nml b/regtests/mww3_test_05/input/namelists_grd0.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/namelists_grd1.nml b/regtests/mww3_test_05/input/namelists_grd1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/namelists_grd2.nml b/regtests/mww3_test_05/input/namelists_grd2.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/namelists_grd3.nml b/regtests/mww3_test_05/input/namelists_grd3.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/namelists_input.nml b/regtests/mww3_test_05/input/namelists_input.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/namelists_points.nml b/regtests/mww3_test_05/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/points.depth b/regtests/mww3_test_05/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/points.list b/regtests/mww3_test_05/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/points.mask b/regtests/mww3_test_05/input/points.mask old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch b/regtests/mww3_test_05/input/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR1 b/regtests/mww3_test_05/input/switch_ST1_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR1_MPI b/regtests/mww3_test_05/input/switch_ST1_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR1_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST1_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR1_OMP b/regtests/mww3_test_05/input/switch_ST1_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UNO b/regtests/mww3_test_05/input/switch_ST1_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UNO_MPI b/regtests/mww3_test_05/input/switch_ST1_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST1_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UNO_OMP b/regtests/mww3_test_05/input/switch_ST1_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UQ b/regtests/mww3_test_05/input/switch_ST1_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UQ_MPI b/regtests/mww3_test_05/input/switch_ST1_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST1_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR2_UQ_OMP b/regtests/mww3_test_05/input/switch_ST1_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UNO b/regtests/mww3_test_05/input/switch_ST1_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_MPI b/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_MPI_SCRIP b/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_OMP b/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_SCRIP b/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_SCRIP_T38 b/regtests/mww3_test_05/input/switch_ST1_PR3_UNO_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UQ b/regtests/mww3_test_05/input/switch_ST1_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_MPI b/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_MPI_SCRIP b/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_OMP b/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_SCRIP b/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_SCRIP_T38 b/regtests/mww3_test_05/input/switch_ST1_PR3_UQ_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR1 b/regtests/mww3_test_05/input/switch_ST2_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR1_MPI b/regtests/mww3_test_05/input/switch_ST2_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR1_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST2_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR1_OMP b/regtests/mww3_test_05/input/switch_ST2_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UNO b/regtests/mww3_test_05/input/switch_ST2_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UNO_MPI b/regtests/mww3_test_05/input/switch_ST2_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST2_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UNO_OMP b/regtests/mww3_test_05/input/switch_ST2_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UQ b/regtests/mww3_test_05/input/switch_ST2_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UQ_MPI b/regtests/mww3_test_05/input/switch_ST2_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST2_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR2_UQ_OMP b/regtests/mww3_test_05/input/switch_ST2_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UNO b/regtests/mww3_test_05/input/switch_ST2_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI b/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI_SCRIP b/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI_SCRIPNC b/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_OMP b/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_SCRIP_T38 b/regtests/mww3_test_05/input/switch_ST2_PR3_UNO_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UQ b/regtests/mww3_test_05/input/switch_ST2_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI b/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI_SCRIP b/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI_SCRIPNC b/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_OMP b/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_SCRIP_T38 b/regtests/mww3_test_05/input/switch_ST2_PR3_UQ_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR1 b/regtests/mww3_test_05/input/switch_ST3_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR1_MPI b/regtests/mww3_test_05/input/switch_ST3_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR1_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST3_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR1_OMP b/regtests/mww3_test_05/input/switch_ST3_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UNO b/regtests/mww3_test_05/input/switch_ST3_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UNO_MPI b/regtests/mww3_test_05/input/switch_ST3_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST3_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UNO_OMP b/regtests/mww3_test_05/input/switch_ST3_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UQ b/regtests/mww3_test_05/input/switch_ST3_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UQ_MPI b/regtests/mww3_test_05/input/switch_ST3_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST3_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR2_UQ_OMP b/regtests/mww3_test_05/input/switch_ST3_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UNO b/regtests/mww3_test_05/input/switch_ST3_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UNO_MPI b/regtests/mww3_test_05/input/switch_ST3_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST3_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UNO_OMP b/regtests/mww3_test_05/input/switch_ST3_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UQ b/regtests/mww3_test_05/input/switch_ST3_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UQ_MPI b/regtests/mww3_test_05/input/switch_ST3_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST3_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST3_PR3_UQ_OMP b/regtests/mww3_test_05/input/switch_ST3_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR1 b/regtests/mww3_test_05/input/switch_ST4_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR1_MPI b/regtests/mww3_test_05/input/switch_ST4_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR1_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST4_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR1_OMP b/regtests/mww3_test_05/input/switch_ST4_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UNO b/regtests/mww3_test_05/input/switch_ST4_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UNO_MPI b/regtests/mww3_test_05/input/switch_ST4_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST4_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UNO_OMP b/regtests/mww3_test_05/input/switch_ST4_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UQ b/regtests/mww3_test_05/input/switch_ST4_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UQ_MPI b/regtests/mww3_test_05/input/switch_ST4_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST4_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR2_UQ_OMP b/regtests/mww3_test_05/input/switch_ST4_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UNO b/regtests/mww3_test_05/input/switch_ST4_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UNO_MPI b/regtests/mww3_test_05/input/switch_ST4_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST4_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UNO_OMP b/regtests/mww3_test_05/input/switch_ST4_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UQ b/regtests/mww3_test_05/input/switch_ST4_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UQ_MPI b/regtests/mww3_test_05/input/switch_ST4_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST4_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST4_PR3_UQ_OMP b/regtests/mww3_test_05/input/switch_ST4_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR1 b/regtests/mww3_test_05/input/switch_ST6_PR1 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR1_MPI b/regtests/mww3_test_05/input/switch_ST6_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR1_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST6_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR1_OMP b/regtests/mww3_test_05/input/switch_ST6_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UNO b/regtests/mww3_test_05/input/switch_ST6_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UNO_MPI b/regtests/mww3_test_05/input/switch_ST6_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST6_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UNO_OMP b/regtests/mww3_test_05/input/switch_ST6_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UQ b/regtests/mww3_test_05/input/switch_ST6_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UQ_MPI b/regtests/mww3_test_05/input/switch_ST6_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST6_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR2_UQ_OMP b/regtests/mww3_test_05/input/switch_ST6_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UNO b/regtests/mww3_test_05/input/switch_ST6_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UNO_MPI b/regtests/mww3_test_05/input/switch_ST6_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UNO_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST6_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UNO_OMP b/regtests/mww3_test_05/input/switch_ST6_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UQ b/regtests/mww3_test_05/input/switch_ST6_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UQ_MPI b/regtests/mww3_test_05/input/switch_ST6_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UQ_MPI_OMPH b/regtests/mww3_test_05/input/switch_ST6_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/switch_ST6_PR3_UQ_OMP b/regtests/mww3_test_05/input/switch_ST6_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/wind.data b/regtests/mww3_test_05/input/wind.data old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_esmf.rc b/regtests/mww3_test_05/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd0.inp b/regtests/mww3_test_05/input/ww3_grid_grd0.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd0.nml b/regtests/mww3_test_05/input/ww3_grid_grd0.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd1.inp b/regtests/mww3_test_05/input/ww3_grid_grd1.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd1.nml b/regtests/mww3_test_05/input/ww3_grid_grd1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd2.inp b/regtests/mww3_test_05/input/ww3_grid_grd2.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd2.nml b/regtests/mww3_test_05/input/ww3_grid_grd2.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd3.inp b/regtests/mww3_test_05/input/ww3_grid_grd3.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_grd3.nml b/regtests/mww3_test_05/input/ww3_grid_grd3.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_input.inp b/regtests/mww3_test_05/input/ww3_grid_input.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_input.nml b/regtests/mww3_test_05/input/ww3_grid_input.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_points.inp b/regtests/mww3_test_05/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_grid_points.nml b/regtests/mww3_test_05/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_a.nml b/regtests/mww3_test_05/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_b.nml b/regtests/mww3_test_05/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_c.nml b/regtests/mww3_test_05/input/ww3_multi_grdset_c.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_d.nml b/regtests/mww3_test_05/input/ww3_multi_grdset_d.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_e.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_e.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_e.nml b/regtests/mww3_test_05/input/ww3_multi_grdset_e.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_ounf.inp b/regtests/mww3_test_05/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_ounf.nml b/regtests/mww3_test_05/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_outf.inp b/regtests/mww3_test_05/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_prep_wind.inp b/regtests/mww3_test_05/input/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_05/input/ww3_strt.inp b/regtests/mww3_test_05/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/info b/regtests/mww3_test_06/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/arcticsub.depth b/regtests/mww3_test_06/input/arcticsub.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/gbandd360.depth b/regtests/mww3_test_06/input/gbandd360.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/glout.depth b/regtests/mww3_test_06/input/glout.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/grdset_d b/regtests/mww3_test_06/input/grdset_d old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/grdset_d_h b/regtests/mww3_test_06/input/grdset_d_h old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/grdset_d_r b/regtests/mww3_test_06/input/grdset_d_r old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/latsubLR.dat b/regtests/mww3_test_06/input/latsubLR.dat old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/lonsubLR.dat b/regtests/mww3_test_06/input/lonsubLR.dat old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/namelists_arcticsub.nml b/regtests/mww3_test_06/input/namelists_arcticsub.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/namelists_gbandd360.nml b/regtests/mww3_test_06/input/namelists_gbandd360.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/namelists_glout.nml b/regtests/mww3_test_06/input/namelists_glout.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/namelists_points.nml b/regtests/mww3_test_06/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/points.depth b/regtests/mww3_test_06/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/points.list b/regtests/mww3_test_06/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UNO b/regtests/mww3_test_06/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UNO_MPIBDI_SCRIPNC b/regtests/mww3_test_06/input/switch_PR3_UNO_MPIBDI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UNO_MPI_SCRIP b/regtests/mww3_test_06/input/switch_PR3_UNO_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UNO_MPI_SCRIPNC b/regtests/mww3_test_06/input/switch_PR3_UNO_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UNO_MPI_SCRIP_T38 b/regtests/mww3_test_06/input/switch_PR3_UNO_MPI_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UNO_SCRIP b/regtests/mww3_test_06/input/switch_PR3_UNO_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UNO_SCRIP_T38 b/regtests/mww3_test_06/input/switch_PR3_UNO_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UQ b/regtests/mww3_test_06/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UQ_MPIBDI_SCRIPNC b/regtests/mww3_test_06/input/switch_PR3_UQ_MPIBDI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UQ_MPI_SCRIP b/regtests/mww3_test_06/input/switch_PR3_UQ_MPI_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UQ_MPI_SCRIPNC b/regtests/mww3_test_06/input/switch_PR3_UQ_MPI_SCRIPNC old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UQ_MPI_SCRIP_T38 b/regtests/mww3_test_06/input/switch_PR3_UQ_MPI_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UQ_SCRIP b/regtests/mww3_test_06/input/switch_PR3_UQ_SCRIP old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/switch_PR3_UQ_SCRIP_T38 b/regtests/mww3_test_06/input/switch_PR3_UQ_SCRIP_T38 old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_esmf.rc b/regtests/mww3_test_06/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_gint_grdset_d.inp b/regtests/mww3_test_06/input/ww3_gint_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_arcticsub.inp b/regtests/mww3_test_06/input/ww3_grid_arcticsub.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_arcticsub.nml b/regtests/mww3_test_06/input/ww3_grid_arcticsub.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_gbandd360.inp b/regtests/mww3_test_06/input/ww3_grid_gbandd360.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_gbandd360.nml b/regtests/mww3_test_06/input/ww3_grid_gbandd360.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_glout.inp b/regtests/mww3_test_06/input/ww3_grid_glout.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_glout.nml b/regtests/mww3_test_06/input/ww3_grid_glout.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_points.inp b/regtests/mww3_test_06/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_grid_points.nml b/regtests/mww3_test_06/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_06/input/ww3_multi_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d.nml b/regtests/mww3_test_06/input/ww3_multi_grdset_d.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.inp b/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.nml b/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.inp b/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.nml b/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_ounf.inp b/regtests/mww3_test_06/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_ounf.nml b/regtests/mww3_test_06/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_outf.inp b/regtests/mww3_test_06/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_outf_depth.inp b/regtests/mww3_test_06/input/ww3_outf_depth.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_06/input/ww3_strt.inp b/regtests/mww3_test_06/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/info b/regtests/mww3_test_07/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/namelists_points.nml b/regtests/mww3_test_07/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/namelists_rect1.nml b/regtests/mww3_test_07/input/namelists_rect1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/namelists_refug.nml b/regtests/mww3_test_07/input/namelists_refug.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/namelists_zcmpl.nml b/regtests/mww3_test_07/input/namelists_zcmpl.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/points.depth b/regtests/mww3_test_07/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/points.list b/regtests/mww3_test_07/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/rect1.depth b/regtests/mww3_test_07/input/rect1.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ref1.msh b/regtests/mww3_test_07/input/ref1.msh old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/switch b/regtests/mww3_test_07/input/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/switch_MPI b/regtests/mww3_test_07/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_esmf.rc b/regtests/mww3_test_07/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_gint_grdset.inp b/regtests/mww3_test_07/input/ww3_gint_grdset.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_points.inp b/regtests/mww3_test_07/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_points.nml b/regtests/mww3_test_07/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_rect1.inp b/regtests/mww3_test_07/input/ww3_grid_rect1.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_rect1.nml b/regtests/mww3_test_07/input/ww3_grid_rect1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_refug.inp b/regtests/mww3_test_07/input/ww3_grid_refug.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_refug.nml b/regtests/mww3_test_07/input/ww3_grid_refug.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_zcmpl.inp b/regtests/mww3_test_07/input/ww3_grid_zcmpl.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_grid_zcmpl.nml b/regtests/mww3_test_07/input/ww3_grid_zcmpl.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_multi_grdset.inp b/regtests/mww3_test_07/input/ww3_multi_grdset.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_multi_grdset.nml b/regtests/mww3_test_07/input/ww3_multi_grdset.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_ounf.inp b/regtests/mww3_test_07/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_ounf.nml b/regtests/mww3_test_07/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_ounf_rect1.inp b/regtests/mww3_test_07/input/ww3_ounf_rect1.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_ounf_rect1.nml b/regtests/mww3_test_07/input/ww3_ounf_rect1.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_ounf_zcmpl.inp b/regtests/mww3_test_07/input/ww3_ounf_zcmpl.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_ounf_zcmpl.nml b/regtests/mww3_test_07/input/ww3_ounf_zcmpl.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/ww3_strt.inp b/regtests/mww3_test_07/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_07/input/zcmpl.depth b/regtests/mww3_test_07/input/zcmpl.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/grdset_a b/regtests/mww3_test_08/i_highres_multi/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/highres.depth b/regtests/mww3_test_08/i_highres_multi/highres.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/highres.obst b/regtests/mww3_test_08/i_highres_multi/highres.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/namelists_highres.nml b/regtests/mww3_test_08/i_highres_multi/namelists_highres.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/points.list b/regtests/mww3_test_08/i_highres_multi/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/switch b/regtests/mww3_test_08/i_highres_multi/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_grid_highres.inp b/regtests/mww3_test_08/i_highres_multi/ww3_grid_highres.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_grid_highres.nml b/regtests/mww3_test_08/i_highres_multi/ww3_grid_highres.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.inp b/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.nml b/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_ounf.inp b/regtests/mww3_test_08/i_highres_multi/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_ounf.nml b/regtests/mww3_test_08/i_highres_multi/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_outf.inp b/regtests/mww3_test_08/i_highres_multi/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_prep_ice.inp b/regtests/mww3_test_08/i_highres_multi/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_prep_wind.inp b/regtests/mww3_test_08/i_highres_multi/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_strt.inp b/regtests/mww3_test_08/i_highres_multi/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/inner.depth b/regtests/mww3_test_08/i_highres_shel/inner.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/inner.obst b/regtests/mww3_test_08/i_highres_shel/inner.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/namelists_inner.nml b/regtests/mww3_test_08/i_highres_shel/namelists_inner.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/points.list b/regtests/mww3_test_08/i_highres_shel/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/switch b/regtests/mww3_test_08/i_highres_shel/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_grid.inp b/regtests/mww3_test_08/i_highres_shel/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_grid.nml b/regtests/mww3_test_08/i_highres_shel/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_ounf.inp b/regtests/mww3_test_08/i_highres_shel/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_ounf.nml b/regtests/mww3_test_08/i_highres_shel/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_outf.inp b/regtests/mww3_test_08/i_highres_shel/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_prep_ice.inp b/regtests/mww3_test_08/i_highres_shel/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_prep_wind.inp b/regtests/mww3_test_08/i_highres_shel/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_shel.inp b/regtests/mww3_test_08/i_highres_shel/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_shel.nml b/regtests/mww3_test_08/i_highres_shel/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_strt.inp b/regtests/mww3_test_08/i_highres_shel/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/inner.depth b/regtests/mww3_test_08/i_highres_shel_IC1/inner.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/inner.obst b/regtests/mww3_test_08/i_highres_shel_IC1/inner.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/namelists_inner.nml b/regtests/mww3_test_08/i_highres_shel_IC1/namelists_inner.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/points.list b/regtests/mww3_test_08/i_highres_shel_IC1/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/switch b/regtests/mww3_test_08/i_highres_shel_IC1/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_grid.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_grid.nml b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.nml b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_outf.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_prep_ice.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_prep_wind.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.nml b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_strt.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/grdset_a b/regtests/mww3_test_08/i_lowres_multi/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/lowres.depth b/regtests/mww3_test_08/i_lowres_multi/lowres.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/lowres.obst b/regtests/mww3_test_08/i_lowres_multi/lowres.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/namelists_lowres.nml b/regtests/mww3_test_08/i_lowres_multi/namelists_lowres.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/points.list b/regtests/mww3_test_08/i_lowres_multi/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/switch b/regtests/mww3_test_08/i_lowres_multi/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_grid_lowres.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_grid_lowres.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_grid_lowres.nml b/regtests/mww3_test_08/i_lowres_multi/ww3_grid_lowres.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.nml b/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.nml b/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_outf.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_prep_ice.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_prep_wind.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_strt.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/namelists_outer.nml b/regtests/mww3_test_08/i_lowres_shel/namelists_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/outer.depth b/regtests/mww3_test_08/i_lowres_shel/outer.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/outer.obst b/regtests/mww3_test_08/i_lowres_shel/outer.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/points.list b/regtests/mww3_test_08/i_lowres_shel/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/switch b/regtests/mww3_test_08/i_lowres_shel/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_grid.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_grid.nml b/regtests/mww3_test_08/i_lowres_shel/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.nml b/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_outf.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_prep_ice.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_prep_wind.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_shel.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_shel.nml b/regtests/mww3_test_08/i_lowres_shel/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_strt.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/namelists_outer.nml b/regtests/mww3_test_08/i_lowres_shel_IC1/namelists_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/outer.depth b/regtests/mww3_test_08/i_lowres_shel_IC1/outer.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/outer.obst b/regtests/mww3_test_08/i_lowres_shel_IC1/outer.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/points.list b/regtests/mww3_test_08/i_lowres_shel_IC1/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/switch b/regtests/mww3_test_08/i_lowres_shel_IC1/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_grid.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_grid.nml b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.nml b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_outf.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_prep_ice.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_prep_wind.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.nml b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_strt.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/info b/regtests/mww3_test_08/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/grdset_a b/regtests/mww3_test_08/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ice.ascii b/regtests/mww3_test_08/input/ice.ascii old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ice1.ascii b/regtests/mww3_test_08/input/ice1.ascii old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/inner.depth b/regtests/mww3_test_08/input/inner.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/inner.obst b/regtests/mww3_test_08/input/inner.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/namelists_inner.nml b/regtests/mww3_test_08/input/namelists_inner.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/namelists_outer.nml b/regtests/mww3_test_08/input/namelists_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/outer.depth b/regtests/mww3_test_08/input/outer.depth old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/outer.obst b/regtests/mww3_test_08/input/outer.obst old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/points.list b/regtests/mww3_test_08/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/switch b/regtests/mww3_test_08/input/switch old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/switch_ST4_PR3_UQ_IS2_MPI b/regtests/mww3_test_08/input/switch_ST4_PR3_UQ_IS2_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/switch_ST4_PR3_UQ_MPI b/regtests/mww3_test_08/input/switch_ST4_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/wnd.ascii b/regtests/mww3_test_08/input/wnd.ascii old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_grid_inner.inp b/regtests/mww3_test_08/input/ww3_grid_inner.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_grid_inner.nml b/regtests/mww3_test_08/input/ww3_grid_inner.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_grid_outer.inp b/regtests/mww3_test_08/input/ww3_grid_outer.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_grid_outer.nml b/regtests/mww3_test_08/input/ww3_grid_outer.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_08/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_multi_grdset_a.nml b/regtests/mww3_test_08/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_ounf.inp b/regtests/mww3_test_08/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_ounf.nml b/regtests/mww3_test_08/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_outf.inp b/regtests/mww3_test_08/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_prep_ice.inp b/regtests/mww3_test_08/input/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_prep_ice1.inp b/regtests/mww3_test_08/input/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_prep_wind.inp b/regtests/mww3_test_08/input/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_08/input/ww3_strt.inp b/regtests/mww3_test_08/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/info b/regtests/mww3_test_09/info old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/grdset_a b/regtests/mww3_test_09/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/namelists_Huron.nml b/regtests/mww3_test_09/input/namelists_Huron.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/namelists_Michi.nml b/regtests/mww3_test_09/input/namelists_Michi.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/namelists_Super.nml b/regtests/mww3_test_09/input/namelists_Super.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/points.list b/regtests/mww3_test_09/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/points_huron.list b/regtests/mww3_test_09/input/points_huron.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/points_michi.list b/regtests/mww3_test_09/input/points_michi.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/points_super.list b/regtests/mww3_test_09/input/points_super.list old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/switch_MPI b/regtests/mww3_test_09/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/switch_MPI_ASCII b/regtests/mww3_test_09/input/switch_MPI_ASCII deleted file mode 100644 index e3d9628f0..000000000 --- a/regtests/mww3_test_09/input/switch_MPI_ASCII +++ /dev/null @@ -1 +0,0 @@ -ASCII NOGRB MPI DIST PR2 UNO SMC FLX2 LN0 ST0 NL0 BT0 DB0 TR0 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 diff --git a/regtests/mww3_test_09/input/ww3_grid_Huron.inp b/regtests/mww3_test_09/input/ww3_grid_Huron.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_grid_Huron.nml b/regtests/mww3_test_09/input/ww3_grid_Huron.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_grid_Michi.inp b/regtests/mww3_test_09/input/ww3_grid_Michi.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_grid_Michi.nml b/regtests/mww3_test_09/input/ww3_grid_Michi.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_grid_Super.inp b/regtests/mww3_test_09/input/ww3_grid_Super.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_grid_Super.nml b/regtests/mww3_test_09/input/ww3_grid_Super.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_09/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_multi_grdset_a.nml b/regtests/mww3_test_09/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_ounf.inp b/regtests/mww3_test_09/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_ounf.nml b/regtests/mww3_test_09/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_outf.inp b/regtests/mww3_test_09/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_outp.inp b/regtests/mww3_test_09/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/mww3_test_09/input/ww3_strt.inp b/regtests/mww3_test_09/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/unittests/CMakeLists.txt b/regtests/unittests/CMakeLists.txt deleted file mode 100644 index 69445bfb7..000000000 --- a/regtests/unittests/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -# This is the CMake file for the model/tests directory in the WW3 -# project. -# -# Ed Hartnett, 10/14/23 - -# Some very small test files may be committed to the repo. This -# function copies such a data file to the build directory. -function(copy_test_data name) - message(STATUS "Copying ${name} to ${CMAKE_CURRENT_BINARY_DIR}") - file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/data/${name}" - DESTINATION ${CMAKE_CURRENT_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) -endfunction() - -# Some very small test files may be committed to the repo. This -# function copies such a data file to the build directory. -function(copy_test_data_2 srcname destname) - message(STATUS "Copying ${srcname} to ${CMAKE_CURRENT_BINARY_DIR}/${destname}") - file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/data/${srcname}" - DESTINATION "${CMAKE_BINARY_DIR}" - FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) - file(RENAME "${CMAKE_BINARY_DIR}/${srcname}" "${CMAKE_BINARY_DIR}/${destname}") -endfunction() - -# Function to build and run a test. -function(unit_test name) - add_executable(${name} ${name}.F90) - target_link_libraries(${name} PRIVATE ww3_lib) - add_test(NAME ${name} COMMAND ${name}) -endfunction() - -# Copy test data files that are in the repo to the build directory. -copy_test_data(switch.io) -copy_test_data_2(ww3_grid.inp ww3_grid.inp) - -# Build and run the tests. -unit_test(test_io_points_bin) - - diff --git a/regtests/unittests/data/switch.io b/regtests/unittests/data/switch.io deleted file mode 100644 index c97e44765..000000000 --- a/regtests/unittests/data/switch.io +++ /dev/null @@ -1 +0,0 @@ -NOGRB SHRD PR1 FLX2 LN0 ST0 NL0 BT0 DB0 TR0 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 \ No newline at end of file diff --git a/regtests/unittests/data/ww3_grid.inp b/regtests/unittests/data/ww3_grid.inp deleted file mode 100644 index 6f45604f3..000000000 --- a/regtests/unittests/data/ww3_grid.inp +++ /dev/null @@ -1,48 +0,0 @@ -$ WAVEWATCH III Grid preprocessor input file -$ ------------------------------------------ - '1-D REFRACTION X ' -$ - 1.25 0.08 3 24 0. -$ - F T F T F F - 300. 300. 150. 300. -$ - &PRO1 CFLTM = 0.75 / - &PRO2 CFLTM = 0.75 / - &PRO3 CFLTM = 0.75, WDTHCG = 0., WDTHTH = 0. / - &PRO4 CFLTM = 0.75, RNFAC = 0., RSFAC = 0. / -END OF NAMELISTS -$ - 'RECT' F 'NONE' - 13 3 - 5.E3 5.E3 1. - -5.E3 -5.E3 1. -$ - -1. 1. 10 -1. 2 1 '(....)' 'UNIT' 'input' -$ -$ First grid -$ - 50 50 50 45 40 35 30 25 20 15 10 5 0 - 50 50 50 45 40 35 30 25 20 15 10 5 0 - 50 50 50 45 40 35 30 25 20 15 10 5 0 -$ -$ Second grid -$ -$ 0 5 10 15 20 25 30 35 40 45 50 50 50 -$ 0 5 10 15 20 25 30 35 40 45 50 50 50 -$ 0 5 10 15 20 25 30 35 40 45 50 50 50 -$ - 10 1 1 '(....)' 'PART' 'input' -$ -$ First grid -$ - 2 2 F -$ -$ Second grid -$ -$ 12 2 F - 0 0 F - 0 0 F - 0 0 -$ - 0. 0. 0. 0. 0 diff --git a/regtests/unittests/data/ww3_outp.inp b/regtests/unittests/data/ww3_outp.inp deleted file mode 100644 index dd728819f..000000000 --- a/regtests/unittests/data/ww3_outp.inp +++ /dev/null @@ -1,8 +0,0 @@ -$ - 20100101 000000 3600 1 -$ - 1 - -1 -$ - 4 - 2 30 20100101 000000 'UTC' diff --git a/regtests/unittests/test_io_points_bin.F90 b/regtests/unittests/test_io_points_bin.F90 deleted file mode 100644 index 69c197bce..000000000 --- a/regtests/unittests/test_io_points_bin.F90 +++ /dev/null @@ -1,152 +0,0 @@ -! This is a test for model IO for WW3. This tests the legacy (binary) -! output of points data, done by function W3IOPO(). -! -! Ed Hartnett 10/14/23 -program test_io_points_bin - use w3iopomd - use w3gdatmd - use w3wdatmd - use w3odatmd - use w3iogrmd - use w3adatmd - implicit none - - integer, target :: i - integer :: ndsop, iotest, ndsbul, ndsm - integer :: ndstrc, ntrace - character*7 expected_ptnme - character*6 my_fmt - real :: expected_loc_1 - integer :: write_test_file - - print *, 'Testing WW3 binary point file code.' - - ! These are mysterious but have to be called or else the IPASS - ! variable does not exist and w3iopo() crashes. - call w3nmod(1, 6, 6) - call w3setg(1, 6, 6) - call w3ndat(6, 6) - call w3setw(1, 6, 6) - call w3nout(6, 6) - call w3seto(1, 6, 6) - - ndsm = 20 - ndsop = 20 - ndsbul = 0 - ndstrc = 6 - ntrace = 10 - - ! Create a point output file needed for this test. - if (write_test_file() .ne. 0) stop 1 - - write (ndso,900) -900 FORMAT (/15X,' *** WAVEWATCH III Point output post.*** '/ & - 15X,'==============================================='/) - - ! 2. Read model definition file. - CALL W3IOGR('READ', NDSM) - WRITE (NDSO,920) GNAME -920 FORMAT (' Grid name : ',A/) - - ! This will not work. But cannot be tested because it will change the value of IPASS, -! call w3iopo('EAD', ndsop, iotest) -! if (iotest .ne. 1) stop 7 - - ! Read the file out_pnt.ww3 from the model/tests/data directory. - call w3iopo('READ', ndsop, iotest) - if (iotest .ne. 0) stop 10 - close(ndsop) - - ! Make sure we got the values we expected. - if (nopts .ne. 11) stop 11 - expected_loc_1 = 0.0 - do i = 1, nopts - ! Check ptnme and ptloc arrays. - print *, ptnme(i), ptloc(1, i), ptloc(2, i) - if (i .lt. 10) then - my_fmt = '(a,i1)' - else - my_fmt = '(a,i2)' - endif - write(fmt = my_fmt, unit=expected_ptnme) 'Point', i - if (ptnme(i) .ne. expected_ptnme) stop 20 - print *, expected_loc_1 - if (ptloc(1, i) .ne. expected_loc_1) stop 21 - expected_loc_1 = expected_loc_1 + 5000.0 - if (ptloc(2, i) .ne. 0) stop 22 - end do - - print *, 'OK!' - print *, 'SUCCESS!' -end program test_io_points_bin - -integer function write_test_file() - implicit none - - integer :: ntlu, nk, nth, nopts - character(len=10), parameter :: veropt = '2021-04-06' - character(len=31), parameter :: idstr = 'WAVEWATCH III POINT OUTPUT FILE' - real :: ptloc(2,11) = reshape((/ 0., 0., 5000., 0., 10000., 0., 15000., 0., & - 20000., 0., 25000., 0., 30000., 0., 35000., 0., 40000., 0., 45000., 0., 50000., 0. /), & - (/ 2, 11 /)) - character*40 ptnme(11) - integer :: time(2) = (/ 19680606, 0 /) - integer :: nspec = 72 - integer :: iw(11) = (/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /) - integer :: ii(11) = (/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /) - integer :: il(11) = (/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /) - real :: iceo(11) = (/ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. /) - real :: iceho(11) = (/ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. /) - real :: icefo(11) = (/ 1000., 1000., 1000., 1000., 1000., 1000., 1000., 1000., 1000., 1000., 1000. /) - real :: dpo(11) = (/ 50., 50., 45., 40., 35., 30., 25., 20., 15., 10., 5. /) - real :: wao(11) = (/ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. /) - real :: wdo(11) = (/ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. /) - real :: aso(11) = (/ -999.900024, -999.900024, -999.900024, -999.900024, -999.900024, & - -999.900024, -999.900024, -999.900024, -999.900024, -999.900024, -999.900024 /) - real :: cao(11) = (/ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. /) - real :: cdo(11) = (/ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0. /) - character*13 :: grdid(11) - real :: spco(72, 11) - integer :: i, j - integer :: ierr - - ! Initialize some values. - ntlu = 21 - nk = 3 - nth = 24 - nopts = 11 - do i = 1, nopts - if (i .le. 9) then - write(ptnme(i), '(a,i1)') 'Point', i - else - write(ptnme(i), '(a,i2)') 'Point', i - endif - grdid(i) = 'ww3 ' - end do - - ! Open the file. - open(ntlu, file="out_pnt.ww3", form="unformatted", status="replace", & - action="write", convert="big_endian", iostat=ierr) - if (ierr .ne. 0) stop 111 - - ! Write our values. - write (ntlu, iostat=ierr) idstr, veropt, nk, nth, nopts - if (ierr .ne. 0) stop 112 - write (ntlu, iostat=ierr) ((ptloc(j,i),j=1,2),i=1,nopts), (ptnme(i),i=1,nopts) - if (ierr .ne. 0) stop 113 - write (ntlu, iostat=ierr) time - if (ierr .ne. 0) stop 114 - do i=1, nopts - write (ntlu, iostat=ierr) iw(i), ii(i), il(i), dpo(i), wao(i), wdo(i), & - aso(i), cao(i), cdo(i), iceo(i), iceho(i), & - icefo(i), grdid(i), (spco(j,i),j=1,nspec) - if (ierr .ne. 0) stop 115 - enddo - - ! Close the file. - close(ntlu) - - ! We're done! - write_test_file = 0 -end function write_test_file - diff --git a/regtests/ww3_ta1/info b/regtests/ww3_ta1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD0F_O/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/anl.grbtxt b/regtests/ww3_ta1/input_UPD0F_O/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/gx_outp.inp b/regtests/ww3_ta1/input_UPD0F_O/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD0F_O/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/points.list b/regtests/ww3_ta1/input_UPD0F_O/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/switch b/regtests/ww3_ta1/input_UPD0F_O/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/switch_ST4 b/regtests/ww3_ta1/input_UPD0F_O/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/switch_T b/regtests/ww3_ta1/input_UPD0F_O/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_grid.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_grid.nml b/regtests/ww3_ta1/input_UPD0F_O/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD0F_O/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.nml b/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_strt.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD0F_O/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD0F_U/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/gx_outp.inp b/regtests/ww3_ta1/input_UPD0F_U/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD0F_U/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/points.list b/regtests/ww3_ta1/input_UPD0F_U/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/switch b/regtests/ww3_ta1/input_UPD0F_U/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/switch_ST4 b/regtests/ww3_ta1/input_UPD0F_U/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/switch_T b/regtests/ww3_ta1/input_UPD0F_U/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_grid.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_grid.nml b/regtests/ww3_ta1/input_UPD0F_U/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD0F_U/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.nml b/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_strt.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD0F_U/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD2_O/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/anl.grbtxt b/regtests/ww3_ta1/input_UPD2_O/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/gx_outp.inp b/regtests/ww3_ta1/input_UPD2_O/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD2_O/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/points.list b/regtests/ww3_ta1/input_UPD2_O/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/switch b/regtests/ww3_ta1/input_UPD2_O/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/switch_ST4 b/regtests/ww3_ta1/input_UPD2_O/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/switch_T b/regtests/ww3_ta1/input_UPD2_O/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_grid.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_grid.nml b/regtests/ww3_ta1/input_UPD2_O/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD2_O/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_shel.nml b/regtests/ww3_ta1/input_UPD2_O/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_strt.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD2_O/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD2_U/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/anl.grbtxt b/regtests/ww3_ta1/input_UPD2_U/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/gx_outp.inp b/regtests/ww3_ta1/input_UPD2_U/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD2_U/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/points.list b/regtests/ww3_ta1/input_UPD2_U/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/switch b/regtests/ww3_ta1/input_UPD2_U/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/switch_ST4 b/regtests/ww3_ta1/input_UPD2_U/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/switch_T b/regtests/ww3_ta1/input_UPD2_U/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_grid.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_grid.nml b/regtests/ww3_ta1/input_UPD2_U/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD2_U/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_shel.nml b/regtests/ww3_ta1/input_UPD2_U/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_strt.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD2_U/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD2_U_cap/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/anl.grbtxt b/regtests/ww3_ta1/input_UPD2_U_cap/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/gx_outp.inp b/regtests/ww3_ta1/input_UPD2_U_cap/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD2_U_cap/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/points.list b/regtests/ww3_ta1/input_UPD2_U_cap/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/switch b/regtests/ww3_ta1/input_UPD2_U_cap/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/switch_ST4 b/regtests/ww3_ta1/input_UPD2_U_cap/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/switch_T b/regtests/ww3_ta1/input_UPD2_U_cap/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_grid.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_grid.nml b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.nml b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_strt.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD3_O/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/anl.grbtxt b/regtests/ww3_ta1/input_UPD3_O/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/gx_outp.inp b/regtests/ww3_ta1/input_UPD3_O/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD3_O/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/points.list b/regtests/ww3_ta1/input_UPD3_O/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/switch b/regtests/ww3_ta1/input_UPD3_O/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/switch_ST4 b/regtests/ww3_ta1/input_UPD3_O/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/switch_T b/regtests/ww3_ta1/input_UPD3_O/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_grid.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_grid.nml b/regtests/ww3_ta1/input_UPD3_O/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD3_O/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_shel.nml b/regtests/ww3_ta1/input_UPD3_O/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_strt.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD3_O/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD3_U/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/anl.grbtxt b/regtests/ww3_ta1/input_UPD3_U/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/gx_outp.inp b/regtests/ww3_ta1/input_UPD3_U/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD3_U/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/points.list b/regtests/ww3_ta1/input_UPD3_U/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/switch b/regtests/ww3_ta1/input_UPD3_U/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/switch_ST4 b/regtests/ww3_ta1/input_UPD3_U/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/switch_T b/regtests/ww3_ta1/input_UPD3_U/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_grid.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_grid.nml b/regtests/ww3_ta1/input_UPD3_U/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD3_U/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_shel.nml b/regtests/ww3_ta1/input_UPD3_U/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_strt.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD3_U/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD3_U_cap/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/anl.grbtxt b/regtests/ww3_ta1/input_UPD3_U_cap/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/gx_outp.inp b/regtests/ww3_ta1/input_UPD3_U_cap/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD3_U_cap/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/points.list b/regtests/ww3_ta1/input_UPD3_U_cap/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/switch b/regtests/ww3_ta1/input_UPD3_U_cap/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/switch_ST4 b/regtests/ww3_ta1/input_UPD3_U_cap/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/switch_T b/regtests/ww3_ta1/input_UPD3_U_cap/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_grid.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_grid.nml b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.nml b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_strt.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD5_O/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/anl.grbtxt b/regtests/ww3_ta1/input_UPD5_O/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/gx_outp.inp b/regtests/ww3_ta1/input_UPD5_O/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD5_O/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/points.list b/regtests/ww3_ta1/input_UPD5_O/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/switch b/regtests/ww3_ta1/input_UPD5_O/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/switch_ST4 b/regtests/ww3_ta1/input_UPD5_O/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/switch_T b/regtests/ww3_ta1/input_UPD5_O/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_grid.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_grid.nml b/regtests/ww3_ta1/input_UPD5_O/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD5_O/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD5_O/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_shel.nml b/regtests/ww3_ta1/input_UPD5_O/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_strt.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD5_O/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD5_U/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/anl.grbtxt b/regtests/ww3_ta1/input_UPD5_U/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/gx_outp.inp b/regtests/ww3_ta1/input_UPD5_U/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD5_U/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/points.list b/regtests/ww3_ta1/input_UPD5_U/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/switch b/regtests/ww3_ta1/input_UPD5_U/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/switch_ST4 b/regtests/ww3_ta1/input_UPD5_U/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/switch_T b/regtests/ww3_ta1/input_UPD5_U/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_grid.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_grid.nml b/regtests/ww3_ta1/input_UPD5_U/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD5_U/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD5_U/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_shel.nml b/regtests/ww3_ta1/input_UPD5_U/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_strt.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD5_U/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD5_U_cap/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/anl.grbtxt b/regtests/ww3_ta1/input_UPD5_U_cap/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/gx_outp.inp b/regtests/ww3_ta1/input_UPD5_U_cap/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD5_U_cap/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/points.list b/regtests/ww3_ta1/input_UPD5_U_cap/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/switch b/regtests/ww3_ta1/input_UPD5_U_cap/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/switch_ST4 b/regtests/ww3_ta1/input_UPD5_U_cap/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/switch_T b/regtests/ww3_ta1/input_UPD5_U_cap/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_grid.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_grid.nml b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.nml b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_strt.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD6_O/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/anl.grbtxt b/regtests/ww3_ta1/input_UPD6_O/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/gx_outp.inp b/regtests/ww3_ta1/input_UPD6_O/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD6_O/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/points.list b/regtests/ww3_ta1/input_UPD6_O/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/switch b/regtests/ww3_ta1/input_UPD6_O/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/switch_ST4 b/regtests/ww3_ta1/input_UPD6_O/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/switch_T b/regtests/ww3_ta1/input_UPD6_O/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_grid.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_grid.nml b/regtests/ww3_ta1/input_UPD6_O/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD6_O/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD6_O/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_shel.nml b/regtests/ww3_ta1/input_UPD6_O/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_strt.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD6_O/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD6_U/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/anl.grbtxt b/regtests/ww3_ta1/input_UPD6_U/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/gx_outp.inp b/regtests/ww3_ta1/input_UPD6_U/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD6_U/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/points.list b/regtests/ww3_ta1/input_UPD6_U/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/switch b/regtests/ww3_ta1/input_UPD6_U/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/switch_ST4 b/regtests/ww3_ta1/input_UPD6_U/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/switch_T b/regtests/ww3_ta1/input_UPD6_U/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_grid.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_grid.nml b/regtests/ww3_ta1/input_UPD6_U/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD6_U/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD6_U/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_shel.nml b/regtests/ww3_ta1/input_UPD6_U/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_strt.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD6_U/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/HOMOGENEOUS.depth b/regtests/ww3_ta1/input_UPD6_U_cap/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/anl.grbtxt b/regtests/ww3_ta1/input_UPD6_U_cap/anl.grbtxt old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/gx_outp.inp b/regtests/ww3_ta1/input_UPD6_U_cap/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/namelists_HOMOGENEOUS.nml b/regtests/ww3_ta1/input_UPD6_U_cap/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/points.list b/regtests/ww3_ta1/input_UPD6_U_cap/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/switch b/regtests/ww3_ta1/input_UPD6_U_cap/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/switch_ST4 b/regtests/ww3_ta1/input_UPD6_U_cap/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/switch_T b/regtests/ww3_ta1/input_UPD6_U_cap/switch_T old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_grid.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_grid.nml b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounf.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounp_spec.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounp_spec.nml b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_outp_spec.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_outp_tab50.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.nml b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_strt.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_uprstr.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_uprstr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_uprstr.nml b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_uprstr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/info b/regtests/ww3_tbt1.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/1-D.depth b/regtests/ww3_tbt1.1/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/mudden.txt b/regtests/ww3_tbt1.1/input/mudden.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/mudthk.40cm b/regtests/ww3_tbt1.1/input/mudthk.40cm old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/mudthk.6cm b/regtests/ww3_tbt1.1/input/mudthk.6cm old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/mudvis.txt b/regtests/ww3_tbt1.1/input/mudvis.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/namelists_1-D.nml b/regtests/ww3_tbt1.1/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/points.list b/regtests/ww3_tbt1.1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/switch b/regtests/ww3_tbt1.1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/switch_BT8 b/regtests/ww3_tbt1.1/input/switch_BT8 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/switch_BT8_MPI b/regtests/ww3_tbt1.1/input/switch_BT8_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/switch_BT9 b/regtests/ww3_tbt1.1/input/switch_BT9 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/switch_BT9_MPI b/regtests/ww3_tbt1.1/input/switch_BT9_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_grid.inp b/regtests/ww3_tbt1.1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_grid.nml b/regtests/ww3_tbt1.1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_ounf.inp b/regtests/ww3_tbt1.1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_ounf.nml b/regtests/ww3_tbt1.1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_ounp.inp b/regtests/ww3_tbt1.1/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_ounp.nml b/regtests/ww3_tbt1.1/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_outf.inp b/regtests/ww3_tbt1.1/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_outp_ITYPE3.inp b/regtests/ww3_tbt1.1/input/ww3_outp_ITYPE3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_outp_spec.inp b/regtests/ww3_tbt1.1/input/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_outp_tab50.inp b/regtests/ww3_tbt1.1/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_prep_mudd.inp b/regtests/ww3_tbt1.1/input/ww3_prep_mudd.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_prep_mudt.inp b/regtests/ww3_tbt1.1/input/ww3_prep_mudt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_prep_mudv.inp b/regtests/ww3_tbt1.1/input/ww3_prep_mudv.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_shel.inp b/regtests/ww3_tbt1.1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_shel.nml b/regtests/ww3_tbt1.1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt1.1/input/ww3_strt.inp b/regtests/ww3_tbt1.1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/info b/regtests/ww3_tbt2.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/2-D.depth b/regtests/ww3_tbt2.1/input/2-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/2-D.obst b/regtests/ww3_tbt2.1/input/2-D.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/bot.dat b/regtests/ww3_tbt2.1/input/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/iceconc.txt b/regtests/ww3_tbt2.1/input/iceconc.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/make_nonuniform_nonstationary_mud.m b/regtests/ww3_tbt2.1/input/make_nonuniform_nonstationary_mud.m old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/mud_dens.txt b/regtests/ww3_tbt2.1/input/mud_dens.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/mud_thickn.txt b/regtests/ww3_tbt2.1/input/mud_thickn.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/mud_visc.txt b/regtests/ww3_tbt2.1/input/mud_visc.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/namelists_2-D.nml b/regtests/ww3_tbt2.1/input/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/points.list b/regtests/ww3_tbt2.1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/switch b/regtests/ww3_tbt2.1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/switch_BT8 b/regtests/ww3_tbt2.1/input/switch_BT8 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/switch_BT8_MPI b/regtests/ww3_tbt2.1/input/switch_BT8_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/switch_BT9 b/regtests/ww3_tbt2.1/input/switch_BT9 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/switch_BT9_MPI b/regtests/ww3_tbt2.1/input/switch_BT9_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_grid.inp b/regtests/ww3_tbt2.1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_grid.nml b/regtests/ww3_tbt2.1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_ounf.inp b/regtests/ww3_tbt2.1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_ounf.nml b/regtests/ww3_tbt2.1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_ounp.inp b/regtests/ww3_tbt2.1/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_ounp.nml b/regtests/ww3_tbt2.1/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_outf.inp b/regtests/ww3_tbt2.1/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_outp_spec.inp b/regtests/ww3_tbt2.1/input/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_outp_tab50.inp b/regtests/ww3_tbt2.1/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_outp_tab51.inp b/regtests/ww3_tbt2.1/input/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_prep_conc.inp b/regtests/ww3_tbt2.1/input/ww3_prep_conc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_prep_mud1.inp b/regtests/ww3_tbt2.1/input/ww3_prep_mud1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_prep_mud2.inp b/regtests/ww3_tbt2.1/input/ww3_prep_mud2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_prep_mud3.inp b/regtests/ww3_tbt2.1/input/ww3_prep_mud3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_shel.inp b/regtests/ww3_tbt2.1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_shel.nml b/regtests/ww3_tbt2.1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tbt2.1/input/ww3_strt.inp b/regtests/ww3_tbt2.1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/info b/regtests/ww3_tc1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/C360.depth b/regtests/ww3_tc1/input/C360.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/C365.depth b/regtests/ww3_tc1/input/C365.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/STANDARD.depth b/regtests/ww3_tc1/input/STANDARD.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/STD.depth b/regtests/ww3_tc1/input/STD.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/namelists_360_day.nml b/regtests/ww3_tc1/input/namelists_360_day.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/namelists_365_day.nml b/regtests/ww3_tc1/input/namelists_365_day.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/namelists_C360.nml b/regtests/ww3_tc1/input/namelists_C360.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/namelists_C365.nml b/regtests/ww3_tc1/input/namelists_C365.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/namelists_STD.nml b/regtests/ww3_tc1/input/namelists_STD.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/namelists_standard.nml b/regtests/ww3_tc1/input/namelists_standard.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/points.list b/regtests/ww3_tc1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/switch b/regtests/ww3_tc1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_grid_C360.inp b/regtests/ww3_tc1/input/ww3_grid_C360.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_grid_C360.nml b/regtests/ww3_tc1/input/ww3_grid_C360.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_grid_C365.inp b/regtests/ww3_tc1/input/ww3_grid_C365.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_grid_C365.nml b/regtests/ww3_tc1/input/ww3_grid_C365.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_grid_STD.inp b/regtests/ww3_tc1/input/ww3_grid_STD.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_grid_STD.nml b/regtests/ww3_tc1/input/ww3_grid_STD.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_ounf.inp b/regtests/ww3_tc1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_ounf.nml b/regtests/ww3_tc1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_shel.inp b/regtests/ww3_tc1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_shel.nml b/regtests/ww3_tc1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tc1/input/ww3_strt.inp b/regtests/ww3_tc1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/info b/regtests/ww3_tic1.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/10km.depth b/regtests/ww3_tic1.1/input_IC1/10km.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/20km.depth b/regtests/ww3_tic1.1/input_IC1/20km.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/5km.depth b/regtests/ww3_tic1.1/input_IC1/5km.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/depth1d.flat b/regtests/ww3_tic1.1/input_IC1/depth1d.flat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/icecon.13x3.txt b/regtests/ww3_tic1.1/input_IC1/icecon.13x3.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/namelists_10km.nml b/regtests/ww3_tic1.1/input_IC1/namelists_10km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/namelists_20km.nml b/regtests/ww3_tic1.1/input_IC1/namelists_20km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/namelists_5km.nml b/regtests/ww3_tic1.1/input_IC1/namelists_5km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/points.list b/regtests/ww3_tic1.1/input_IC1/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/switch b/regtests/ww3_tic1.1/input_IC1/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_grid_10km.inp b/regtests/ww3_tic1.1/input_IC1/ww3_grid_10km.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_grid_10km.nml b/regtests/ww3_tic1.1/input_IC1/ww3_grid_10km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_grid_20km.inp b/regtests/ww3_tic1.1/input_IC1/ww3_grid_20km.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_grid_20km.nml b/regtests/ww3_tic1.1/input_IC1/ww3_grid_20km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_grid_5km.inp b/regtests/ww3_tic1.1/input_IC1/ww3_grid_5km.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_grid_5km.nml b/regtests/ww3_tic1.1/input_IC1/ww3_grid_5km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC1/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC1/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC1/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC1/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC1/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC1/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC1/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC1/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC1/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC1/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/namelists_100m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/namelists_100m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/namelists_2500m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/namelists_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/namelists_350m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/namelists_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/points.list b/regtests/ww3_tic1.1/input_IC1_156x3/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/switch b/regtests/ww3_tic1.1/input_IC1_156x3/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_100m.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_100m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_100m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_100m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_2500m.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_2500m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_2500m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_350m.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_350m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_350m.nml b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_grid_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/icecon.txt b/regtests/ww3_tic1.1/input_IC2_ifr/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC2_ifr/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/namelists_1000m_lf.nml b/regtests/ww3_tic1.1/input_IC2_ifr/namelists_1000m_lf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/namelists_1000m_nondisp.nml b/regtests/ww3_tic1.1/input_IC2_ifr/namelists_1000m_nondisp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/points.list b/regtests/ww3_tic1.1/input_IC2_ifr/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/switch b/regtests/ww3_tic1.1/input_IC2_ifr/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/switch_IC2IS2 b/regtests/ww3_tic1.1/input_IC2_ifr/switch_IC2IS2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/switch_IS2 b/regtests/ww3_tic1.1/input_IC2_ifr/switch_IS2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_lf.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_lf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_lf.nml b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_lf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_nondisp.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_nondisp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_nondisp.nml b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_grid_1000m_nondisp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_prep_ice1.inp.not_used b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_prep_ice1.inp.not_used old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/icecon.156x3.txt b/regtests/ww3_tic1.1/input_IC2_nondisp/icecon.156x3.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/namelists_1-D.nml b/regtests/ww3_tic1.1/input_IC2_nondisp/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/points.list b/regtests/ww3_tic1.1/input_IC2_nondisp/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/switch b/regtests/ww3_tic1.1/input_IC2_nondisp/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_grid.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_grid.nml b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/icecon.156x3.40percent b/regtests/ww3_tic1.1/input_IC2_nrl/icecon.156x3.40percent old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC2_nrl/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/namelists_1000m_nondisp.nml b/regtests/ww3_tic1.1/input_IC2_nrl/namelists_1000m_nondisp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/points.list b/regtests/ww3_tic1.1/input_IC2_nrl/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/switch b/regtests/ww3_tic1.1/input_IC2_nrl/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m_nondisp.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m_nondisp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m_nondisp.nml b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_grid_1000m_nondisp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_prep_ice1.inp.not_used b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_prep_ice1.inp.not_used old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC3/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/namelists_2500m.nml b/regtests/ww3_tic1.1/input_IC3/namelists_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/namelists_350m.nml b/regtests/ww3_tic1.1/input_IC3/namelists_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/namelists_CGICE_NOCHENG.nml b/regtests/ww3_tic1.1/input_IC3/namelists_CGICE_NOCHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/namelists_CGOW_NOCHENG.nml b/regtests/ww3_tic1.1/input_IC3/namelists_CGOW_NOCHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/points.list b/regtests/ww3_tic1.1/input_IC3/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/switch b/regtests/ww3_tic1.1/input_IC3/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC3/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC3/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_2500m.inp b/regtests/ww3_tic1.1/input_IC3/ww3_grid_2500m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_2500m.nml b/regtests/ww3_tic1.1/input_IC3/ww3_grid_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_350m.inp b/regtests/ww3_tic1.1/input_IC3/ww3_grid_350m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_350m.nml b/regtests/ww3_tic1.1/input_IC3/ww3_grid_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGICE_NOCHENG.inp b/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGICE_NOCHENG.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGICE_NOCHENG.nml b/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGICE_NOCHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGOW_NOCHENG.inp b/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGOW_NOCHENG.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGOW_NOCHENG.nml b/regtests/ww3_tic1.1/input_IC3/ww3_grid_CGOW_NOCHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC3/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC3/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC3/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC3/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC3/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC3/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC3/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC3/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC3/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC3/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/namelists_CGICE_CHENG.nml b/regtests/ww3_tic1.1/input_IC3NL/namelists_CGICE_CHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/namelists_CGOW_CHENG.nml b/regtests/ww3_tic1.1/input_IC3NL/namelists_CGOW_CHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/namelists_CGOW_NOCHENG.nml b/regtests/ww3_tic1.1/input_IC3NL/namelists_CGOW_NOCHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/points.list b/regtests/ww3_tic1.1/input_IC3NL/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/switch b/regtests/ww3_tic1.1/input_IC3NL/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/switch_MPI b/regtests/ww3_tic1.1/input_IC3NL/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGICE_CHENG.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGICE_CHENG.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGICE_CHENG.nml b/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGICE_CHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_CHENG.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_CHENG.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_CHENG.nml b/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_CHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_NOCHENG.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_NOCHENG.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_NOCHENG.nml b/regtests/ww3_tic1.1/input_IC3NL/ww3_grid_CGOW_NOCHENG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/namelists_1-D.nml b/regtests/ww3_tic1.1/input_IC3_nondisp/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/points.list b/regtests/ww3_tic1.1/input_IC3_nondisp/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/switch b/regtests/ww3_tic1.1/input_IC3_nondisp/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_grid.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_grid.nml b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M1/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/points.list b/regtests/ww3_tic1.1/input_IC4_M1/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/switch b/regtests/ww3_tic1.1/input_IC4_M1/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M1/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M2/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/points.list b/regtests/ww3_tic1.1/input_IC4_M2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/switch b/regtests/ww3_tic1.1/input_IC4_M2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M2/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M3/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/points.list b/regtests/ww3_tic1.1/input_IC4_M3/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/switch b/regtests/ww3_tic1.1/input_IC4_M3/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M3/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M4/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/points.list b/regtests/ww3_tic1.1/input_IC4_M4/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/switch b/regtests/ww3_tic1.1/input_IC4_M4/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M4/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M5/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/points.list b/regtests/ww3_tic1.1/input_IC4_M5/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/switch b/regtests/ww3_tic1.1/input_IC4_M5/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC4_M5/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/namelists_1-D.nml b/regtests/ww3_tic1.1/input_IC4_M6/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/namelists_206H.nml b/regtests/ww3_tic1.1/input_IC4_M6/namelists_206H.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/namelists_206L.nml b/regtests/ww3_tic1.1/input_IC4_M6/namelists_206L.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/points.list b/regtests/ww3_tic1.1/input_IC4_M6/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/switch b/regtests/ww3_tic1.1/input_IC4_M6/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid.nml b/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206H.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206H.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206H.nml b/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206H.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206L.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206L.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206L.nml b/regtests/ww3_tic1.1/input_IC4_M6/ww3_grid_206L.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/namelists_1-D.nml b/regtests/ww3_tic1.1/input_IC4_M7/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/points.list b/regtests/ww3_tic1.1/input_IC4_M7/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/switch b/regtests/ww3_tic1.1/input_IC4_M7/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_grid.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_grid.nml b/regtests/ww3_tic1.1/input_IC4_M7/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC5_M1/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/namelists_2500m.nml b/regtests/ww3_tic1.1/input_IC5_M1/namelists_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/namelists_350m.nml b/regtests/ww3_tic1.1/input_IC5_M1/namelists_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/points.list b/regtests/ww3_tic1.1/input_IC5_M1/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/switch b/regtests/ww3_tic1.1/input_IC5_M1/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_2500m.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_2500m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_2500m.nml b/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_350m.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_350m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_350m.nml b/regtests/ww3_tic1.1/input_IC5_M1/ww3_grid_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC5_M1/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC5_M1/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M1/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC5_M1/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC5_M2/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/namelists_2500m.nml b/regtests/ww3_tic1.1/input_IC5_M2/namelists_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/namelists_350m.nml b/regtests/ww3_tic1.1/input_IC5_M2/namelists_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/points.list b/regtests/ww3_tic1.1/input_IC5_M2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/switch b/regtests/ww3_tic1.1/input_IC5_M2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_2500m.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_2500m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_2500m.nml b/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_350m.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_350m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_350m.nml b/regtests/ww3_tic1.1/input_IC5_M2/ww3_grid_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC5_M2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC5_M2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M2/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC5_M2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IC5_M3/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/namelists_2500m.nml b/regtests/ww3_tic1.1/input_IC5_M3/namelists_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/namelists_350m.nml b/regtests/ww3_tic1.1/input_IC5_M3/namelists_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/points.list b/regtests/ww3_tic1.1/input_IC5_M3/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/switch b/regtests/ww3_tic1.1/input_IC5_M3/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_2500m.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_2500m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_2500m.nml b/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_2500m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_350m.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_350m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_350m.nml b/regtests/ww3_tic1.1/input_IC5_M3/ww3_grid_350m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC5_M3/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_outf.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_shel.nml b/regtests/ww3_tic1.1/input_IC5_M3/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IC5_M3/ww3_strt.inp b/regtests/ww3_tic1.1/input_IC5_M3/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/depth1d.flat b/regtests/ww3_tic1.1/input_IS2/depth1d.flat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/icec1.txt b/regtests/ww3_tic1.1/input_IS2/icec1.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/icecon.txt b/regtests/ww3_tic1.1/input_IS2/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/namelists_1000m.nml b/regtests/ww3_tic1.1/input_IS2/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/namelists_1000m_v2.nml b/regtests/ww3_tic1.1/input_IS2/namelists_1000m_v2.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/points.list b/regtests/ww3_tic1.1/input_IS2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/switch b/regtests/ww3_tic1.1/input_IS2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m.inp b/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m.nml b/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m_v2.inp b/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m_v2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m_v2.nml b/regtests/ww3_tic1.1/input_IS2/ww3_grid_1000m_v2.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IS2/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IS2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_outf.inp b/regtests/ww3_tic1.1/input_IS2/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_outp_spec.inp b/regtests/ww3_tic1.1/input_IS2/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_outp_tab50.inp b/regtests/ww3_tic1.1/input_IS2/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_outp_tab51.inp b/regtests/ww3_tic1.1/input_IS2/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_prep_ice1.inp b/regtests/ww3_tic1.1/input_IS2/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_prep_icecon.inp b/regtests/ww3_tic1.1/input_IS2/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_shel.inp b/regtests/ww3_tic1.1/input_IS2/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_shel.nml b/regtests/ww3_tic1.1/input_IS2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_strt.inp b/regtests/ww3_tic1.1/input_IS2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/info b/regtests/ww3_tic1.2/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/bot.dat b/regtests/ww3_tic1.2/input_IC3_A0.5k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/icecon.txt b/regtests/ww3_tic1.2/input_IC3_A0.5k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_A0.5k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_A0.5k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/points.list b/regtests/ww3_tic1.2/input_IC3_A0.5k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/switch b/regtests/ww3_tic1.2/input_IC3_A0.5k/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/switch_MPI b/regtests/ww3_tic1.2/input_IC3_A0.5k/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/bot.dat b/regtests/ww3_tic1.2/input_IC3_A1.0k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/icecon.txt b/regtests/ww3_tic1.2/input_IC3_A1.0k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_A1.0k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_A1.0k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/points.list b/regtests/ww3_tic1.2/input_IC3_A1.0k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/switch b/regtests/ww3_tic1.2/input_IC3_A1.0k/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/switch_MPI b/regtests/ww3_tic1.2/input_IC3_A1.0k/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/bot.dat b/regtests/ww3_tic1.2/input_IC3_A2.5k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/icecon.txt b/regtests/ww3_tic1.2/input_IC3_A2.5k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_A2.5k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_A2.5k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/points.list b/regtests/ww3_tic1.2/input_IC3_A2.5k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/switch b/regtests/ww3_tic1.2/input_IC3_A2.5k/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/switch_MPI b/regtests/ww3_tic1.2/input_IC3_A2.5k/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/bot.dat b/regtests/ww3_tic1.2/input_IC3_B0.5k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/icecon.txt b/regtests/ww3_tic1.2/input_IC3_B0.5k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_B0.5k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_B0.5k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/points.list b/regtests/ww3_tic1.2/input_IC3_B0.5k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/switch b/regtests/ww3_tic1.2/input_IC3_B0.5k/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/switch_MPI b/regtests/ww3_tic1.2/input_IC3_B0.5k/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/bot.dat b/regtests/ww3_tic1.2/input_IC3_B1.0k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/icecon.txt b/regtests/ww3_tic1.2/input_IC3_B1.0k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_B1.0k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_B1.0k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/points.list b/regtests/ww3_tic1.2/input_IC3_B1.0k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/switch b/regtests/ww3_tic1.2/input_IC3_B1.0k/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/switch_MPI b/regtests/ww3_tic1.2/input_IC3_B1.0k/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/bot.dat b/regtests/ww3_tic1.2/input_IC3_B2.5k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/icecon.txt b/regtests/ww3_tic1.2/input_IC3_B2.5k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_B2.5k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_B2.5k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/points.list b/regtests/ww3_tic1.2/input_IC3_B2.5k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/switch b/regtests/ww3_tic1.2/input_IC3_B2.5k/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/switch_MPI b/regtests/ww3_tic1.2/input_IC3_B2.5k/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/bot.dat b/regtests/ww3_tic1.2/input_IC3_CHENG/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/icecon.txt b/regtests/ww3_tic1.2/input_IC3_CHENG/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_CHENG/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_CHENG/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_CHENG/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_CHENG/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/points.list b/regtests/ww3_tic1.2/input_IC3_CHENG/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/switch b/regtests/ww3_tic1.2/input_IC3_CHENG/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/switch_MPI b/regtests/ww3_tic1.2/input_IC3_CHENG/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/bot.dat b/regtests/ww3_tic1.2/input_IC3_V1_G/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/icecon.txt b/regtests/ww3_tic1.2/input_IC3_V1_G/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_V1_G/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_V1_G/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_V1_G/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_V1_G/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_V1_G/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/points.list b/regtests/ww3_tic1.2/input_IC3_V1_G/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/switch b/regtests/ww3_tic1.2/input_IC3_V1_G/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/bot.dat b/regtests/ww3_tic1.2/input_IC3_V1_h/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/icecon.txt b/regtests/ww3_tic1.2/input_IC3_V1_h/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/icepar1.dat b/regtests/ww3_tic1.2/input_IC3_V1_h/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/icepar2.dat b/regtests/ww3_tic1.2/input_IC3_V1_h/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/icepar3.dat b/regtests/ww3_tic1.2/input_IC3_V1_h/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/icepar4.dat b/regtests/ww3_tic1.2/input_IC3_V1_h/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/namelists_1-D.nml b/regtests/ww3_tic1.2/input_IC3_V1_h/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/points.list b/regtests/ww3_tic1.2/input_IC3_V1_h/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/switch b/regtests/ww3_tic1.2/input_IC3_V1_h/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_grid.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_grid.nml b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounp.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounp.nml b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outf.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outp_spec.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outp_tab50.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outp_tab51.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice1.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice2.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice3.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice4.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_icecon.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.nml b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_strt.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/info b/regtests/ww3_tic1.3/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/bot.dat b/regtests/ww3_tic1.3/input_IC3_0.5k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/icecon.txt b/regtests/ww3_tic1.3/input_IC3_0.5k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/icepar1.dat b/regtests/ww3_tic1.3/input_IC3_0.5k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/icepar2.dat b/regtests/ww3_tic1.3/input_IC3_0.5k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/icepar3.dat b/regtests/ww3_tic1.3/input_IC3_0.5k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/icepar4.dat b/regtests/ww3_tic1.3/input_IC3_0.5k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/namelists_1-D.nml b/regtests/ww3_tic1.3/input_IC3_0.5k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/points.list b/regtests/ww3_tic1.3/input_IC3_0.5k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR1_REFRX b/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR1_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR2_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR2_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR2_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR2_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR3_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR3_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR3_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_0.5k/switch_PR3_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_grid.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_grid.nml b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounp.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounp.nml b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outf.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outp_spec.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outp_tab50.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outp_tab51.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice1.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice2.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice3.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice4.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_icecon.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.nml b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_strt.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/bot.dat b/regtests/ww3_tic1.3/input_IC3_2.5k/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/icecon.txt b/regtests/ww3_tic1.3/input_IC3_2.5k/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/icepar1.dat b/regtests/ww3_tic1.3/input_IC3_2.5k/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/icepar2.dat b/regtests/ww3_tic1.3/input_IC3_2.5k/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/icepar3.dat b/regtests/ww3_tic1.3/input_IC3_2.5k/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/icepar4.dat b/regtests/ww3_tic1.3/input_IC3_2.5k/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/namelists_1-D.nml b/regtests/ww3_tic1.3/input_IC3_2.5k/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/points.list b/regtests/ww3_tic1.3/input_IC3_2.5k/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR1_REFRX b/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR1_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR2_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR2_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR2_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR2_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR3_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR3_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR3_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_2.5k/switch_PR3_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_grid.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_grid.nml b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounp.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounp.nml b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outf.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outp_spec.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outp_tab50.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outp_tab51.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice1.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice2.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice3.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice4.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_icecon.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.nml b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_strt.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/bot.dat b/regtests/ww3_tic1.3/input_IC3_CHENG/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/boto.dat b/regtests/ww3_tic1.3/input_IC3_CHENG/boto.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/icecon.txt b/regtests/ww3_tic1.3/input_IC3_CHENG/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/icepar1.dat b/regtests/ww3_tic1.3/input_IC3_CHENG/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/namelists_1-D.nml b/regtests/ww3_tic1.3/input_IC3_CHENG/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/points.list b/regtests/ww3_tic1.3/input_IC3_CHENG/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR1_REFRX b/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR1_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR2_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR2_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR2_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR2_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR3_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR3_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR3_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_CHENG/switch_PR3_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_grid.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_grid.nml b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounp.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounp.nml b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outf.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outp_spec.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outp_tab50.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outp_tab51.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_prep_ice1.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_prep_icecon.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.nml b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_strt.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/bot.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icecon.txt b/regtests/ww3_tic1.3/input_IC3_V1_G/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar1.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar1_1.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar1_1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar1_2.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar1_2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar2.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar3.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar4.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar4_1000.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar4_1000.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/icepar4_100000.dat b/regtests/ww3_tic1.3/input_IC3_V1_G/icepar4_100000.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/namelists_1-D.nml b/regtests/ww3_tic1.3/input_IC3_V1_G/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/points.list b/regtests/ww3_tic1.3/input_IC3_V1_G/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR1_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR1_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR2_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR2_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR2_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR2_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR3_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR3_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR3_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_G/switch_PR3_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_grid.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_grid.nml b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounp.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounp.nml b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outf.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outp_spec.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outp_tab50.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outp_tab51.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice1.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice2.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice3.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice4.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_icecon.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.nml b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_strt.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/bot.dat b/regtests/ww3_tic1.3/input_IC3_V1_h/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/icecon.txt b/regtests/ww3_tic1.3/input_IC3_V1_h/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/icepar1.dat b/regtests/ww3_tic1.3/input_IC3_V1_h/icepar1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/icepar2.dat b/regtests/ww3_tic1.3/input_IC3_V1_h/icepar2.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/icepar3.dat b/regtests/ww3_tic1.3/input_IC3_V1_h/icepar3.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/icepar4.dat b/regtests/ww3_tic1.3/input_IC3_V1_h/icepar4.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/namelists_1-D.nml b/regtests/ww3_tic1.3/input_IC3_V1_h/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/points.list b/regtests/ww3_tic1.3/input_IC3_V1_h/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR1_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR1_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR2_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR2_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR2_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR2_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR3_UNO_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR3_UNO_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR3_UQ_REFRX b/regtests/ww3_tic1.3/input_IC3_V1_h/switch_PR3_UQ_REFRX old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_grid.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_grid.nml b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounp.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounp.nml b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outf.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outp_spec.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outp_tab50.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outp_tab51.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice1.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice2.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice3.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice4.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_ice4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_icecon.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_prep_icecon.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.nml b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_strt.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/info b/regtests/ww3_tic1.4/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/namelists_1000m.nml b/regtests/ww3_tic1.4/input/namelists_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/namelists_IC2_1000m.nml b/regtests/ww3_tic1.4/input/namelists_IC2_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/namelists_IC2b_1000m.nml b/regtests/ww3_tic1.4/input/namelists_IC2b_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/namelists_IC2c_1000m.nml b/regtests/ww3_tic1.4/input/namelists_IC2c_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/namelists_IC2d_1000m.nml b/regtests/ww3_tic1.4/input/namelists_IC2d_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/points.list b/regtests/ww3_tic1.4/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/switch_IC0IS2 b/regtests/ww3_tic1.4/input/switch_IC0IS2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/switch_IC1IS2 b/regtests/ww3_tic1.4/input/switch_IC1IS2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/switch_IC2IS2 b/regtests/ww3_tic1.4/input/switch_IC2IS2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_1000m.nml b/regtests/ww3_tic1.4/input/ww3_grid_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_IC2_1000m.nml b/regtests/ww3_tic1.4/input/ww3_grid_IC2_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_IC2b_1000m.inp b/regtests/ww3_tic1.4/input/ww3_grid_IC2b_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_IC2b_1000m.nml b/regtests/ww3_tic1.4/input/ww3_grid_IC2b_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_IC2c_1000m.inp b/regtests/ww3_tic1.4/input/ww3_grid_IC2c_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_IC2c_1000m.nml b/regtests/ww3_tic1.4/input/ww3_grid_IC2c_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_IC2d_1000m.inp b/regtests/ww3_tic1.4/input/ww3_grid_IC2d_1000m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_grid_IC2d_1000m.nml b/regtests/ww3_tic1.4/input/ww3_grid_IC2d_1000m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_ounf.nml b/regtests/ww3_tic1.4/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_ounp.nml b/regtests/ww3_tic1.4/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_ounp_src.nml b/regtests/ww3_tic1.4/input/ww3_ounp_src.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_prnc_ice.nml b/regtests/ww3_tic1.4/input/ww3_prnc_ice.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_prnc_ice1.nml b/regtests/ww3_tic1.4/input/ww3_prnc_ice1.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_prnc_ice5.nml b/regtests/ww3_tic1.4/input/ww3_prnc_ice5.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic1.4/input/ww3_shel.nml b/regtests/ww3_tic1.4/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/info b/regtests/ww3_tic2.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/bot.dat b/regtests/ww3_tic2.1/input_IC1/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/icecon.txt b/regtests/ww3_tic2.1/input_IC1/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/iceparam1.txt b/regtests/ww3_tic2.1/input_IC1/iceparam1.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/namelists_2-D.nml b/regtests/ww3_tic2.1/input_IC1/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/points.list b/regtests/ww3_tic2.1/input_IC1/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/switch b/regtests/ww3_tic2.1/input_IC1/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_grid.inp b/regtests/ww3_tic2.1/input_IC1/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_grid.nml b/regtests/ww3_tic2.1/input_IC1/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_ounf.inp b/regtests/ww3_tic2.1/input_IC1/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_ounf.nml b/regtests/ww3_tic2.1/input_IC1/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_ounp.inp b/regtests/ww3_tic2.1/input_IC1/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_ounp.nml b/regtests/ww3_tic2.1/input_IC1/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_outf.inp b/regtests/ww3_tic2.1/input_IC1/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_outp_spec.inp b/regtests/ww3_tic2.1/input_IC1/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_outp_tab50.inp b/regtests/ww3_tic2.1/input_IC1/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_outp_tab51.inp b/regtests/ww3_tic2.1/input_IC1/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_prep_ice.inp b/regtests/ww3_tic2.1/input_IC1/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_prep_ice1.inp b/regtests/ww3_tic2.1/input_IC1/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_shel.inp b/regtests/ww3_tic2.1/input_IC1/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_shel.nml b/regtests/ww3_tic2.1/input_IC1/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_strt.inp b/regtests/ww3_tic2.1/input_IC1/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/bot.dat b/regtests/ww3_tic2.1/input_IC2IS2/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/icecon.txt b/regtests/ww3_tic2.1/input_IC2IS2/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/iceparam1.txt b/regtests/ww3_tic2.1/input_IC2IS2/iceparam1.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/namelists_2-D.nml b/regtests/ww3_tic2.1/input_IC2IS2/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/points.list b/regtests/ww3_tic2.1/input_IC2IS2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/switch b/regtests/ww3_tic2.1/input_IC2IS2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_grid.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_grid.nml b/regtests/ww3_tic2.1/input_IC2IS2/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.nml b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounp.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounp.nml b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_outf.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_outp_spec.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_outp_tab50.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_outp_tab51.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_prep_ice.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_prep_ice1.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_prep_ice1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.nml b/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_strt.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/icecon.txt b/regtests/ww3_tic2.1/input_IC4/icecon.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/namelists_2-D.nml b/regtests/ww3_tic2.1/input_IC4/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/points.list b/regtests/ww3_tic2.1/input_IC4/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/switch b/regtests/ww3_tic2.1/input_IC4/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_grid.inp b/regtests/ww3_tic2.1/input_IC4/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_grid.nml b/regtests/ww3_tic2.1/input_IC4/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_outf.inp b/regtests/ww3_tic2.1/input_IC4/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_prep_ice.inp b/regtests/ww3_tic2.1/input_IC4/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_shel.inp b/regtests/ww3_tic2.1/input_IC4/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_shel.nml b/regtests/ww3_tic2.1/input_IC4/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_strt.inp b/regtests/ww3_tic2.1/input_IC4/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/info b/regtests/ww3_tic2.2/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/IDEALIZED.depth b/regtests/ww3_tic2.2/input/IDEALIZED.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/iceparam1.txt b/regtests/ww3_tic2.2/input/iceparam1.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/namelists_IDEALIZED.nml b/regtests/ww3_tic2.2/input/namelists_IDEALIZED.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/points.list b/regtests/ww3_tic2.2/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/switch b/regtests/ww3_tic2.2/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_grid.inp b/regtests/ww3_tic2.2/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_grid.nml b/regtests/ww3_tic2.2/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_ounf.inp b/regtests/ww3_tic2.2/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_ounf.nml b/regtests/ww3_tic2.2/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_ounp.inp b/regtests/ww3_tic2.2/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_ounp.nml b/regtests/ww3_tic2.2/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_outf.inp b/regtests/ww3_tic2.2/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_outp_spec.inp b/regtests/ww3_tic2.2/input/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_outp_tab50.inp b/regtests/ww3_tic2.2/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_outp_tab51.inp b/regtests/ww3_tic2.2/input/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_prep_ice.inp b/regtests/ww3_tic2.2/input/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_prep_ice5.inp b/regtests/ww3_tic2.2/input/ww3_prep_ice5.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_shel.inp b/regtests/ww3_tic2.2/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_shel.nml b/regtests/ww3_tic2.2/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input/ww3_strt.inp b/regtests/ww3_tic2.2/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/IDEALIZED.depth b/regtests/ww3_tic2.2/input_IC2/IDEALIZED.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/bot.dat b/regtests/ww3_tic2.2/input_IC2/bot.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/iceparam1.txt b/regtests/ww3_tic2.2/input_IC2/iceparam1.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/namelists_IDEALIZED.nml b/regtests/ww3_tic2.2/input_IC2/namelists_IDEALIZED.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/points.list b/regtests/ww3_tic2.2/input_IC2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/switch b/regtests/ww3_tic2.2/input_IC2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/test.obs b/regtests/ww3_tic2.2/input_IC2/test.obs old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_grid.inp b/regtests/ww3_tic2.2/input_IC2/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_grid.nml b/regtests/ww3_tic2.2/input_IC2/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_ounf.inp b/regtests/ww3_tic2.2/input_IC2/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_ounf.nml b/regtests/ww3_tic2.2/input_IC2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_ounp.inp b/regtests/ww3_tic2.2/input_IC2/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_ounp.nml b/regtests/ww3_tic2.2/input_IC2/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_outf.inp b/regtests/ww3_tic2.2/input_IC2/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_outp_spec.inp b/regtests/ww3_tic2.2/input_IC2/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_outp_tab50.inp b/regtests/ww3_tic2.2/input_IC2/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_outp_tab51.inp b/regtests/ww3_tic2.2/input_IC2/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_prep_ice.inp b/regtests/ww3_tic2.2/input_IC2/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_prep_ice5.inp b/regtests/ww3_tic2.2/input_IC2/ww3_prep_ice5.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_shel.inp b/regtests/ww3_tic2.2/input_IC2/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_shel.nml b/regtests/ww3_tic2.2/input_IC2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_strt.inp b/regtests/ww3_tic2.2/input_IC2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/creepOnly.depth b/regtests/ww3_tic2.3/input/creepOnly.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/creep_scat.depth b/regtests/ww3_tic2.3/input/creep_scat.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/dissipOnly.depth b/regtests/ww3_tic2.3/input/dissipOnly.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/dissip_scat.depth b/regtests/ww3_tic2.3/input/dissip_scat.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/namelists_creepOnly.nml b/regtests/ww3_tic2.3/input/namelists_creepOnly.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/namelists_creep_scat.nml b/regtests/ww3_tic2.3/input/namelists_creep_scat.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/namelists_dissipOnly.nml b/regtests/ww3_tic2.3/input/namelists_dissipOnly.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/namelists_dissip_scat.nml b/regtests/ww3_tic2.3/input/namelists_dissip_scat.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/namelists_scat.nml b/regtests/ww3_tic2.3/input/namelists_scat.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/points.list b/regtests/ww3_tic2.3/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/scat.depth b/regtests/ww3_tic2.3/input/scat.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/switch_IC2IS2 b/regtests/ww3_tic2.3/input/switch_IC2IS2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_grid_creepOnly.nml b/regtests/ww3_tic2.3/input/ww3_grid_creepOnly.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_grid_creep_scat.nml b/regtests/ww3_tic2.3/input/ww3_grid_creep_scat.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_grid_dissipOnly.nml b/regtests/ww3_tic2.3/input/ww3_grid_dissipOnly.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_grid_dissip_scat.nml b/regtests/ww3_tic2.3/input/ww3_grid_dissip_scat.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_grid_scat.nml b/regtests/ww3_tic2.3/input/ww3_grid_scat.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_ounf.nml b/regtests/ww3_tic2.3/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_ounp.nml b/regtests/ww3_tic2.3/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tic2.3/input/ww3_shel.nml b/regtests/ww3_tic2.3/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/info b/regtests/ww3_tig1.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/HOMOGENEOUS.depth b/regtests/ww3_tig1.1/input/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/namelists_HOMOGENEOUS.nml b/regtests/ww3_tig1.1/input/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/points.list b/regtests/ww3_tig1.1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/switch b/regtests/ww3_tig1.1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/ww3_grid.inp b/regtests/ww3_tig1.1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/ww3_grid.nml b/regtests/ww3_tig1.1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/ww3_ounp.inp b/regtests/ww3_tig1.1/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/ww3_ounp.nml b/regtests/ww3_tig1.1/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/ww3_shel.inp b/regtests/ww3_tig1.1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/ww3_shel.nml b/regtests/ww3_tig1.1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/input/ww3_strt.inp b/regtests/ww3_tig1.1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/matlab/plotspec.m b/regtests/ww3_tig1.1/matlab/plotspec.m old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/matlab/readWWNC_SPEC.m b/regtests/ww3_tig1.1/matlab/readWWNC_SPEC.m old mode 100644 new mode 100755 diff --git a/regtests/ww3_tig1.1/ww3_outp_spec.inp b/regtests/ww3_tig1.1/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/info b/regtests/ww3_tnc1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/grid.bot b/regtests/ww3_tnc1/input/grid.bot old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/grid.mask b/regtests/ww3_tnc1/input/grid.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/namelists_NC.nml b/regtests/ww3_tnc1/input/namelists_NC.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/ounfmeta.inp b/regtests/ww3_tnc1/input/ounfmeta.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/switch b/regtests/ww3_tnc1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/ww3_grid.inp b/regtests/ww3_tnc1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/ww3_grid.nml b/regtests/ww3_tnc1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/ww3_ounf.inp b/regtests/ww3_tnc1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/ww3_ounf.nml b/regtests/ww3_tnc1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/ww3_shel.inp b/regtests/ww3_tnc1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tnc1/input/ww3_shel.nml b/regtests/ww3_tnc1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/info b/regtests/ww3_tp1.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/1-D.depth b/regtests/ww3_tp1.1/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/namelists_1-D.nml b/regtests/ww3_tp1.1/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/points.list b/regtests/ww3_tp1.1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/switch b/regtests/ww3_tp1.1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/switch_PR1 b/regtests/ww3_tp1.1/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/switch_PR2_UNO b/regtests/ww3_tp1.1/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/switch_PR2_UQ b/regtests/ww3_tp1.1/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/switch_PR3_UNO b/regtests/ww3_tp1.1/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/switch_PR3_UQ b/regtests/ww3_tp1.1/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_grid.inp b/regtests/ww3_tp1.1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_grid.nml b/regtests/ww3_tp1.1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_ounf.inp b/regtests/ww3_tp1.1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_ounf.nml b/regtests/ww3_tp1.1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_ounp.inp b/regtests/ww3_tp1.1/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_ounp.nml b/regtests/ww3_tp1.1/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_outf.inp b/regtests/ww3_tp1.1/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_outp.inp b/regtests/ww3_tp1.1/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_shel.inp b/regtests/ww3_tp1.1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_shel.nml b/regtests/ww3_tp1.1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input/ww3_strt.inp b/regtests/ww3_tp1.1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/1-D.depth b/regtests/ww3_tp1.1/input2/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/namelists_1-D.nml b/regtests/ww3_tp1.1/input2/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/points.list b/regtests/ww3_tp1.1/input2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/switch b/regtests/ww3_tp1.1/input2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/switch_PR1 b/regtests/ww3_tp1.1/input2/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/switch_PR2_UNO b/regtests/ww3_tp1.1/input2/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/switch_PR2_UQ b/regtests/ww3_tp1.1/input2/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/switch_PR3_UNO b/regtests/ww3_tp1.1/input2/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/switch_PR3_UQ b/regtests/ww3_tp1.1/input2/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_grid.inp b/regtests/ww3_tp1.1/input2/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_grid.nml b/regtests/ww3_tp1.1/input2/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_ounf.inp b/regtests/ww3_tp1.1/input2/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_ounf.nml b/regtests/ww3_tp1.1/input2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_outf.inp b/regtests/ww3_tp1.1/input2/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_outp.inp b/regtests/ww3_tp1.1/input2/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_shel.inp b/regtests/ww3_tp1.1/input2/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_shel.nml b/regtests/ww3_tp1.1/input2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.1/input2/ww3_strt.inp b/regtests/ww3_tp1.1/input2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/info b/regtests/ww3_tp1.10/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/1-D.depth b/regtests/ww3_tp1.10/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/bottomspectrum.inp b/regtests/ww3_tp1.10/input/bottomspectrum.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/namelists_1-D.nml b/regtests/ww3_tp1.10/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/points.list b/regtests/ww3_tp1.10/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/switch b/regtests/ww3_tp1.10/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_grid.inp b/regtests/ww3_tp1.10/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_grid.nml b/regtests/ww3_tp1.10/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_ounf.inp b/regtests/ww3_tp1.10/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_ounf.nml b/regtests/ww3_tp1.10/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_ounp.inp b/regtests/ww3_tp1.10/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_ounp.nml b/regtests/ww3_tp1.10/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_shel.inp b/regtests/ww3_tp1.10/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_shel.nml b/regtests/ww3_tp1.10/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.10/input/ww3_strt.inp b/regtests/ww3_tp1.10/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/info b/regtests/ww3_tp1.11/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/1-D.depth b/regtests/ww3_tp1.11/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/namelists_1-D.nml b/regtests/ww3_tp1.11/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/points.list b/regtests/ww3_tp1.11/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/spec.list b/regtests/ww3_tp1.11/input/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/switch b/regtests/ww3_tp1.11/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/ww3.Point0_196806_spec.cdl b/regtests/ww3_tp1.11/input/ww3.Point0_196806_spec.cdl old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/ww3_bounc.nml b/regtests/ww3_tp1.11/input/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/ww3_grid.nml b/regtests/ww3_tp1.11/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/ww3_ounf.nml b/regtests/ww3_tp1.11/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/ww3_ounp.nml b/regtests/ww3_tp1.11/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/ww3_shel.nml b/regtests/ww3_tp1.11/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input/ww3_strt.inp b/regtests/ww3_tp1.11/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/1-D.depth b/regtests/ww3_tp1.11/input2/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/namelists_1-D.nml b/regtests/ww3_tp1.11/input2/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/points.list b/regtests/ww3_tp1.11/input2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/spec.list b/regtests/ww3_tp1.11/input2/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/switch b/regtests/ww3_tp1.11/input2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/ww3.Point0_196806_spec.cdl b/regtests/ww3_tp1.11/input2/ww3.Point0_196806_spec.cdl old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/ww3_bounc.nml b/regtests/ww3_tp1.11/input2/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/ww3_grid.nml b/regtests/ww3_tp1.11/input2/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/ww3_ounf.nml b/regtests/ww3_tp1.11/input2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/ww3_ounp.nml b/regtests/ww3_tp1.11/input2/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/ww3_shel.nml b/regtests/ww3_tp1.11/input2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.11/input2/ww3_strt.inp b/regtests/ww3_tp1.11/input2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/info b/regtests/ww3_tp1.2/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/1-D.depth b/regtests/ww3_tp1.2/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/namelists_1-D.nml b/regtests/ww3_tp1.2/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/switch b/regtests/ww3_tp1.2/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/switch_PR1 b/regtests/ww3_tp1.2/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/switch_PR2_UNO b/regtests/ww3_tp1.2/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/switch_PR2_UQ b/regtests/ww3_tp1.2/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/switch_PR3_UNO b/regtests/ww3_tp1.2/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/switch_PR3_UQ b/regtests/ww3_tp1.2/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_grid.inp b/regtests/ww3_tp1.2/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_grid.nml b/regtests/ww3_tp1.2/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_ounf.inp b/regtests/ww3_tp1.2/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_ounf.nml b/regtests/ww3_tp1.2/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_outf.inp b/regtests/ww3_tp1.2/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_shel.inp b/regtests/ww3_tp1.2/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_shel.nml b/regtests/ww3_tp1.2/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.2/input/ww3_strt.inp b/regtests/ww3_tp1.2/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/info b/regtests/ww3_tp1.3/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/MONOCHROMATIC.depth b/regtests/ww3_tp1.3/input/MONOCHROMATIC.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/namelists_MONOCHROMATIC.nml b/regtests/ww3_tp1.3/input/namelists_MONOCHROMATIC.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/switch b/regtests/ww3_tp1.3/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/switch_PR1 b/regtests/ww3_tp1.3/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/switch_PR2_UNO b/regtests/ww3_tp1.3/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/switch_PR2_UQ b/regtests/ww3_tp1.3/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/switch_PR3_UNO b/regtests/ww3_tp1.3/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/switch_PR3_UQ b/regtests/ww3_tp1.3/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_grid.inp b/regtests/ww3_tp1.3/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_grid.nml b/regtests/ww3_tp1.3/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_ounf.inp b/regtests/ww3_tp1.3/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_ounf.nml b/regtests/ww3_tp1.3/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_outf_Hxy.inp b/regtests/ww3_tp1.3/input/ww3_outf_Hxy.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_outf_depth.inp b/regtests/ww3_tp1.3/input/ww3_outf_depth.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_outf_flds_hrly.inp b/regtests/ww3_tp1.3/input/ww3_outf_flds_hrly.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_outf_whgt_end.inp b/regtests/ww3_tp1.3/input/ww3_outf_whgt_end.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_shel.inp b/regtests/ww3_tp1.3/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_shel.nml b/regtests/ww3_tp1.3/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.3/input/ww3_strt.inp b/regtests/ww3_tp1.3/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/info b/regtests/ww3_tp1.4/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/1-D.depth b/regtests/ww3_tp1.4/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/namelists_1-D.nml b/regtests/ww3_tp1.4/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/points.list b/regtests/ww3_tp1.4/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/switch b/regtests/ww3_tp1.4/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/switch_PR1 b/regtests/ww3_tp1.4/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/switch_PR2_UNO b/regtests/ww3_tp1.4/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/switch_PR2_UQ b/regtests/ww3_tp1.4/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/switch_PR3_UNO b/regtests/ww3_tp1.4/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/switch_PR3_UQ b/regtests/ww3_tp1.4/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_grid.inp b/regtests/ww3_tp1.4/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_grid.nml b/regtests/ww3_tp1.4/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_ounf.inp b/regtests/ww3_tp1.4/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_ounf.nml b/regtests/ww3_tp1.4/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_ounp.inp b/regtests/ww3_tp1.4/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_ounp.nml b/regtests/ww3_tp1.4/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_outf.inp b/regtests/ww3_tp1.4/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_outp_spec.inp b/regtests/ww3_tp1.4/input/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_outp_tab50.inp b/regtests/ww3_tp1.4/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_outp_tab51.inp b/regtests/ww3_tp1.4/input/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_shel.inp b/regtests/ww3_tp1.4/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_shel.nml b/regtests/ww3_tp1.4/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.4/input/ww3_strt.inp b/regtests/ww3_tp1.4/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/info b/regtests/ww3_tp1.5/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/1-D.depth b/regtests/ww3_tp1.5/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/namelists_1-D.nml b/regtests/ww3_tp1.5/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/points.list b/regtests/ww3_tp1.5/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/switch b/regtests/ww3_tp1.5/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/switch_PR1 b/regtests/ww3_tp1.5/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/switch_PR2_UNO b/regtests/ww3_tp1.5/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/switch_PR2_UQ b/regtests/ww3_tp1.5/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/switch_PR3_UNO b/regtests/ww3_tp1.5/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/switch_PR3_UQ b/regtests/ww3_tp1.5/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_grid.inp b/regtests/ww3_tp1.5/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_grid.nml b/regtests/ww3_tp1.5/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_ounf.inp b/regtests/ww3_tp1.5/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_ounf.nml b/regtests/ww3_tp1.5/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_ounp.inp b/regtests/ww3_tp1.5/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_ounp.nml b/regtests/ww3_tp1.5/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_outf.inp b/regtests/ww3_tp1.5/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_outp_spec.inp b/regtests/ww3_tp1.5/input/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_outp_tab50.inp b/regtests/ww3_tp1.5/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_outp_tab51.inp b/regtests/ww3_tp1.5/input/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_shel.inp b/regtests/ww3_tp1.5/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_shel.nml b/regtests/ww3_tp1.5/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.5/input/ww3_strt.inp b/regtests/ww3_tp1.5/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/info b/regtests/ww3_tp1.6/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/WAVE.depth b/regtests/ww3_tp1.6/input/WAVE.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/namelists_WAVE.nml b/regtests/ww3_tp1.6/input/namelists_WAVE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/points.list b/regtests/ww3_tp1.6/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/switch b/regtests/ww3_tp1.6/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/switch_PR1 b/regtests/ww3_tp1.6/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/switch_PR2_UNO b/regtests/ww3_tp1.6/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/switch_PR2_UQ b/regtests/ww3_tp1.6/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/switch_PR3_UNO b/regtests/ww3_tp1.6/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/switch_PR3_UQ b/regtests/ww3_tp1.6/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_grid.inp b/regtests/ww3_tp1.6/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_grid.nml b/regtests/ww3_tp1.6/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_ounf.inp b/regtests/ww3_tp1.6/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_ounf.nml b/regtests/ww3_tp1.6/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_ounp.inp b/regtests/ww3_tp1.6/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_ounp.nml b/regtests/ww3_tp1.6/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_outf.inp b/regtests/ww3_tp1.6/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_outp.inp b/regtests/ww3_tp1.6/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_outp_p05.inp b/regtests/ww3_tp1.6/input/ww3_outp_p05.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_outp_p10.inp b/regtests/ww3_tp1.6/input/ww3_outp_p10.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_outp_p15.inp b/regtests/ww3_tp1.6/input/ww3_outp_p15.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_outp_p20.inp b/regtests/ww3_tp1.6/input/ww3_outp_p20.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_prep_curr.inp b/regtests/ww3_tp1.6/input/ww3_prep_curr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_shel.inp b/regtests/ww3_tp1.6/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_shel.nml b/regtests/ww3_tp1.6/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input/ww3_strt.inp b/regtests/ww3_tp1.6/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/WAVE.depth b/regtests/ww3_tp1.6/input_moderate_current/WAVE.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/namelists_WAVE.nml b/regtests/ww3_tp1.6/input_moderate_current/namelists_WAVE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/points.list b/regtests/ww3_tp1.6/input_moderate_current/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/switch b/regtests/ww3_tp1.6/input_moderate_current/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/switch_PR1 b/regtests/ww3_tp1.6/input_moderate_current/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/switch_PR2_UNO b/regtests/ww3_tp1.6/input_moderate_current/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/switch_PR2_UQ b/regtests/ww3_tp1.6/input_moderate_current/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/switch_PR3_UNO b/regtests/ww3_tp1.6/input_moderate_current/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/switch_PR3_UQ b/regtests/ww3_tp1.6/input_moderate_current/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_grid.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_grid.nml b/regtests/ww3_tp1.6/input_moderate_current/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_outf.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_outp.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p05.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p05.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p10.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p10.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p15.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p15.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p20.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_outp_p20.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_prep_curr.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_prep_curr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.nml b/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_strt.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/1-D.depth b/regtests/ww3_tp1.7/input/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/namelists_1-D.nml b/regtests/ww3_tp1.7/input/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/points.list b/regtests/ww3_tp1.7/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/switch b/regtests/ww3_tp1.7/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/ww3_grid.nml b/regtests/ww3_tp1.7/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/ww3_ounf.inp b/regtests/ww3_tp1.7/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/ww3_ounf.nml b/regtests/ww3_tp1.7/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/ww3_ounp.inp b/regtests/ww3_tp1.7/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/ww3_ounp.nml b/regtests/ww3_tp1.7/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/ww3_shel.nml b/regtests/ww3_tp1.7/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input/ww3_strt.inp b/regtests/ww3_tp1.7/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/1-D.depth b/regtests/ww3_tp1.7/input_OBST/1-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/1-D.obst b/regtests/ww3_tp1.7/input_OBST/1-D.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/namelists_1-D.nml b/regtests/ww3_tp1.7/input_OBST/namelists_1-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/points.list b/regtests/ww3_tp1.7/input_OBST/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/switch b/regtests/ww3_tp1.7/input_OBST/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_grid.nml b/regtests/ww3_tp1.7/input_OBST/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_ounf.inp b/regtests/ww3_tp1.7/input_OBST/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_ounf.nml b/regtests/ww3_tp1.7/input_OBST/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_ounp.inp b/regtests/ww3_tp1.7/input_OBST/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_ounp.nml b/regtests/ww3_tp1.7/input_OBST/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_shel.nml b/regtests/ww3_tp1.7/input_OBST/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_strt.inp b/regtests/ww3_tp1.7/input_OBST/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/info b/regtests/ww3_tp1.8/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/namelists_VALIDATION.nml b/regtests/ww3_tp1.8/input/namelists_VALIDATION.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/points.list b/regtests/ww3_tp1.8/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/switch b/regtests/ww3_tp1.8/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_grid.inp b/regtests/ww3_tp1.8/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_grid.nml b/regtests/ww3_tp1.8/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_ounf.nml b/regtests/ww3_tp1.8/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_ounp.inp b/regtests/ww3_tp1.8/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_ounp.nml b/regtests/ww3_tp1.8/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_outf.inp b/regtests/ww3_tp1.8/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_outp.inp b/regtests/ww3_tp1.8/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_shel.inp b/regtests/ww3_tp1.8/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_shel.nml b/regtests/ww3_tp1.8/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input/ww3_strt.inp b/regtests/ww3_tp1.8/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/namelists_VALIDATION.nml b/regtests/ww3_tp1.8/input_BJ/namelists_VALIDATION.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/points.list b/regtests/ww3_tp1.8/input_BJ/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/switch b/regtests/ww3_tp1.8/input_BJ/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_grid.inp b/regtests/ww3_tp1.8/input_BJ/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_grid.nml b/regtests/ww3_tp1.8/input_BJ/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_ounf.nml b/regtests/ww3_tp1.8/input_BJ/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_outf.inp b/regtests/ww3_tp1.8/input_BJ/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_outp.inp b/regtests/ww3_tp1.8/input_BJ/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_shel.inp b/regtests/ww3_tp1.8/input_BJ/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_shel.nml b/regtests/ww3_tp1.8/input_BJ/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_strt.inp b/regtests/ww3_tp1.8/input_BJ/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/info b/regtests/ww3_tp1.9/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/NONLINEAR.depth b/regtests/ww3_tp1.9/input/NONLINEAR.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/namelists_NONLINEAR.nml b/regtests/ww3_tp1.9/input/namelists_NONLINEAR.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/points.list b/regtests/ww3_tp1.9/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/switch b/regtests/ww3_tp1.9/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/switch_MPI b/regtests/ww3_tp1.9/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_grid.inp b/regtests/ww3_tp1.9/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_grid.nml b/regtests/ww3_tp1.9/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_ounf.inp b/regtests/ww3_tp1.9/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_ounf.nml b/regtests/ww3_tp1.9/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_ounp.inp b/regtests/ww3_tp1.9/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_ounp.nml b/regtests/ww3_tp1.9/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_outf.inp b/regtests/ww3_tp1.9/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_outp.inp b/regtests/ww3_tp1.9/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_shel.inp b/regtests/ww3_tp1.9/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_shel.nml b/regtests/ww3_tp1.9/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp1.9/input/ww3_strt.inp b/regtests/ww3_tp1.9/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/info b/regtests/ww3_tp2.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/2-D.depth b/regtests/ww3_tp2.1/input/2-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/a.depth b/regtests/ww3_tp2.1/input/a.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/b.depth b/regtests/ww3_tp2.1/input/b.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/b_pseudo.depth b/regtests/ww3_tp2.1/input/b_pseudo.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/c.depth b/regtests/ww3_tp2.1/input/c.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/gx_outf.inp b/regtests/ww3_tp2.1/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/map2_1.gs b/regtests/ww3_tp2.1/input/map2_1.gs old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/namelists_2-D.nml b/regtests/ww3_tp2.1/input/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/namelists_a.nml b/regtests/ww3_tp2.1/input/namelists_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/namelists_b.nml b/regtests/ww3_tp2.1/input/namelists_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/namelists_b_pseudo.nml b/regtests/ww3_tp2.1/input/namelists_b_pseudo.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/namelists_c.nml b/regtests/ww3_tp2.1/input/namelists_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch b/regtests/ww3_tp2.1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR1 b/regtests/ww3_tp2.1/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR1_MPI b/regtests/ww3_tp2.1/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR2_UNO b/regtests/ww3_tp2.1/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR2_UNO_MPI b/regtests/ww3_tp2.1/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR2_UQ b/regtests/ww3_tp2.1/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR2_UQ_MPI b/regtests/ww3_tp2.1/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR3_UNO b/regtests/ww3_tp2.1/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR3_UNO_MPI b/regtests/ww3_tp2.1/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR3_UQ b/regtests/ww3_tp2.1/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/switch_PR3_UQ_MPI b/regtests/ww3_tp2.1/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid.inp b/regtests/ww3_tp2.1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid.nml b/regtests/ww3_tp2.1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_a.inp b/regtests/ww3_tp2.1/input/ww3_grid_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_a.nml b/regtests/ww3_tp2.1/input/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_b.inp b/regtests/ww3_tp2.1/input/ww3_grid_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_b.nml b/regtests/ww3_tp2.1/input/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_b_pseudo.inp b/regtests/ww3_tp2.1/input/ww3_grid_b_pseudo.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_b_pseudo.nml b/regtests/ww3_tp2.1/input/ww3_grid_b_pseudo.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_c.inp b/regtests/ww3_tp2.1/input/ww3_grid_c.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_grid_c.nml b/regtests/ww3_tp2.1/input/ww3_grid_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_multi.inp b/regtests/ww3_tp2.1/input/ww3_multi.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_multi.nml b/regtests/ww3_tp2.1/input/ww3_multi.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_ounf.inp b/regtests/ww3_tp2.1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_ounf.nml b/regtests/ww3_tp2.1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.nml b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_outf.inp b/regtests/ww3_tp2.1/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_outf_flds_hrly.inp b/regtests/ww3_tp2.1/input/ww3_outf_flds_hrly.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_shel.inp b/regtests/ww3_tp2.1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_shel.nml b/regtests/ww3_tp2.1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ww3_strt.inp b/regtests/ww3_tp2.1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/xgrd.2.1b.inp b/regtests/ww3_tp2.1/input/xgrd.2.1b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/xgrd.2.1c.dat b/regtests/ww3_tp2.1/input/xgrd.2.1c.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ygrd.2.1b.inp b/regtests/ww3_tp2.1/input/ygrd.2.1b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.1/input/ygrd.2.1c.dat b/regtests/ww3_tp2.1/input/ygrd.2.1c.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/info b/regtests/ww3_tp2.10/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ErieISide.dat b/regtests/ww3_tp2.10/input/ErieISide.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ErieJSide.dat b/regtests/ww3_tp2.10/input/ErieJSide.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ErieObstr.dat b/regtests/ww3_tp2.10/input/ErieObstr.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ErieSMCel.dat b/regtests/ww3_tp2.10/input/ErieSMCel.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/namelists_SMC0512.nml b/regtests/ww3_tp2.10/input/namelists_SMC0512.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/points.list b/regtests/ww3_tp2.10/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/switch b/regtests/ww3_tp2.10/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/switch_MPI b/regtests/ww3_tp2.10/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/switch_MPI_OMPH b/regtests/ww3_tp2.10/input/switch_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_grid.inp b/regtests/ww3_tp2.10/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_grid.nml b/regtests/ww3_tp2.10/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_ounf.inp b/regtests/ww3_tp2.10/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_ounf.nml b/regtests/ww3_tp2.10/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_ounp.inp b/regtests/ww3_tp2.10/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_ounp.nml b/regtests/ww3_tp2.10/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_outf.inp b/regtests/ww3_tp2.10/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_outp.inp b/regtests/ww3_tp2.10/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_shel.inp b/regtests/ww3_tp2.10/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_shel.nml b/regtests/ww3_tp2.10/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.10/input/ww3_strt.inp b/regtests/ww3_tp2.10/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/info b/regtests/ww3_tp2.11/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/NAEWAnglD.dat b/regtests/ww3_tp2.11/input/NAEWAnglD.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/NAEWDepth.dat b/regtests/ww3_tp2.11/input/NAEWDepth.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/NAEWMasks.dat b/regtests/ww3_tp2.11/input/NAEWMasks.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/NAEWSubtr.dat b/regtests/ww3_tp2.11/input/NAEWSubtr.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/NAEWbndys.dat b/regtests/ww3_tp2.11/input/NAEWbndys.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/namelists_NAEW.nml b/regtests/ww3_tp2.11/input/namelists_NAEW.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/points.list b/regtests/ww3_tp2.11/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/switch b/regtests/ww3_tp2.11/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/switch_MPI b/regtests/ww3_tp2.11/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_grid.inp b/regtests/ww3_tp2.11/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_grid.nml b/regtests/ww3_tp2.11/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_ounf.inp b/regtests/ww3_tp2.11/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_ounf.nml b/regtests/ww3_tp2.11/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_ounp.inp b/regtests/ww3_tp2.11/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_ounp.nml b/regtests/ww3_tp2.11/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_outf.inp b/regtests/ww3_tp2.11/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_outp.inp b/regtests/ww3_tp2.11/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_shel.inp b/regtests/ww3_tp2.11/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_shel.nml b/regtests/ww3_tp2.11/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.11/input/ww3_strt.inp b/regtests/ww3_tp2.11/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/info b/regtests/ww3_tp2.12/info old mode 100644 new mode 100755 index 622e6f523..e39ade75b --- a/regtests/ww3_tp2.12/info +++ b/regtests/ww3_tp2.12/info @@ -29,7 +29,7 @@ # * ww3_grid.inp (dummy grid input file, with assoc .bot, .mask, .obst) # # * partition.ww3 (raw fields of partition data, 4 time steps) # # * ww3_systrk.inp (instruction file) # -# * ww3_systrk will stop if endianess is incompatible with binary file! # +# * ww3_systrk will ABORT if endianess is incompatible with binary file! # # # # Sample run_test commands : # # (Note: mpirun commands differ by local system) # diff --git a/regtests/ww3_tp2.12/input/glo_30m.bot b/regtests/ww3_tp2.12/input/glo_30m.bot old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/glo_30m.mask b/regtests/ww3_tp2.12/input/glo_30m.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/glo_30m.obst b/regtests/ww3_tp2.12/input/glo_30m.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/namelists_Global.nml b/regtests/ww3_tp2.12/input/namelists_Global.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/switch b/regtests/ww3_tp2.12/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/switch_MPI b/regtests/ww3_tp2.12/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/ww3_grid.inp b/regtests/ww3_tp2.12/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/ww3_grid.nml b/regtests/ww3_tp2.12/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input/ww3_systrk.inp b/regtests/ww3_tp2.12/input/ww3_systrk.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_be/namelists_Global.nml b/regtests/ww3_tp2.12/input_be/namelists_Global.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_be/switch b/regtests/ww3_tp2.12/input_be/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_be/switch_MPI b/regtests/ww3_tp2.12/input_be/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_be/ww3_grid.inp b/regtests/ww3_tp2.12/input_be/ww3_grid.inp deleted file mode 120000 index dc72a731b..000000000 --- a/regtests/ww3_tp2.12/input_be/ww3_grid.inp +++ /dev/null @@ -1 +0,0 @@ -../input/ww3_grid.inp \ No newline at end of file diff --git a/regtests/ww3_tp2.12/input_be/ww3_grid.inp b/regtests/ww3_tp2.12/input_be/ww3_grid.inp new file mode 100755 index 000000000..5e16b97c9 --- /dev/null +++ b/regtests/ww3_tp2.12/input_be/ww3_grid.inp @@ -0,0 +1,26 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ + 'Global 30 min GFS wind grid ' +$ + 1.07 0.035 50 36 0.5 +$ + F T T T F F +$ + 3600. 480. 1800. 30. +$ + &SIN4 BETAMAX = 1.33,TAUWSHELTER=1.2 / + &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +END OF NAMELISTS +$ + 'RECT' T 'SMPL' + 720 311 + 0.50 0.50 1. + 0. -77.5 1. + -0.1 2.50 20 0.001 1 1 '(....)' 'NAME' '../input/glo_30m.bot' + 21 0.01 1 1 '(....)' 'NAME' '../input/glo_30m.obst' + 22 1 1 '(....)' 'NAME' '../input/glo_30m.mask' +$ + 0. 0. 0. 0. 0 diff --git a/regtests/ww3_tp2.12/input_be/ww3_grid.nml b/regtests/ww3_tp2.12/input_be/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_be/ww3_systrk.inp b/regtests/ww3_tp2.12/input_be/ww3_systrk.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_le/namelists_Global.nml b/regtests/ww3_tp2.12/input_le/namelists_Global.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_le/switch b/regtests/ww3_tp2.12/input_le/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_le/switch_MPI b/regtests/ww3_tp2.12/input_le/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_le/ww3_grid.inp b/regtests/ww3_tp2.12/input_le/ww3_grid.inp deleted file mode 120000 index dc72a731b..000000000 --- a/regtests/ww3_tp2.12/input_le/ww3_grid.inp +++ /dev/null @@ -1 +0,0 @@ -../input/ww3_grid.inp \ No newline at end of file diff --git a/regtests/ww3_tp2.12/input_le/ww3_grid.inp b/regtests/ww3_tp2.12/input_le/ww3_grid.inp new file mode 100755 index 000000000..5e16b97c9 --- /dev/null +++ b/regtests/ww3_tp2.12/input_le/ww3_grid.inp @@ -0,0 +1,26 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ + 'Global 30 min GFS wind grid ' +$ + 1.07 0.035 50 36 0.5 +$ + F T T T F F +$ + 3600. 480. 1800. 30. +$ + &SIN4 BETAMAX = 1.33,TAUWSHELTER=1.2 / + &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +END OF NAMELISTS +$ + 'RECT' T 'SMPL' + 720 311 + 0.50 0.50 1. + 0. -77.5 1. + -0.1 2.50 20 0.001 1 1 '(....)' 'NAME' '../input/glo_30m.bot' + 21 0.01 1 1 '(....)' 'NAME' '../input/glo_30m.obst' + 22 1 1 '(....)' 'NAME' '../input/glo_30m.mask' +$ + 0. 0. 0. 0. 0 diff --git a/regtests/ww3_tp2.12/input_le/ww3_grid.nml b/regtests/ww3_tp2.12/input_le/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.12/input_le/ww3_systrk.inp b/regtests/ww3_tp2.12/input_le/ww3_systrk.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/info b/regtests/ww3_tp2.13/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/depth.1500x200 b/regtests/ww3_tp2.13/input/depth.1500x200 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/lat.1500x200 b/regtests/ww3_tp2.13/input/lat.1500x200 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/lon.1500x200 b/regtests/ww3_tp2.13/input/lon.1500x200 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/mask1.1500x200 b/regtests/ww3_tp2.13/input/mask1.1500x200 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/namelists_2-D.nml b/regtests/ww3_tp2.13/input/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/namelists_TRPL.nml b/regtests/ww3_tp2.13/input/namelists_TRPL.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/points.list b/regtests/ww3_tp2.13/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/switch_PR1 b/regtests/ww3_tp2.13/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/switch_PR1_MPI b/regtests/ww3_tp2.13/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/switch_PR3_UQ b/regtests/ww3_tp2.13/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/switch_PR3_UQ_MPI b/regtests/ww3_tp2.13/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_grid.inp b/regtests/ww3_tp2.13/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_grid.nml b/regtests/ww3_tp2.13/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_grid_TRPL.inp b/regtests/ww3_tp2.13/input/ww3_grid_TRPL.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_grid_TRPL.nml b/regtests/ww3_tp2.13/input/ww3_grid_TRPL.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_ounf.inp b/regtests/ww3_tp2.13/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_ounf.nml b/regtests/ww3_tp2.13/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_outf.inp b/regtests/ww3_tp2.13/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_outf_depth.inp b/regtests/ww3_tp2.13/input/ww3_outf_depth.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_shel.inp b/regtests/ww3_tp2.13/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_shel.nml b/regtests/ww3_tp2.13/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.13/input/ww3_strt.inp b/regtests/ww3_tp2.13/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/info b/regtests/ww3_tp2.14/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/COPYRIGHT b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/COPYRIGHT old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/Makefile.conf.in b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/Makefile.conf.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/aclocal.m4 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/aclocal.m4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/config.h.in b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/config.h.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/configure.ac b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/configure.ac old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/coupler.bib b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/coupler.bib old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/SRCS_tex.mk b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/SRCS_tex.mk old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/coupler.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/coupler.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/master.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/master.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/model.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/model.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/TS1.dat b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/TS1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/coupler.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/coupler.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/dst.rc b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/dst.rc old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/dstmodel.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/dstmodel.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/master.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/master.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/mutils.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/mutils.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/src.rc b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/src.rc old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/srcmodel.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/srcmodel.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/script.babyblue b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/script.babyblue old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.con.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.con.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.seq.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.seq.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.seqNB.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.seqNB.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.seqUnvn.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocmp.seqUnvn.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/acx_mpi.m4 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/acx_mpi.m4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/ax_fc_version.m4 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/ax_fc_version.m4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/fortran.m4 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/m4/fortran.m4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Accumulator.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Accumulator.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AccumulatorComms.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AccumulatorComms.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AttrVect.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AttrVect.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AttrVectComms.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AttrVectComms.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AttrVectReduce.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_AttrVectReduce.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_ConvertMaps.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_ConvertMaps.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_ExchangeMaps.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_ExchangeMaps.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GeneralGrid.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GeneralGrid.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GeneralGridComms.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GeneralGridComms.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalMap.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalMap.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalSegMap.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalSegMap.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalSegMapComms.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalSegMapComms.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalToLocal.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_GlobalToLocal.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_MCTWorld.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_MCTWorld.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_MatAttrVectMul.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_MatAttrVectMul.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Merge.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Merge.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Navigator.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Navigator.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Rearranger.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Rearranger.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Router.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Router.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrix.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrix.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixComms.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixComms.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixDecomp.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixDecomp.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixPlus.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixPlus.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixToMaps.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SparseMatrixToMaps.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SpatialIntegral.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SpatialIntegral.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SpatialIntegralV.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_SpatialIntegralV.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Transfer.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/m_Transfer.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/mct_mod.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/mct_mod.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/assertmpeu.H b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/assertmpeu.H old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/get_zeits.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/get_zeits.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_FcComms.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_FcComms.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_FileResolv.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_FileResolv.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_Filename.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_Filename.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_IndexBin_char.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_IndexBin_char.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_IndexBin_integer.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_IndexBin_integer.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_IndexBin_logical.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_IndexBin_logical.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_List.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_List.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_MergeSorts.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_MergeSorts.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_Permuter.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_Permuter.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_SortingTools.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_SortingTools.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_StrTemplate.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_StrTemplate.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_String.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_String.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_StringLinkedList.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_StringLinkedList.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_TraceBack.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_TraceBack.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_chars.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_chars.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_die.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_die.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_dropdead.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_dropdead.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_flow.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_flow.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_inpak90.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_inpak90.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_ioutil.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_ioutil.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mall.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mall.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mpif.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mpif.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mpif90.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mpif90.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mpout.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_mpout.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_rankMerge.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_rankMerge.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_realkinds.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_realkinds.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_stdio.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_stdio.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_zeit.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/m_zeit.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/Makefile b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/Makefile old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/README b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/README old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/collective.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/collective.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/comm.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/comm.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/ctest.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/ctest.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/fort.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/fort.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/ftest.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/ftest.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/group.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/group.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/handles.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/handles.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/list.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/list.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/list.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/list.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/listP.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/listP.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/listops.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/listops.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpi.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpi.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpi.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpi.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpiP.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpiP.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.master.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.master.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.real4double8.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.real4double8.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.real8double16.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.real8double16.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.real8double8.h b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/mpif.real8double8.h old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/pack.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/pack.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/recv.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/recv.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/req.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/req.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/send.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/send.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/time.c b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpi-serial/time.c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_advance.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_advance.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_coupler.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_coupler.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_data.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_data.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_getput_interface.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_getput_interface.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_grid.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_grid.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_io.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_io.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_ioshr.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_ioshr.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_kinds.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_kinds.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_method.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_method.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_mpi.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_mpi.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_namcouple.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_namcouple.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_parameters.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_parameters.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_part.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_part.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_string.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_string.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_sys.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_sys.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_timer.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_timer.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_var.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_oasis_var.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_prism.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/psmile/src/mod_prism.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/constants.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/constants.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/distance.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/distance.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/fracnnei.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/fracnnei.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/grids.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/grids.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/iounits.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/iounits.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/kinds_mod.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/kinds_mod.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/mod_oasis_flush.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/mod_oasis_flush.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/netcdf.F b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/netcdf.F old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bicubic.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bicubic.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bicubic_reduced.F90 b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bicubic_reduced.F90 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bilinear.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bilinear.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bilinear_reduced.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_bilinear_reduced.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_conserv.F b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_conserv.F old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_distwgt.F b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_distwgt.F old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_gauswgt.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_gauswgt.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_vars.F b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_vars.F old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_write.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/remap_write.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/scrip.F b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/scrip.F old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/timers.f b/regtests/ww3_tp2.14/input/oasis3-mct/lib/scrip/src/timers.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/.gitignore b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/.gitignore old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/CMakeLists.txt b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr.tmpl b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr.tmpl old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input/toy/readme b/regtests/ww3_tp2.14/input/toy/readme old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm/switch_OASACM b/regtests/ww3_tp2.14/input_oasacm/switch_OASACM old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasacm/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm2/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm2/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm2/switch_OASACM2 b/regtests/ww3_tp2.14/input_oasacm2/switch_OASACM2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasacm2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm3/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm3/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm3/switch_OASACM3 b/regtests/ww3_tp2.14/input_oasacm3/switch_OASACM3 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasacm3/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm4/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm4/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm4/switch_OASACM4 b/regtests/ww3_tp2.14/input_oasacm4/switch_OASACM4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm4/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasacm4/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm5/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm5/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm5/switch_OASACM5 b/regtests/ww3_tp2.14/input_oasacm5/switch_OASACM5 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm5/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasacm5/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/BrestISides.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestISides.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/BrestJSides.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestJSides.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/BrestObstrs.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestObstrs.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/BrestSMCels.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestSMCels.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/namelists_BREST.nml b/regtests/ww3_tp2.14/input_oasacm6/namelists_BREST.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/switch_OASACM6 b/regtests/ww3_tp2.14/input_oasacm6/switch_OASACM6 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm6/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/ww3_prnc.inp b/regtests/ww3_tp2.14/input_oasacm6/ww3_prnc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/ww3_prnc.nml b/regtests/ww3_tp2.14/input_oasacm6/ww3_prnc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasacm6/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasacm6/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasicm/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasicm/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasicm/switch_OASICM b/regtests/ww3_tp2.14/input_oasicm/switch_OASICM old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasicm/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasicm/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasicm/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasicm/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasicm/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasicm/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasocm/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasocm/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasocm/switch_OASOCM b/regtests/ww3_tp2.14/input_oasocm/switch_OASOCM old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasocm/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_shel.nml b/regtests/ww3_tp2.14/input_oasocm/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/info b/regtests/ww3_tp2.15/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/extract_AA_STE.m b/regtests/ww3_tp2.15/input/extract_AA_STE.m old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/lat_ste_adri_15km.dat b/regtests/ww3_tp2.15/input/lat_ste_adri_15km.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/lat_ste_adri_5km.dat b/regtests/ww3_tp2.15/input/lat_ste_adri_5km.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/lon_ste_adri_15km.dat b/regtests/ww3_tp2.15/input/lon_ste_adri_15km.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/lon_ste_adri_5km.dat b/regtests/ww3_tp2.15/input/lon_ste_adri_5km.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/namelists_5km.nml b/regtests/ww3_tp2.15/input/namelists_5km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/namelists_ADRIATIC.nml b/regtests/ww3_tp2.15/input/namelists_ADRIATIC.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/points.list b/regtests/ww3_tp2.15/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ste_adri_15km_etopo1.depth b/regtests/ww3_tp2.15/input/ste_adri_15km_etopo1.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ste_adri_15km_etopo1.mask b/regtests/ww3_tp2.15/input/ste_adri_15km_etopo1.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ste_adri_15km_etopo1.obstr b/regtests/ww3_tp2.15/input/ste_adri_15km_etopo1.obstr old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ste_adri_5km_etopo1.depth b/regtests/ww3_tp2.15/input/ste_adri_5km_etopo1.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ste_adri_5km_etopo1.mask b/regtests/ww3_tp2.15/input/ste_adri_5km_etopo1.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ste_adri_5km_etopo1.obstr b/regtests/ww3_tp2.15/input/ste_adri_5km_etopo1.obstr old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/switch b/regtests/ww3_tp2.15/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/switch_MPI b/regtests/ww3_tp2.15/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_grid.inp b/regtests/ww3_tp2.15/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_grid.nml b/regtests/ww3_tp2.15/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_grid_5km.inp b/regtests/ww3_tp2.15/input/ww3_grid_5km.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_grid_5km.nml b/regtests/ww3_tp2.15/input/ww3_grid_5km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_ounf.inp b/regtests/ww3_tp2.15/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_ounf.nml b/regtests/ww3_tp2.15/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_ounp_par.inp b/regtests/ww3_tp2.15/input/ww3_ounp_par.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_ounp_par.nml b/regtests/ww3_tp2.15/input/ww3_ounp_par.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_ounp_spec.inp b/regtests/ww3_tp2.15/input/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_ounp_spec.nml b/regtests/ww3_tp2.15/input/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_outf.inp b/regtests/ww3_tp2.15/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_prnc.inp b/regtests/ww3_tp2.15/input/ww3_prnc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_prnc.nml b/regtests/ww3_tp2.15/input/ww3_prnc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_shel.inp b/regtests/ww3_tp2.15/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_shel.nml b/regtests/ww3_tp2.15/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input/ww3_strt.inp b/regtests/ww3_tp2.15/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/extract_AA_STE.m b/regtests/ww3_tp2.15/input_rho/extract_AA_STE.m old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/namelists_ADRIATIC.nml b/regtests/ww3_tp2.15/input_rho/namelists_ADRIATIC.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/points.list b/regtests/ww3_tp2.15/input_rho/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/switch b/regtests/ww3_tp2.15/input_rho/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/switch_MPI b/regtests/ww3_tp2.15/input_rho/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/switch_ST4 b/regtests/ww3_tp2.15/input_rho/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/switch_ST6 b/regtests/ww3_tp2.15/input_rho/switch_ST6 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_grid.inp b/regtests/ww3_tp2.15/input_rho/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_grid.nml b/regtests/ww3_tp2.15/input_rho/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounf.inp b/regtests/ww3_tp2.15/input_rho/ww3_ounf.inp old mode 100644 new mode 100755 index 564610663..9e9b2c300 --- a/regtests/ww3_tp2.15/input_rho/ww3_ounf.inp +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounf.inp @@ -3,7 +3,7 @@ $ ----------------------------------------- 20140309 000000 900. 9999 $ N -HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC QP QKK +HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC $ $ 3 4 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounf.nml b/regtests/ww3_tp2.15/input_rho/ww3_ounf.nml old mode 100644 new mode 100755 index d4e8c9151..848d2ec92 --- a/regtests/ww3_tp2.15/input_rho/ww3_ounf.nml +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounf.nml @@ -9,7 +9,7 @@ FIELD%TIMESTART = '20140309 000000' FIELD%TIMESTRIDE = '900.' FIELD%TIMECOUNT = '9999' - FIELD%LIST = 'HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC QP QKK' + FIELD%LIST = 'HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC' FIELD%PARTITION = '0 1 2' FIELD%TYPE = 4 / diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.inp b/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.nml b/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.inp b/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.nml b/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_outf.inp b/regtests/ww3_tp2.15/input_rho/ww3_outf.inp old mode 100644 new mode 100755 index 05e04c291..666f36966 --- a/regtests/ww3_tp2.15/input_rho/ww3_outf.inp +++ b/regtests/ww3_tp2.15/input_rho/ww3_outf.inp @@ -3,7 +3,7 @@ $ ----------------------------------------- 20140309 000000 3600. 37 $ N -HS DIR DP T02 FP STMAXE STMAXD HMAXE HCMAXE HMAXD HCMAXD QP QKK +HS DIR DP T02 FP STMAXE STMAXD HMAXE HCMAXE HMAXD HCMAXD $ 3 0 1 43 1 42 1 1 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.inp b/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.nml b/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.inp b/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.nml b/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.inp b/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.nml b/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_shel.inp b/regtests/ww3_tp2.15/input_rho/ww3_shel.inp old mode 100644 new mode 100755 index ce4d90011..c436305e8 --- a/regtests/ww3_tp2.15/input_rho/ww3_shel.inp +++ b/regtests/ww3_tp2.15/input_rho/ww3_shel.inp @@ -31,7 +31,7 @@ $ A A W C C C C B B E B B X W O U S S S 2 S S $ W W A C F H M R R D B B Y O C S S S C S 1 2 $ --------------------------------------------------------------- N - HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC QP QKK + HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC 20140310 000000 3600 20140310 060000 12.5088 45.3138 'AA ' 0.0 0.0 'STOPSTRING' diff --git a/regtests/ww3_tp2.15/input_rho/ww3_shel.nml b/regtests/ww3_tp2.15/input_rho/ww3_shel.nml old mode 100644 new mode 100755 index fc0277a12..5fb0fd0a2 --- a/regtests/ww3_tp2.15/input_rho/ww3_shel.nml +++ b/regtests/ww3_tp2.15/input_rho/ww3_shel.nml @@ -24,7 +24,7 @@ ! Define the output types point parameters via OUTPUT_TYPE_NML namelist ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML - TYPE%FIELD%LIST = 'HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC QP QKK' + TYPE%FIELD%LIST = 'HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC' TYPE%POINT%FILE = '../input_rho/points.list' / diff --git a/regtests/ww3_tp2.15/input_rho/ww3_strt.inp b/regtests/ww3_tp2.15/input_rho/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/info b/regtests/ww3_tp2.16/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/A50AISide.dat b/regtests/ww3_tp2.16/input/A50AISide.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/A50AJSide.dat b/regtests/ww3_tp2.16/input/A50AJSide.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/A50GISide.dat b/regtests/ww3_tp2.16/input/A50GISide.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/A50GJSide.dat b/regtests/ww3_tp2.16/input/A50GJSide.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/A50GObstr.dat b/regtests/ww3_tp2.16/input/A50GObstr.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/A50SMCBAr.dat b/regtests/ww3_tp2.16/input/A50SMCBAr.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/A50SMCels.dat b/regtests/ww3_tp2.16/input/A50SMCels.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/a50smcgrd.ps b/regtests/ww3_tp2.16/input/a50smcgrd.ps old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/a50smcgrid.pro b/regtests/ww3_tp2.16/input/a50smcgrid.pro old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ll2eqdeg.pro b/regtests/ww3_tp2.16/input/ll2eqdeg.pro old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/namelists_A50SMC.nml b/regtests/ww3_tp2.16/input/namelists_A50SMC.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/points.list b/regtests/ww3_tp2.16/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/readcell.pro b/regtests/ww3_tp2.16/input/readcell.pro old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/steromap.pro b/regtests/ww3_tp2.16/input/steromap.pro old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/switch b/regtests/ww3_tp2.16/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/switch_MPI b/regtests/ww3_tp2.16/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/switch_MPI_OMPH b/regtests/ww3_tp2.16/input/switch_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_grid.inp b/regtests/ww3_tp2.16/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_grid.nml b/regtests/ww3_tp2.16/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_ounf.inp b/regtests/ww3_tp2.16/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_ounf.nml b/regtests/ww3_tp2.16/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_outf.inp b/regtests/ww3_tp2.16/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_shel.inp b/regtests/ww3_tp2.16/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_shel.nml b/regtests/ww3_tp2.16/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.16/input/ww3_strt.inp b/regtests/ww3_tp2.16/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/info b/regtests/ww3_tp2.17/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/grdset_a b/regtests/ww3_tp2.17/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/grdset_a1 b/regtests/ww3_tp2.17/input/grdset_a1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/grdset_b b/regtests/ww3_tp2.17/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/grdset_c b/regtests/ww3_tp2.17/input/grdset_c old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/grdset_c1 b/regtests/ww3_tp2.17/input/grdset_c1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/namelists_a.nml b/regtests/ww3_tp2.17/input/namelists_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/namelists_b.nml b/regtests/ww3_tp2.17/input/namelists_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/namelists_c.nml b/regtests/ww3_tp2.17/input/namelists_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/namelists_inla.nml b/regtests/ww3_tp2.17/input/namelists_inla.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/namelists_inlb.nml b/regtests/ww3_tp2.17/input/namelists_inlb.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/namelists_inlc.nml b/regtests/ww3_tp2.17/input/namelists_inlc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/points.list b/regtests/ww3_tp2.17/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/spec.list b/regtests/ww3_tp2.17/input/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/switch_NO_PDLIB b/regtests/ww3_tp2.17/input/switch_NO_PDLIB old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/switch_PDLIB b/regtests/ww3_tp2.17/input/switch_PDLIB old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_bounc.nml b/regtests/ww3_tp2.17/input/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grib.inp b/regtests/ww3_tp2.17/input/ww3_grib.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grib_inla.inp b/regtests/ww3_tp2.17/input/ww3_grib_inla.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grib_inla1.inp b/regtests/ww3_tp2.17/input/ww3_grib_inla1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grib_inlb.inp b/regtests/ww3_tp2.17/input/ww3_grib_inlb.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grib_inlc.inp b/regtests/ww3_tp2.17/input/ww3_grib_inlc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grib_inlc1.inp b/regtests/ww3_tp2.17/input/ww3_grib_inlc1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grid_a.nml b/regtests/ww3_tp2.17/input/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grid_b.nml b/regtests/ww3_tp2.17/input/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grid_c.nml b/regtests/ww3_tp2.17/input/ww3_grid_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grid_inla.nml b/regtests/ww3_tp2.17/input/ww3_grid_inla.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grid_inlb.nml b/regtests/ww3_tp2.17/input/ww3_grid_inlb.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_grid_inlc.nml b/regtests/ww3_tp2.17/input/ww3_grid_inlc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_a.nml b/regtests/ww3_tp2.17/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_a1.nml b/regtests/ww3_tp2.17/input/ww3_multi_grdset_a1.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_b.nml b/regtests/ww3_tp2.17/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_c.nml b/regtests/ww3_tp2.17/input/ww3_multi_grdset_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_c1.nml b/regtests/ww3_tp2.17/input/ww3_multi_grdset_c1.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_ounf.nml b/regtests/ww3_tp2.17/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_ounp.nml b/regtests/ww3_tp2.17/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_outp.inp b/regtests/ww3_tp2.17/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_prnc_current.nml b/regtests/ww3_tp2.17/input/ww3_prnc_current.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_prnc_level.nml b/regtests/ww3_tp2.17/input/ww3_prnc_level.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_prnc_wind.nml b/regtests/ww3_tp2.17/input/ww3_prnc_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.17/input/ww3_shel.nml b/regtests/ww3_tp2.17/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/info b/regtests/ww3_tp2.18/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/iro1k.bot b/regtests/ww3_tp2.18/input/iro1k.bot old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/iro1k.mask b/regtests/ww3_tp2.18/input/iro1k.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/namelists_IROISE.nml b/regtests/ww3_tp2.18/input/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/switch_TIDE b/regtests/ww3_tp2.18/input/switch_TIDE old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/switch_TIDE_MPI b/regtests/ww3_tp2.18/input/switch_TIDE_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_grid.inp b/regtests/ww3_tp2.18/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_grid.nml b/regtests/ww3_tp2.18/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_ounf.inp b/regtests/ww3_tp2.18/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_ounf.nml b/regtests/ww3_tp2.18/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_prnc.inp b/regtests/ww3_tp2.18/input/ww3_prnc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_prnc.nml b/regtests/ww3_tp2.18/input/ww3_prnc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_prtide_current.inp b/regtests/ww3_tp2.18/input/ww3_prtide_current.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_shel.inp b/regtests/ww3_tp2.18/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.18/input/ww3_shel.nml b/regtests/ww3_tp2.18/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input/points.list b/regtests/ww3_tp2.19/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/namelists_a.nml b/regtests/ww3_tp2.19/input_Case1A/namelists_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/namelists_b.nml b/regtests/ww3_tp2.19/input_Case1A/namelists_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/spec.list b/regtests/ww3_tp2.19/input_Case1A/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/switch_PDLIB b/regtests/ww3_tp2.19/input_Case1A/switch_PDLIB old mode 100644 new mode 100755 index 0ffd8565f..173947fdd --- a/regtests/ww3_tp2.19/input_Case1A/switch_PDLIB +++ b/regtests/ww3_tp2.19/input_Case1A/switch_PDLIB @@ -1 +1 @@ - PDLIB METIS NOGRB DIST MPI PR3 UQ FLX0 LN0 ST0 NL0 BT0 DB1 TR1 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 SEC1 O0 O1 O2 O3 O4 O5 O6 O7 +F90 PDLIB METIS NOGRB NC4 DIST MPI PR3 UQ FLX0 LN0 ST0 NL0 BT0 DB1 TR1 BS0 IC0 IS0 REF0 XX0 WNT1 WNX1 CRT1 CRX1 SEC1 O0 O1 O2 O3 O4 O5 O6 O7 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_bounc.inp b/regtests/ww3_tp2.19/input_Case1A/ww3_bounc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_bounc.nml b/regtests/ww3_tp2.19/input_Case1A/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_grid.inp b/regtests/ww3_tp2.19/input_Case1A/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_grid_a.inp b/regtests/ww3_tp2.19/input_Case1A/ww3_grid_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_grid_a.nml b/regtests/ww3_tp2.19/input_Case1A/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_grid_b.inp b/regtests/ww3_tp2.19/input_Case1A/ww3_grid_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_grid_b.nml b/regtests/ww3_tp2.19/input_Case1A/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_ounf.inp b/regtests/ww3_tp2.19/input_Case1A/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_ounf.nml b/regtests/ww3_tp2.19/input_Case1A/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_ounp.inp b/regtests/ww3_tp2.19/input_Case1A/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_ounp.nml b/regtests/ww3_tp2.19/input_Case1A/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_shel.inp b/regtests/ww3_tp2.19/input_Case1A/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1A/ww3_shel.nml b/regtests/ww3_tp2.19/input_Case1A/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/namelists_a.nml b/regtests/ww3_tp2.19/input_Case1B/namelists_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/namelists_b.nml b/regtests/ww3_tp2.19/input_Case1B/namelists_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/spec.list b/regtests/ww3_tp2.19/input_Case1B/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/switch_PDLIB b/regtests/ww3_tp2.19/input_Case1B/switch_PDLIB old mode 100644 new mode 100755 index 0ffd8565f..173947fdd --- a/regtests/ww3_tp2.19/input_Case1B/switch_PDLIB +++ b/regtests/ww3_tp2.19/input_Case1B/switch_PDLIB @@ -1 +1 @@ - PDLIB METIS NOGRB DIST MPI PR3 UQ FLX0 LN0 ST0 NL0 BT0 DB1 TR1 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 SEC1 O0 O1 O2 O3 O4 O5 O6 O7 +F90 PDLIB METIS NOGRB NC4 DIST MPI PR3 UQ FLX0 LN0 ST0 NL0 BT0 DB1 TR1 BS0 IC0 IS0 REF0 XX0 WNT1 WNX1 CRT1 CRX1 SEC1 O0 O1 O2 O3 O4 O5 O6 O7 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_bounc.inp b/regtests/ww3_tp2.19/input_Case1B/ww3_bounc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_bounc.nml b/regtests/ww3_tp2.19/input_Case1B/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_grid.inp b/regtests/ww3_tp2.19/input_Case1B/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_grid_a.inp b/regtests/ww3_tp2.19/input_Case1B/ww3_grid_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_grid_a.nml b/regtests/ww3_tp2.19/input_Case1B/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_grid_b.inp b/regtests/ww3_tp2.19/input_Case1B/ww3_grid_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_grid_b.nml b/regtests/ww3_tp2.19/input_Case1B/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_ounf.inp b/regtests/ww3_tp2.19/input_Case1B/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_ounf.nml b/regtests/ww3_tp2.19/input_Case1B/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_ounp.inp b/regtests/ww3_tp2.19/input_Case1B/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_ounp.nml b/regtests/ww3_tp2.19/input_Case1B/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_shel.inp b/regtests/ww3_tp2.19/input_Case1B/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1B/ww3_shel.nml b/regtests/ww3_tp2.19/input_Case1B/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/namelists_a.nml b/regtests/ww3_tp2.19/input_Case1C/namelists_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/namelists_b.nml b/regtests/ww3_tp2.19/input_Case1C/namelists_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/spec.list b/regtests/ww3_tp2.19/input_Case1C/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/switch_PDLIB b/regtests/ww3_tp2.19/input_Case1C/switch_PDLIB old mode 100644 new mode 100755 index 20fbedfed..ec5c35288 --- a/regtests/ww3_tp2.19/input_Case1C/switch_PDLIB +++ b/regtests/ww3_tp2.19/input_Case1C/switch_PDLIB @@ -1 +1 @@ - PDLIB METIS NOGRB DIST MPI PR3 UQ FLX0 LN0 ST0 NL0 BT0 DB1 TR1 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 SEC1 O0 O1 O2 O3 O4 O5 O6 O7 +F90 PDLIB METIS NOGRB NC4 DIST MPI PR3 UQ FLX0 LN0 ST0 NL0 BT0 DB1 TR1 BS0 IC0 IS0 REF0 XX0 WNT1 WNX1 CRT1 CRX1 SEC1 O0 O1 O2 O3 O4 O5 O6 O7 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_bounc.inp b/regtests/ww3_tp2.19/input_Case1C/ww3_bounc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_bounc.nml b/regtests/ww3_tp2.19/input_Case1C/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_grid.inp b/regtests/ww3_tp2.19/input_Case1C/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_grid_a.inp b/regtests/ww3_tp2.19/input_Case1C/ww3_grid_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_grid_a.nml b/regtests/ww3_tp2.19/input_Case1C/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_grid_b.inp b/regtests/ww3_tp2.19/input_Case1C/ww3_grid_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_grid_b.nml b/regtests/ww3_tp2.19/input_Case1C/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_ounf.inp b/regtests/ww3_tp2.19/input_Case1C/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_ounf.nml b/regtests/ww3_tp2.19/input_Case1C/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_ounp.inp b/regtests/ww3_tp2.19/input_Case1C/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_ounp.nml b/regtests/ww3_tp2.19/input_Case1C/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_shel.inp b/regtests/ww3_tp2.19/input_Case1C/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.19/input_Case1C/ww3_shel.nml b/regtests/ww3_tp2.19/input_Case1C/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/info b/regtests/ww3_tp2.2/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/2-D.depth b/regtests/ww3_tp2.2/input/2-D.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/gx_outf.inp b/regtests/ww3_tp2.2/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/map2_2.gs b/regtests/ww3_tp2.2/input/map2_2.gs old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/namelists_2-D.nml b/regtests/ww3_tp2.2/input/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/namelists_nocmpr.nml b/regtests/ww3_tp2.2/input/namelists_nocmpr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/nocmpr.depth b/regtests/ww3_tp2.2/input/nocmpr.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/points.list b/regtests/ww3_tp2.2/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch b/regtests/ww3_tp2.2/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR1 b/regtests/ww3_tp2.2/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR1_MPI b/regtests/ww3_tp2.2/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR2_UNO b/regtests/ww3_tp2.2/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR2_UNO_MPI b/regtests/ww3_tp2.2/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR2_UQ b/regtests/ww3_tp2.2/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR2_UQ_MPI b/regtests/ww3_tp2.2/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR2_UQ_NC4_MPI b/regtests/ww3_tp2.2/input/switch_PR2_UQ_NC4_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR3_UNO b/regtests/ww3_tp2.2/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR3_UNO_MPI b/regtests/ww3_tp2.2/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR3_UQ b/regtests/ww3_tp2.2/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/switch_PR3_UQ_MPI b/regtests/ww3_tp2.2/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/track_i.ww3 b/regtests/ww3_tp2.2/input/track_i.ww3 old mode 100644 new mode 100755 index e4e7fbf61..ae2154a44 --- a/regtests/ww3_tp2.2/input/track_i.ww3 +++ b/regtests/ww3_tp2.2/input/track_i.ww3 @@ -1,6 +1,6 @@ WAVEWATCH III TRACK LOCATIONS DATA -20220606 000000 0 0 S1A -20220606 040000 1 0 S1B -20220606 060000 1 0 S1C -20220606 080000 2 0 S1D -20220606 120000 0.5 0 S1E +19680606 000000 0 0 S1A +19680606 040000 1 0 S1B +19680606 060000 1 0 S1C +19680606 080000 2 0 S1D +19680606 120000 0.5 0 S1E diff --git a/regtests/ww3_tp2.2/input/ww3_grid.inp b/regtests/ww3_tp2.2/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/ww3_grid.nml b/regtests/ww3_tp2.2/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/ww3_grid_nocmpr.inp b/regtests/ww3_tp2.2/input/ww3_grid_nocmpr.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/ww3_grid_nocmpr.nml b/regtests/ww3_tp2.2/input/ww3_grid_nocmpr.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/ww3_multi.inp b/regtests/ww3_tp2.2/input/ww3_multi.inp old mode 100644 new mode 100755 index 62f187b20..4d5d699e6 --- a/regtests/ww3_tp2.2/input/ww3_multi.inp +++ b/regtests/ww3_tp2.2/input/ww3_multi.inp @@ -4,25 +4,25 @@ $ ------------------------------ $ 'ww3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ - 20220606 000000 20220618 000000 + 19680606 000000 19680618 000000 $ T T $ - 20220606 000000 86400 20220618 000000 + 19680606 000000 86400 19680618 000000 $ N HS T0M1 DIR SPR $ - 20220606 000000 21600 20220618 000000 + 19680606 000000 21600 19680618 000000 0.0 0.0 'LEFT' 90.0 0.0 'CENTER' 180.0 0.0 'RIGHT' 0.0 0.0 'STOPSTRING' - 20220606 000000 3600 20220618 000000 + 19680606 000000 3600 19680618 000000 T - 20220612 000000 0 20220612 000000 - 20220606 000000 3600 20220618 000000 - 20220612 000000 0 20220612 000000 + 19680612 000000 0 19680612 000000 + 19680606 000000 3600 19680618 000000 + 19680612 000000 0 19680612 000000 $ 'the_end' 0 $ diff --git a/regtests/ww3_tp2.2/input/ww3_multi.nml b/regtests/ww3_tp2.2/input/ww3_multi.nml old mode 100644 new mode 100755 index 6736ed229..95c0f379c --- a/regtests/ww3_tp2.2/input/ww3_multi.nml +++ b/regtests/ww3_tp2.2/input/ww3_multi.nml @@ -9,8 +9,7 @@ &DOMAIN_NML DOMAIN%FLGHG1 = T DOMAIN%FLGHG2 = T - DOMAIN%START = '20220606 000000' - DOMAIN%STOP = '20220618 000000' + DOMAIN%STOP = '19680618 000000' / ! -------------------------------------------------------------------- ! @@ -38,10 +37,10 @@ ! Define output dates via OUTPUT_DATE_NML namelist ! -------------------------------------------------------------------- ! &OUTPUT_DATE_NML - ALLDATE%FIELD = '20220606 000000' '86400' '20220618 000000' - ALLDATE%POINT = '20220606 000000' '21600' '20220618 000000' - ALLDATE%TRACK = '20220606 000000' '3600' '20220618 000000' - ALLDATE%BOUNDARY = '20220606 000000' '3600' '20220618 000000' + ALLDATE%FIELD = '19680606 000000' '86400' '19680618 000000' + ALLDATE%POINT = '19680606 000000' '21600' '19680618 000000' + ALLDATE%TRACK = '19680606 000000' '3600' '19680618 000000' + ALLDATE%BOUNDARY = '19680606 000000' '3600' '19680618 000000' / ! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.2/input/ww3_ounf.inp b/regtests/ww3_tp2.2/input/ww3_ounf.inp old mode 100644 new mode 100755 index 120b78d3d..1d901574c --- a/regtests/ww3_tp2.2/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.2/input/ww3_ounf.inp @@ -4,7 +4,7 @@ $--------------------------------------------------------------------- $ $ First output time (yyyymmdd hhmmss), increment of output (s), $ and number of output times. $ - 20220606 000000 10800. 100 + 19680606 000000 10800. 100 $ $ Fields requested --------------------------------------------------- $ $ diff --git a/regtests/ww3_tp2.2/input/ww3_ounf.nml b/regtests/ww3_tp2.2/input/ww3_ounf.nml old mode 100644 new mode 100755 index 07dcdd2c2..44db63521 --- a/regtests/ww3_tp2.2/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.2/input/ww3_ounf.nml @@ -6,7 +6,7 @@ ! Define the output fields to postprocess via FIELD_NML namelist ! -------------------------------------------------------------------- ! &FIELD_NML - FIELD%TIMESTART = '20220606 000000' + FIELD%TIMESTART = '19680606 000000' FIELD%TIMESTRIDE = '10800.' FIELD%TIMECOUNT = '100' FIELD%LIST = 'HS T01 DIR SPR' diff --git a/regtests/ww3_tp2.2/input/ww3_ounp.inp b/regtests/ww3_tp2.2/input/ww3_ounp.inp old mode 100644 new mode 100755 index 2c6a2f8d2..4816a3a7e --- a/regtests/ww3_tp2.2/input/ww3_ounp.inp +++ b/regtests/ww3_tp2.2/input/ww3_ounp.inp @@ -4,7 +4,7 @@ $--------------------------------------------------------------------- $ $ First output time (yyyymmdd hhmmss), increment of output (s), $ and number of output times. $ - 20220606 000000 21600. 1000 + 19680606 000000 21600. 1000 $ $ Points requested --------------------------------------------------- $ $ diff --git a/regtests/ww3_tp2.2/input/ww3_ounp.nml b/regtests/ww3_tp2.2/input/ww3_ounp.nml old mode 100644 new mode 100755 index e97fc6b22..29fa1897d --- a/regtests/ww3_tp2.2/input/ww3_ounp.nml +++ b/regtests/ww3_tp2.2/input/ww3_ounp.nml @@ -6,7 +6,7 @@ ! Define the output fields to postprocess via POINT_NML namelist ! -------------------------------------------------------------------- ! &POINT_NML - POINT%TIMESTART = '20220606 000000' + POINT%TIMESTART = '19680606 000000' POINT%TIMESTRIDE = '21600.' POINT%TIMECOUNT = '1000' POINT%LIST = '1 2 3' diff --git a/regtests/ww3_tp2.2/input/ww3_outf.inp b/regtests/ww3_tp2.2/input/ww3_outf.inp old mode 100644 new mode 100755 index d49b283c9..4b062a870 --- a/regtests/ww3_tp2.2/input/ww3_outf.inp +++ b/regtests/ww3_tp2.2/input/ww3_outf.inp @@ -1,6 +1,6 @@ $ WAVEWATCH III Grid output post-processing $ ----------------------------------------- - 20220612 000000 518400. 2 + 19680612 000000 518400. 2 $ N HS T01 DIR SPR diff --git a/regtests/ww3_tp2.2/input/ww3_outp_spec.inp b/regtests/ww3_tp2.2/input/ww3_outp_spec.inp old mode 100644 new mode 100755 index cb7c2ba52..d4c452b1f --- a/regtests/ww3_tp2.2/input/ww3_outp_spec.inp +++ b/regtests/ww3_tp2.2/input/ww3_outp_spec.inp @@ -1,6 +1,6 @@ $ WAVEWATCH III Point output post-processing $ ------------------------------------------ - 20220606 000000 43200. 25 + 19680606 000000 43200. 25 $ 1 2 diff --git a/regtests/ww3_tp2.2/input/ww3_outp_tab51.inp b/regtests/ww3_tp2.2/input/ww3_outp_tab51.inp old mode 100644 new mode 100755 index 9e4c288b6..d40f4a55d --- a/regtests/ww3_tp2.2/input/ww3_outp_tab51.inp +++ b/regtests/ww3_tp2.2/input/ww3_outp_tab51.inp @@ -1,6 +1,6 @@ $ WAVEWATCH III Point output post-processing $ ------------------------------------------ - 20220606 000000 43200. 25 + 19680606 000000 43200. 25 $ 1 -1 diff --git a/regtests/ww3_tp2.2/input/ww3_outp_tab52.inp b/regtests/ww3_tp2.2/input/ww3_outp_tab52.inp old mode 100644 new mode 100755 index 3ded7db46..06431db5d --- a/regtests/ww3_tp2.2/input/ww3_outp_tab52.inp +++ b/regtests/ww3_tp2.2/input/ww3_outp_tab52.inp @@ -1,6 +1,6 @@ $ WAVEWATCH III Point output post-processing $ ------------------------------------------ - 20220606 000000 43200. 25 + 19680606 000000 43200. 25 $ 2 -1 diff --git a/regtests/ww3_tp2.2/input/ww3_outp_tab53.inp b/regtests/ww3_tp2.2/input/ww3_outp_tab53.inp old mode 100644 new mode 100755 index 0e57f1322..209a605b0 --- a/regtests/ww3_tp2.2/input/ww3_outp_tab53.inp +++ b/regtests/ww3_tp2.2/input/ww3_outp_tab53.inp @@ -1,6 +1,6 @@ $ WAVEWATCH III Point output post-processing $ ------------------------------------------ - 20220606 000000 43200. 25 + 19680606 000000 43200. 25 $ 3 -1 diff --git a/regtests/ww3_tp2.2/input/ww3_shel.inp b/regtests/ww3_tp2.2/input/ww3_shel.inp old mode 100644 new mode 100755 index 37d914fad..aba7af3e4 --- a/regtests/ww3_tp2.2/input/ww3_shel.inp +++ b/regtests/ww3_tp2.2/input/ww3_shel.inp @@ -10,31 +10,31 @@ $ ------------------------------ F F $ - 20220606 000000 - 20220606 120000 + 19680606 000000 + 19680606 120000 $ 1 $ - 20220606 000000 10800 20220608 000000 + 19680606 000000 10800 19680608 000000 $ N HS EF T01 DIR SPR $ - 20220606 000000 21600 20220608 000000 + 19680606 000000 21600 19680608 000000 0.0 0.0 'LEFT' 90.0 0.0 'CENTER' 180.0 0.0 'RIGHT' 0.0 0.0 'STOPSTRING' - 20220606 000000 14400 20220608 000000 + 19680606 000000 14400 19680608 000000 T - 20220606 000000 0 20220608 000000 - 20220606 000000 0 20220608 000000 - 20220606 000000 0 20220608 000000 + 19680606 000000 0 19680608 000000 + 19680606 000000 0 19680608 000000 + 19680606 000000 0 19680608 000000 $ - 'CUR' 20220606 030000 2.0 45. - 'WND' 20220606 000000 20.0 180. 2. - 'WND' 20220606 040000 15.0 130. 1. - 'WND' 20220606 080000 25.0 90. 3. + 'CUR' 19680606 030000 2.0 45. + 'WND' 19680606 000000 20.0 180. 2. + 'WND' 19680606 040000 15.0 130. 1. + 'WND' 19680606 080000 25.0 90. 3. 'STP' $ $ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.2/input/ww3_shel.nml b/regtests/ww3_tp2.2/input/ww3_shel.nml old mode 100644 new mode 100755 index 32205bc57..578f05f93 --- a/regtests/ww3_tp2.2/input/ww3_shel.nml +++ b/regtests/ww3_tp2.2/input/ww3_shel.nml @@ -7,8 +7,7 @@ ! Define top-level model parameters via DOMAIN_NML namelist ! -------------------------------------------------------------------- ! &DOMAIN_NML - DOMAIN%START = '20220606 000000' - DOMAIN%STOP = '20220606 120000' + DOMAIN%STOP = '19680606 120000' / ! -------------------------------------------------------------------- ! @@ -31,9 +30,9 @@ ! Define output dates via OUTPUT_DATE_NML namelist ! -------------------------------------------------------------------- ! &OUTPUT_DATE_NML - DATE%FIELD = '20220606 000000' '10800' '20220608 000000' - DATE%POINT = '20220606 000000' '21600' '20220608 000000' - DATE%TRACK = '20220606 000000' '14400' '20220608 000000' + DATE%FIELD = '19680606 000000' '10800' '19680608 000000' + DATE%POINT = '19680606 000000' '21600' '19680608 000000' + DATE%TRACK = '19680606 000000' '14400' '19680608 000000' / ! -------------------------------------------------------------------- ! @@ -46,24 +45,23 @@ &HOMOG_INPUT_NML HOMOG_INPUT(1)%NAME = 'CUR' - HOMOG_INPUT(1)%DATE = '20220606 030000' + HOMOG_INPUT(1)%DATE = '19680606 030000' HOMOG_INPUT(1)%VALUE1 = 2.0 HOMOG_INPUT(1)%VALUE2 = 45. HOMOG_INPUT(2)%NAME = 'WND' - HOMOG_INPUT(2)%DATE = '20220606 000000' HOMOG_INPUT(2)%VALUE1 = 20.0 HOMOG_INPUT(2)%VALUE2 = 180. HOMOG_INPUT(2)%VALUE3 = 2. HOMOG_INPUT(3)%NAME = 'WND' - HOMOG_INPUT(3)%DATE = '20220606 040000' + HOMOG_INPUT(3)%DATE = '19680606 040000' HOMOG_INPUT(3)%VALUE1 = 15.0 HOMOG_INPUT(3)%VALUE2 = 130. HOMOG_INPUT(3)%VALUE3 = 1. HOMOG_INPUT(4)%NAME = 'WND' - HOMOG_INPUT(4)%DATE = '20220606 080000' + HOMOG_INPUT(4)%DATE = '19680606 080000' HOMOG_INPUT(4)%VALUE1 = 25.0 HOMOG_INPUT(4)%VALUE2 = 90. HOMOG_INPUT(4)%VALUE3 = 3. diff --git a/regtests/ww3_tp2.2/input/ww3_strt.inp b/regtests/ww3_tp2.2/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.2/input/ww3_trnc.inp b/regtests/ww3_tp2.2/input/ww3_trnc.inp index ddfd4f403..df60800b8 100755 --- a/regtests/ww3_tp2.2/input/ww3_trnc.inp +++ b/regtests/ww3_tp2.2/input/ww3_trnc.inp @@ -4,7 +4,7 @@ $--------------------------------------------------------------------- $ $ First output time (yyyymmdd hhmmss), increment of output (s), $ and number of output times. $ - 20220606 000000 3600. 100000 + 19680606 000000 3600. 100000 $ $ Output type -------------------------------------------------------- $ $ netCDF version [3,4] diff --git a/regtests/ww3_tp2.2/input/ww3_trnc.nml b/regtests/ww3_tp2.2/input/ww3_trnc.nml old mode 100644 new mode 100755 index e6847f529..e4ae8ceab --- a/regtests/ww3_tp2.2/input/ww3_trnc.nml +++ b/regtests/ww3_tp2.2/input/ww3_trnc.nml @@ -6,7 +6,7 @@ ! Define the output fields to postprocess via TRACK_NML namelist ! -------------------------------------------------------------------- ! &TRACK_NML - TRACK%TIMESTART = '20220606 000000' + TRACK%TIMESTART = '19680606 000000' TRACK%TIMESTRIDE = '3600.' / diff --git a/regtests/ww3_tp2.21/info b/regtests/ww3_tp2.21/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/glo_1deg.depth b/regtests/ww3_tp2.21/input/glo_1deg.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/glo_1deg.mask b/regtests/ww3_tp2.21/input/glo_1deg.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/glo_1deg.obst b/regtests/ww3_tp2.21/input/glo_1deg.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/grdset_a b/regtests/ww3_tp2.21/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/grdset_b b/regtests/ww3_tp2.21/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/namelists_a.nml b/regtests/ww3_tp2.21/input/namelists_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/namelists_b.nml b/regtests/ww3_tp2.21/input/namelists_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/namelists_glo_1deg.nml b/regtests/ww3_tp2.21/input/namelists_glo_1deg.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/namelists_glo_unst_a.nml b/regtests/ww3_tp2.21/input/namelists_glo_unst_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/namelists_glo_unst_b.nml b/regtests/ww3_tp2.21/input/namelists_glo_unst_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/points.list b/regtests/ww3_tp2.21/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/switch_NO_PDLIB b/regtests/ww3_tp2.21/input/switch_NO_PDLIB old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/switch_PDLIB b/regtests/ww3_tp2.21/input/switch_PDLIB old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/switch_PDLIB_METIS b/regtests/ww3_tp2.21/input/switch_PDLIB_METIS old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_gint_grdset_a.inp b/regtests/ww3_tp2.21/input/ww3_gint_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_gint_grdset_b.inp b/regtests/ww3_tp2.21/input/ww3_gint_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_a.inp b/regtests/ww3_tp2.21/input/ww3_grid_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_a.nml b/regtests/ww3_tp2.21/input/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_b.inp b/regtests/ww3_tp2.21/input/ww3_grid_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_b.nml b/regtests/ww3_tp2.21/input/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_glo_1deg.inp b/regtests/ww3_tp2.21/input/ww3_grid_glo_1deg.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_glo_1deg.nml b/regtests/ww3_tp2.21/input/ww3_grid_glo_1deg.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_a.inp b/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_a.nml b/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_b.inp b/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_b.nml b/regtests/ww3_tp2.21/input/ww3_grid_glo_unst_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_multi_grdset_a.nml b/regtests/ww3_tp2.21/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_multi_grdset_b.nml b/regtests/ww3_tp2.21/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_ounf.nml b/regtests/ww3_tp2.21/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_ounp.nml b/regtests/ww3_tp2.21/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_prnc_wind.nml b/regtests/ww3_tp2.21/input/ww3_prnc_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_shel.inp b/regtests/ww3_tp2.21/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_shel.nml b/regtests/ww3_tp2.21/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.21/input/ww3_strt.inp b/regtests/ww3_tp2.21/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.22/info b/regtests/ww3_tp2.22/info deleted file mode 100644 index c5e483a3c..000000000 --- a/regtests/ww3_tp2.22/info +++ /dev/null @@ -1,58 +0,0 @@ -############################################################################# -# # -# ww3_tp2.22 Test script for WW-III demonstrating Langmuir Mixing # -# Parmeterization for the case of two-dimensional propagation # -# over half the globe. Based on regtest ww3_tp2.2 with # -# switch_PR3_UQ_MPI used as a sample switch. # -# # -# Two test cases are run. Both have LMPENABLED, with one which # -# includes the tail contribution, the other does not. # -# # -# Remarks : # -# - Test case input parameters: # -# I. NO TAIL # -# ---------- # -# + LMPENABLED = T: Langmuir mixing parameterization enabled. # -# + SDTAIL = F: tail contribution NOT enabled. # -# + HSLMODE = 0: uniform (10m) surface layer depth is assumed. # -# # -# II. TAIL INCLUDED # -# ----------------- # -# + LMPENABLED = T: Langmuir mixing parameterization enabled. # -# + SDTAIL = T: tail contribution enabled. # -# + HSLMODE = 0: uniform (10m) surface layer depth is assumed. # -# # -# - Test case output parameters: # -# + USSX/USSY: surface Stokes drift (netCDF: uuss/vuss) # -# + USSHX/USSHY: surface averaged Stokes drift (netCDF: uussh/vussh) # -# # -# Sample run_test commands : # -# (Note: mpirun commands differ by local system) # -# ./bin/run_cmake_test -n 4 -p mpirun -f ../model ww3_tp2.22 # -# ./bin/run_cmake_test -n 4 -p mpirun -f -g sdtail ../model ww3_tp2.22 # -# # -# Notes on LMPN namelist and Langmuir Mixing Parameterization: # -# # -# The LMPN namelist group configures the Langmuir Mixing # -# Parameterization used within the context of climate modeling and # -# when WW3 is coupled with an active ocean model (.e.g., POP2, MOM6). # -# The LMPENABLED flag turns on the parameterization computations. # -# The SDTAIL flag enables the spectral tail contribution. # -# HSLMODE parameter determines the surface layer depth (HSL). # -# When HSLMODE == 0, a uniform 10m HSL is assumed for testing purposes. # -# When HSLMODE == 1, the HSL field is to be received from the active # -# ocean model via coupler. # -# # -# For more info on the Langmuir parameterization, see: # -# Li, Qing, et al. "Langmuir mixing effects on global climate: # -# WAVEWATCH III in CESM." Ocean Modelling 103 (2016): 145-160. # -# # -# Hendrik Tolman, Jun 2002 # -# Last Mod : Li / Altuntas, Nov 2023 # -# # -# Copyright 2009-2023 National Weather Service (NWS), # -# National Oceanic and Atmospheric Administration. All rights # -# reserved. WAVEWATCH III is a trademark of the NWS. # -# No unauthorized use without permission. # -# # -############################################################################# diff --git a/regtests/ww3_tp2.22/input/switch b/regtests/ww3_tp2.22/input/switch deleted file mode 100644 index 0f07d4935..000000000 --- a/regtests/ww3_tp2.22/input/switch +++ /dev/null @@ -1 +0,0 @@ -NOGRB DIST MPI PR3 UQ FLX2 LN0 ST0 NL0 BT0 DB0 TR0 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 diff --git a/regtests/ww3_tp2.22/input/track_i.ww3 b/regtests/ww3_tp2.22/input/track_i.ww3 deleted file mode 100644 index ae2154a44..000000000 --- a/regtests/ww3_tp2.22/input/track_i.ww3 +++ /dev/null @@ -1,6 +0,0 @@ -WAVEWATCH III TRACK LOCATIONS DATA -19680606 000000 0 0 S1A -19680606 040000 1 0 S1B -19680606 060000 1 0 S1C -19680606 080000 2 0 S1D -19680606 120000 0.5 0 S1E diff --git a/regtests/ww3_tp2.22/input/ww3_grid.inp b/regtests/ww3_tp2.22/input/ww3_grid.inp deleted file mode 100644 index 83213e0e1..000000000 --- a/regtests/ww3_tp2.22/input/ww3_grid.inp +++ /dev/null @@ -1,33 +0,0 @@ -$ WAVEWATCH III Grid preprocessor input file -$ ------------------------------------------ - 'LANGMUIR MIXING PARAMETERIZATION FOR 2-D PROP. AROUND GLOBE' -$ - 1.1 0.040 9 24 0. -$ - F T T T F F - 2200. 2200. 2200. 2200. -$ - &PRO2 DTIME = 345600. / - &PRO3 WDTHCG = 1.50, WDTHTH =1.50 / - &OUTS E3D = 1 / - &LMPN LMPENABLED = T, SDTAIL = F, HSLMODE = 0 / -END OF NAMELISTS -$ - 'RECT' T 'NONE' - 193 93 - 1. 1. 1. - -6. -46. 1. -$ - -5. 5.75 10 -2500. 2 1 '(....)' 'UNIT' 'input' -$ - 17949*1 -$ - 10 1 1 '(....)' 'PART' 'input' -$ - 0 0 F - 0 0 F - 0 0 -$ - 0. -40. 0.5 0.866 100 - 0. 40. 0.5 -0.866 -100 - 0. 0. 0. 0. 0 diff --git a/regtests/ww3_tp2.22/input/ww3_grid_sdtail.inp b/regtests/ww3_tp2.22/input/ww3_grid_sdtail.inp deleted file mode 100644 index e021a094a..000000000 --- a/regtests/ww3_tp2.22/input/ww3_grid_sdtail.inp +++ /dev/null @@ -1,33 +0,0 @@ -$ WAVEWATCH III Grid preprocessor input file -$ ------------------------------------------ - 'LANGMUIR MIXING PARAMETERIZATION FOR 2-D PROP. AROUND GLOBE' -$ - 1.1 0.040 9 24 0. -$ - F T T T F F - 2200. 2200. 2200. 2200. -$ - &PRO2 DTIME = 345600. / - &PRO3 WDTHCG = 1.50, WDTHTH =1.50 / - &OUTS E3D = 1 / - &LMPN LMPENABLED = T, SDTAIL = T, HSLMODE = 0 / -END OF NAMELISTS -$ - 'RECT' T 'NONE' - 193 93 - 1. 1. 1. - -6. -46. 1. -$ - -5. 5.75 10 -2500. 2 1 '(....)' 'UNIT' 'input' -$ - 17949*1 -$ - 10 1 1 '(....)' 'PART' 'input' -$ - 0 0 F - 0 0 F - 0 0 -$ - 0. -40. 0.5 0.866 100 - 0. 40. 0.5 -0.866 -100 - 0. 0. 0. 0. 0 diff --git a/regtests/ww3_tp2.22/input/ww3_ounf.inp b/regtests/ww3_tp2.22/input/ww3_ounf.inp deleted file mode 100644 index 6d1998f36..000000000 --- a/regtests/ww3_tp2.22/input/ww3_ounf.inp +++ /dev/null @@ -1,43 +0,0 @@ -$ -------------------------------------------------------------------- $ -$ WAVEWATCH III Grid output post-processing $ -$--------------------------------------------------------------------- $ -$ First output time (yyyymmdd hhmmss), increment of output (s), -$ and number of output times. -$ - 19680606 000000 3600. 12 -$ -$ Fields requested --------------------------------------------------- $ -$ -$ Output request flags identifying fields as in ww3_shel.inp. See that -$ file for a full documentation of field output options. Namelist type -$ selection is used here (for alternative F/T flags, see ww3_shel.inp). -$ - N - HS T01 DIR SPR USS USSH -$ -$--------------------------------------------------------------------- $ -$ netCDF version [3,4] -$ and variable type 4 [2 = SHORT, 3 = it depends , 4 = REAL] -$ swell partitions [0 1 2 3 4 5] -$ variables in same file [T] or not [F] -$ - 4 4 - 0 1 2 - T -$ -$ -------------------------------------------------------------------- $ -$ File prefix -$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] -$ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] -$ - ww3. - 6 - 1 100000 1 100000 -$ -$ For each field and time a new file is generated with the file name -$ ww3.date_xxx.nc , where date is a conventional time indicator with S3 -$ characters, and xxx is a field identifier. -$ -$ -------------------------------------------------------------------- $ -$ End of input file $ -$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.22/input/ww3_ounp.inp b/regtests/ww3_tp2.22/input/ww3_ounp.inp deleted file mode 100644 index 4358accbd..000000000 --- a/regtests/ww3_tp2.22/input/ww3_ounp.inp +++ /dev/null @@ -1,119 +0,0 @@ -$ -------------------------------------------------------------------- $ -$ WAVEWATCH III NETCDF Point output post-processing $ -$--------------------------------------------------------------------- $ -$ First output time (yyyymmdd hhmmss), increment of output (s), -$ and number of output times. -$ - 19680606 000000 21600. 1000 -$ -$ Points requested --------------------------------------------------- $ -$ -$ Define points index for which output is to be generated. -$ If no one defined, all points are selected -$ One index number per line, negative number identifies end of list. - 1 - 2 - 3 -$ mandatory end of list - -1 -$ -$--------------------------------------------------------------------- $ -$ file prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] -$ netCDF version [3,4] -$ points in same file [T] or not [F] -$ and max number of points to be processed in one pass -$ output type ITYPE [0,1,2,3] -$ flag for global attributes WW3 [0] or variable version [1-2-3-4] -$ flag for dimensions order time,station [T] or station,time [F] -$ - ww3. - 6 - 4 - T 150 - 1 - 0 - T -$ -$ -------------------------------------------------------------------- $ -$ ITYPE = 0, inventory of file. -$ No additional input, the above time range is ignored. -$ -$ -------------------------------------------------------------------- $ -$ ITYPE = 1, netCDF Spectra. -$ - Sub-type OTYPE : 1 : Print plots. -$ 2 : Table of 1-D spectra -$ 3 : Transfer file. -$ 4 : Spectral partitioning. -$ - Scaling factors for 1-D and 2-D spectra Negative factor -$ disables, output, factor = 0. gives normalized spectrum. -$ - Netcdf variable type [2=SHORT, 3=it depends, 4=REAL] -$ - 3 1 0 4 -$ -$ The transfer file contains records with the following contents. -$ -$ - File ID in quotes, number of frequencies, directions and points. -$ grid name in quotes (for unformatted file C*21,3I,C*30). -$ - Bin frequencies in Hz for all bins. -$ - Bin directions in radians for all bins (Oceanographic conv.). -$ -+ -$ - Time in yyyymmdd hhmmss format | loop -$ -+ | -$ - Point name (C*40), lat, lon, d, U10 and | loop | over -$ direction, current speed and direction | over | -$ - E(f,theta) | points | times -$ -+ -+ -$ -$ -------------------------------------------------------------------- $ -$ ITYPE = 2, netCDF Tables of (mean) parameter -$ - Sub-type OTYPE : 1 : Depth, current, wind -$ 2 : Mean wave pars. -$ 3 : Nondimensional pars. (U*) -$ 4 : Nondimensional pars. (U10) -$ 5 : 'Validation table' -$ 6 : WMO standard output -$ 4 -$ -$ -------------------------------------------------------------------- $ -$ ITYPE = 3, netCDF Source terms -$ - Sub-type OTYPE : 1 : Print plots. -$ 2 : Table of 1-D S(f). -$ 3 : Table of 1-D inverse time scales -$ (1/T = S/F). -$ 4 : Transfer file -$ - Scaling factors for 1-D and 2-D source terms. Negative -$ factor disables print plots, factor = 0. gives normalized -$ print plots. -$ - Flags for spectrum, input, interactions, dissipation, -$ bottom and total source term. -$ - scale ISCALE for OTYPE=2,3 -$ 0 : Dimensional. -$ 1 : Nondimensional in terms of U10 -$ 2 : Nondimensional in terms of U* -$ 3-5: like 0-2 with f normalized with fp. -$ -$ 4 0 0 T T T T T T 0 -$ -$ The transfer file contains records with the following contents. -$ -$ - File ID in quotes, nubmer of frequencies, directions and points, -$ flags for spectrum and source terms (C*21, 3I, 6L) -$ - Bin frequencies in Hz for all bins. -$ - Bin directions in radians for all bins (Oceanographic conv.). -$ -+ -$ - Time in yyyymmdd hhmmss format | loop -$ -+ | -$ - Point name (C*40), depth, wind speed and | loop | over -$ direction, current speed and direction | over | -$ - E(f,theta) if requested | points | times -$ - Sin(f,theta) if requested | | -$ - Snl(f,theta) if requested | | -$ - Sds(f,theta) if requested | | -$ - Sbt(f,theta) if requested | | -$ - Stot(f,theta) if requested | | -$ -+ -+ -$ -$ -------------------------------------------------------------------- $ -$ End of input file $ -$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.22/input/ww3_outf.inp b/regtests/ww3_tp2.22/input/ww3_outf.inp deleted file mode 100644 index 2ee125996..000000000 --- a/regtests/ww3_tp2.22/input/ww3_outf.inp +++ /dev/null @@ -1,10 +0,0 @@ -$ WAVEWATCH III Grid output post-processing -$ ----------------------------------------- - 19680606 000000 3600. 12 -$ - N - HS T01 DIR SPR USS USSH -$ - 1 0 -$ - 1 193 1 1 93 1 T F F diff --git a/regtests/ww3_tp2.22/input/ww3_outp_spec.inp b/regtests/ww3_tp2.22/input/ww3_outp_spec.inp deleted file mode 100644 index d4c452b1f..000000000 --- a/regtests/ww3_tp2.22/input/ww3_outp_spec.inp +++ /dev/null @@ -1,11 +0,0 @@ -$ WAVEWATCH III Point output post-processing -$ ------------------------------------------ - 19680606 000000 43200. 25 -$ - 1 - 2 - 3 - -1 -$ - 1 - 1 -1. 0. 33 F diff --git a/regtests/ww3_tp2.22/input/ww3_outp_tab51.inp b/regtests/ww3_tp2.22/input/ww3_outp_tab51.inp deleted file mode 100644 index d40f4a55d..000000000 --- a/regtests/ww3_tp2.22/input/ww3_outp_tab51.inp +++ /dev/null @@ -1,10 +0,0 @@ -$ WAVEWATCH III Point output post-processing -$ ------------------------------------------ - 19680606 000000 43200. 25 -$ - 1 - -1 -$ - 2 -$ - 2 51 diff --git a/regtests/ww3_tp2.22/input/ww3_outp_tab52.inp b/regtests/ww3_tp2.22/input/ww3_outp_tab52.inp deleted file mode 100644 index 06431db5d..000000000 --- a/regtests/ww3_tp2.22/input/ww3_outp_tab52.inp +++ /dev/null @@ -1,10 +0,0 @@ -$ WAVEWATCH III Point output post-processing -$ ------------------------------------------ - 19680606 000000 43200. 25 -$ - 2 - -1 -$ - 2 -$ - 2 52 diff --git a/regtests/ww3_tp2.22/input/ww3_outp_tab53.inp b/regtests/ww3_tp2.22/input/ww3_outp_tab53.inp deleted file mode 100644 index 209a605b0..000000000 --- a/regtests/ww3_tp2.22/input/ww3_outp_tab53.inp +++ /dev/null @@ -1,10 +0,0 @@ -$ WAVEWATCH III Point output post-processing -$ ------------------------------------------ - 19680606 000000 43200. 25 -$ - 3 - -1 -$ - 2 -$ - 2 53 diff --git a/regtests/ww3_tp2.22/input/ww3_shel.inp b/regtests/ww3_tp2.22/input/ww3_shel.inp deleted file mode 100644 index 8a32e5584..000000000 --- a/regtests/ww3_tp2.22/input/ww3_shel.inp +++ /dev/null @@ -1,42 +0,0 @@ -$ WAVEWATCH III shell input file -$ ------------------------------ - F T - T T - T T - F F - F F - F F - F - F - F -$ - 19680606 000000 - 19680606 120000 -$ - 1 -$ - 19680606 000000 3600 19680608 000000 -$ - N - HS T01 DIR SPR USS USSH -$ - 19680606 000000 21600 19680608 000000 - 0.0 0.0 'LEFT' - 90.0 0.0 'CENTER' - 180.0 0.0 'RIGHT' - 0.0 0.0 'STOPSTRING' - 19680606 000000 14400 19680608 000000 - T - 19680606 000000 0 19680608 000000 - 19680606 000000 0 19680608 000000 - 19680606 000000 0 19680608 000000 -$ - 'CUR' 19680606 030000 2.0 45. - 'WND' 19680606 000000 20.0 180. 2. - 'WND' 19680606 040000 15.0 130. 1. - 'WND' 19680606 080000 25.0 90. 3. - 'STP' -$ -$ -------------------------------------------------------------------- $ -$ End of input file $ -$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.22/input/ww3_strt.inp b/regtests/ww3_tp2.22/input/ww3_strt.inp deleted file mode 100644 index 62e9be21a..000000000 --- a/regtests/ww3_tp2.22/input/ww3_strt.inp +++ /dev/null @@ -1,5 +0,0 @@ -$ WAVEWATCH III Initial conditions input file -$ ------------------------------------------- - 1 -$ fp sip thm ncos xm six ym siy hmax - 0.06 0.01 310. 8 0.0 -1.0 0.0 1.0 2.5 diff --git a/regtests/ww3_tp2.3/info b/regtests/ww3_tp2.3/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/GARDEN.depth b/regtests/ww3_tp2.3/input/GARDEN.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/gx_outf.inp b/regtests/ww3_tp2.3/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/map2_3.gs b/regtests/ww3_tp2.3/input/map2_3.gs old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/namelists_GARDEN.nml b/regtests/ww3_tp2.3/input/namelists_GARDEN.nml old mode 100644 new mode 100755 index b8533ddda..04b929ca1 --- a/regtests/ww3_tp2.3/input/namelists_GARDEN.nml +++ b/regtests/ww3_tp2.3/input/namelists_GARDEN.nml @@ -1,4 +1,4 @@ -&OUTS E3D=1, TH1MF=1, STH1MF=1 / +&OUTS E3D=1 / &PRO2 DTIME=345600. / &PRO3 WDTHTH=1.50, WDTHCG=1.50 / END OF NAMELISTS diff --git a/regtests/ww3_tp2.3/input/switch b/regtests/ww3_tp2.3/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR1 b/regtests/ww3_tp2.3/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR1_MPI b/regtests/ww3_tp2.3/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR2_UNO b/regtests/ww3_tp2.3/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR2_UNO_MPI b/regtests/ww3_tp2.3/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR2_UQ b/regtests/ww3_tp2.3/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR2_UQ_MPI b/regtests/ww3_tp2.3/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR3_UNO b/regtests/ww3_tp2.3/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR3_UNO_MPI b/regtests/ww3_tp2.3/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR3_UNO_NC4 b/regtests/ww3_tp2.3/input/switch_PR3_UNO_NC4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR3_UQ b/regtests/ww3_tp2.3/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR3_UQ_MPI b/regtests/ww3_tp2.3/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/switch_PR3_UQ_NC4 b/regtests/ww3_tp2.3/input/switch_PR3_UQ_NC4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/ww3_grid.inp b/regtests/ww3_tp2.3/input/ww3_grid.inp old mode 100644 new mode 100755 index 3a4271307..9be443dbb --- a/regtests/ww3_tp2.3/input/ww3_grid.inp +++ b/regtests/ww3_tp2.3/input/ww3_grid.inp @@ -16,7 +16,7 @@ $ $ $ Activated up to one line per namelist !! $ - &OUTS E3D=1, TH1MF=1, STH1MF=1 / + &OUTS E3D=1 / $ &PRO2 DTIME= 0. / $ &PRO2 DTIME=172800. / &PRO2 DTIME=345600. / diff --git a/regtests/ww3_tp2.3/input/ww3_grid.nml b/regtests/ww3_tp2.3/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/ww3_ounf.inp b/regtests/ww3_tp2.3/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/ww3_ounf.nml b/regtests/ww3_tp2.3/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/ww3_outf.inp b/regtests/ww3_tp2.3/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/ww3_shel.inp b/regtests/ww3_tp2.3/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/ww3_shel.nml b/regtests/ww3_tp2.3/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.3/input/ww3_strt.inp b/regtests/ww3_tp2.3/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/info b/regtests/ww3_tp2.4/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/depth.169x139.IDLA1.dat b/regtests/ww3_tp2.4/input/depth.169x139.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/depth.225x106.IDLA1.dat b/regtests/ww3_tp2.4/input/depth.225x106.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/lat.169x139.IDLA1.dat b/regtests/ww3_tp2.4/input/lat.169x139.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/lon.169x139.IDLA1.dat b/regtests/ww3_tp2.4/input/lon.169x139.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/namelists_2-D.nml b/regtests/ww3_tp2.4/input/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/namelists_curv.nml b/regtests/ww3_tp2.4/input/namelists_curv.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/points.list b/regtests/ww3_tp2.4/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch b/regtests/ww3_tp2.4/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR1 b/regtests/ww3_tp2.4/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR1_MPI b/regtests/ww3_tp2.4/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR2_UNO b/regtests/ww3_tp2.4/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR2_UNO_MPI b/regtests/ww3_tp2.4/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR2_UQ b/regtests/ww3_tp2.4/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR2_UQ_MPI b/regtests/ww3_tp2.4/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR3_UNO b/regtests/ww3_tp2.4/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR3_UNO_MPI b/regtests/ww3_tp2.4/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR3_UQ b/regtests/ww3_tp2.4/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/switch_PR3_UQ_MPI b/regtests/ww3_tp2.4/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_grid.inp b/regtests/ww3_tp2.4/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_grid.nml b/regtests/ww3_tp2.4/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_grid_curv.inp b/regtests/ww3_tp2.4/input/ww3_grid_curv.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_grid_curv.nml b/regtests/ww3_tp2.4/input/ww3_grid_curv.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_ounf.inp b/regtests/ww3_tp2.4/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_ounf.nml b/regtests/ww3_tp2.4/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_outf.inp b/regtests/ww3_tp2.4/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_outf_depth.inp b/regtests/ww3_tp2.4/input/ww3_outf_depth.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_shel.inp b/regtests/ww3_tp2.4/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_shel.nml b/regtests/ww3_tp2.4/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.4/input/ww3_strt.inp b/regtests/ww3_tp2.4/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/info b/regtests/ww3_tp2.5/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/depth.361x361.IDLA1.dat b/regtests/ww3_tp2.5/input/depth.361x361.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/lat.361x361.IDLA1.dat b/regtests/ww3_tp2.5/input/lat.361x361.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/lon.361x361.IDLA1.dat b/regtests/ww3_tp2.5/input/lon.361x361.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/namelists_2-D.nml b/regtests/ww3_tp2.5/input/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/namelists_36dirs.nml b/regtests/ww3_tp2.5/input/namelists_36dirs.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/namelists_36dirs_nogse.nml b/regtests/ww3_tp2.5/input/namelists_36dirs_nogse.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/points.list b/regtests/ww3_tp2.5/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch b/regtests/ww3_tp2.5/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR1 b/regtests/ww3_tp2.5/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR1_MPI b/regtests/ww3_tp2.5/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR2_UNO b/regtests/ww3_tp2.5/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR2_UNO_MPI b/regtests/ww3_tp2.5/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR2_UQ b/regtests/ww3_tp2.5/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR2_UQ_MPI b/regtests/ww3_tp2.5/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR3_UNO b/regtests/ww3_tp2.5/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR3_UNO_MPI b/regtests/ww3_tp2.5/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR3_UQ b/regtests/ww3_tp2.5/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/switch_PR3_UQ_MPI b/regtests/ww3_tp2.5/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_grid.inp b/regtests/ww3_tp2.5/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_grid.nml b/regtests/ww3_tp2.5/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_grid_36dirs.inp b/regtests/ww3_tp2.5/input/ww3_grid_36dirs.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_grid_36dirs.nml b/regtests/ww3_tp2.5/input/ww3_grid_36dirs.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_grid_36dirs_nogse.inp b/regtests/ww3_tp2.5/input/ww3_grid_36dirs_nogse.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_grid_36dirs_nogse.nml b/regtests/ww3_tp2.5/input/ww3_grid_36dirs_nogse.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_ounf.inp b/regtests/ww3_tp2.5/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_ounf.nml b/regtests/ww3_tp2.5/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_outf.inp b/regtests/ww3_tp2.5/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_shel.inp b/regtests/ww3_tp2.5/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_shel.nml b/regtests/ww3_tp2.5/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input/ww3_strt.inp b/regtests/ww3_tp2.5/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/depth.361x361.IDLA1.dat b/regtests/ww3_tp2.5/input_REF/depth.361x361.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/lat.361x361.IDLA1.dat b/regtests/ww3_tp2.5/input_REF/lat.361x361.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/lon.361x361.IDLA1.dat b/regtests/ww3_tp2.5/input_REF/lon.361x361.IDLA1.dat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/namelists_2-D.nml b/regtests/ww3_tp2.5/input_REF/namelists_2-D.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/namelists_36dirs.nml b/regtests/ww3_tp2.5/input_REF/namelists_36dirs.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/namelists_36dirs_nogse.nml b/regtests/ww3_tp2.5/input_REF/namelists_36dirs_nogse.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/points.list b/regtests/ww3_tp2.5/input_REF/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch b/regtests/ww3_tp2.5/input_REF/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR1 b/regtests/ww3_tp2.5/input_REF/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR1_MPI b/regtests/ww3_tp2.5/input_REF/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR2_UNO b/regtests/ww3_tp2.5/input_REF/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR2_UNO_MPI b/regtests/ww3_tp2.5/input_REF/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR2_UQ b/regtests/ww3_tp2.5/input_REF/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR2_UQ_MPI b/regtests/ww3_tp2.5/input_REF/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR3_UNO b/regtests/ww3_tp2.5/input_REF/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR3_UNO_MPI b/regtests/ww3_tp2.5/input_REF/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR3_UQ b/regtests/ww3_tp2.5/input_REF/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/switch_PR3_UQ_MPI b/regtests/ww3_tp2.5/input_REF/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_grid.inp b/regtests/ww3_tp2.5/input_REF/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_grid.nml b/regtests/ww3_tp2.5/input_REF/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs.inp b/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs.nml b/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs_nogse.inp b/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs_nogse.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs_nogse.nml b/regtests/ww3_tp2.5/input_REF/ww3_grid_36dirs_nogse.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_ounf.inp b/regtests/ww3_tp2.5/input_REF/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_ounf.nml b/regtests/ww3_tp2.5/input_REF/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_ounp.inp b/regtests/ww3_tp2.5/input_REF/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_ounp.nml b/regtests/ww3_tp2.5/input_REF/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_outf.inp b/regtests/ww3_tp2.5/input_REF/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_shel.inp b/regtests/ww3_tp2.5/input_REF/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_shel.nml b/regtests/ww3_tp2.5/input_REF/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.5/input_REF/ww3_strt.inp b/regtests/ww3_tp2.5/input_REF/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/info b/regtests/ww3_tp2.6/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/limon_ll.msh b/regtests/ww3_tp2.6/input/limon_ll.msh old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/namelists_LIMON.nml b/regtests/ww3_tp2.6/input/namelists_LIMON.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/namelists_pdlib.nml b/regtests/ww3_tp2.6/input/namelists_pdlib.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/points.list b/regtests/ww3_tp2.6/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/switch b/regtests/ww3_tp2.6/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/switch_PDLIB b/regtests/ww3_tp2.6/input/switch_PDLIB old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/switch_ST0 b/regtests/ww3_tp2.6/input/switch_ST0 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/switch_ST4 b/regtests/ww3_tp2.6/input/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/switch_ST4_ASCII b/regtests/ww3_tp2.6/input/switch_ST4_ASCII deleted file mode 100644 index db1b70b66..000000000 --- a/regtests/ww3_tp2.6/input/switch_ST4_ASCII +++ /dev/null @@ -1 +0,0 @@ -ASCII NOGRB SHRD PR3 UQ FLX0 LN0 ST4 NL1 BT1 DB1 MLIM TR0 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 diff --git a/regtests/ww3_tp2.6/input/ww3_grid.inp b/regtests/ww3_tp2.6/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/ww3_grid.nml b/regtests/ww3_tp2.6/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/ww3_grid_pdlib.inp b/regtests/ww3_tp2.6/input/ww3_grid_pdlib.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/ww3_grid_pdlib.nml b/regtests/ww3_tp2.6/input/ww3_grid_pdlib.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/ww3_ounf.inp b/regtests/ww3_tp2.6/input/ww3_ounf.inp old mode 100644 new mode 100755 index d2bde30b6..c4d51a66c --- a/regtests/ww3_tp2.6/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.6/input/ww3_ounf.inp @@ -13,7 +13,7 @@ $ file for a full documentation of field output options. Namelist type $ selection is used here (for alternative F/T flags, see ww3_shel.inp). $ N - HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD QP QKK + HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD $ $--------------------------------------------------------------------- $ $ netCDF version [3,4] diff --git a/regtests/ww3_tp2.6/input/ww3_ounf.nml b/regtests/ww3_tp2.6/input/ww3_ounf.nml old mode 100644 new mode 100755 index 7b344cc1c..658dd2525 --- a/regtests/ww3_tp2.6/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.6/input/ww3_ounf.nml @@ -9,7 +9,7 @@ FIELD%TIMESTART = '20100801 000000' FIELD%TIMESTRIDE = '10' FIELD%TIMECOUNT = '3600' - FIELD%LIST = 'HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD QP QKK' + FIELD%LIST = 'HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD' FIELD%PARTITION = '0 1 2' FIELD%SAMEFILE = F FIELD%TYPE = 4 diff --git a/regtests/ww3_tp2.6/input/ww3_ounp.inp b/regtests/ww3_tp2.6/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/ww3_ounp.nml b/regtests/ww3_tp2.6/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/ww3_outf.inp b/regtests/ww3_tp2.6/input/ww3_outf.inp old mode 100644 new mode 100755 index 86c1115ff..70dc9974c --- a/regtests/ww3_tp2.6/input/ww3_outf.inp +++ b/regtests/ww3_tp2.6/input/ww3_outf.inp @@ -7,7 +7,7 @@ $ $ $ Request flags identifying fields as in ww3_shel input and section 2.4 fo the manual. N -HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD QP QKK +HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD $ $ Output type ITYPE [0,1,2,3] $ diff --git a/regtests/ww3_tp2.6/input/ww3_outp.inp b/regtests/ww3_tp2.6/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.6/input/ww3_shel.inp b/regtests/ww3_tp2.6/input/ww3_shel.inp old mode 100644 new mode 100755 index 2bd59dc2c..ecdf1bc3a --- a/regtests/ww3_tp2.6/input/ww3_shel.inp +++ b/regtests/ww3_tp2.6/input/ww3_shel.inp @@ -60,7 +60,7 @@ $ Output request flags identifying fields as in ww3_shel input and $ section 2.4 of the manual. $ N -HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD QP QKK +HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD $ $---------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.6/input/ww3_shel.nml b/regtests/ww3_tp2.6/input/ww3_shel.nml old mode 100644 new mode 100755 index 3518049f2..f27f0b161 --- a/regtests/ww3_tp2.6/input/ww3_shel.nml +++ b/regtests/ww3_tp2.6/input/ww3_shel.nml @@ -22,7 +22,7 @@ ! Define the output types point parameters via OUTPUT_TYPE_NML namelist ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML - TYPE%FIELD%LIST = 'HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD QP QKK' + TYPE%FIELD%LIST = 'HS LM T02 T01 T0M1 UST CHA CGE DTD FC CFX CFD' TYPE%POINT%FILE = '../input/points.list' / diff --git a/regtests/ww3_tp2.6/input/ww3_strt.inp b/regtests/ww3_tp2.6/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/info b/regtests/ww3_tp2.7/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/namelists_REF-UG.nml b/regtests/ww3_tp2.7/input/namelists_REF-UG.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/points.list b/regtests/ww3_tp2.7/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ref1.msh b/regtests/ww3_tp2.7/input/ref1.msh old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ref1.mshb b/regtests/ww3_tp2.7/input/ref1.mshb old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ref_slope.msh b/regtests/ww3_tp2.7/input/ref_slope.msh old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ref_slope_x.msh b/regtests/ww3_tp2.7/input/ref_slope_x.msh old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ref_slope_x_45N.msh b/regtests/ww3_tp2.7/input/ref_slope_x_45N.msh old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ref_slope_y.msh b/regtests/ww3_tp2.7/input/ref_slope_y.msh old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/switch b/regtests/ww3_tp2.7/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/switch_ST0 b/regtests/ww3_tp2.7/input/switch_ST0 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_grid.inp b/regtests/ww3_tp2.7/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_grid.nml b/regtests/ww3_tp2.7/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_ounf.inp b/regtests/ww3_tp2.7/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_ounf.nml b/regtests/ww3_tp2.7/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_ounp.inp b/regtests/ww3_tp2.7/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_ounp.nml b/regtests/ww3_tp2.7/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_outf.inp b/regtests/ww3_tp2.7/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_outp.inp b/regtests/ww3_tp2.7/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_shel.inp b/regtests/ww3_tp2.7/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_shel.nml b/regtests/ww3_tp2.7/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.7/input/ww3_strt.inp b/regtests/ww3_tp2.7/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/iro_1p5k.bot b/regtests/ww3_tp2.8/input/iro_1p5k.bot old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/namelists_IROISE.nml b/regtests/ww3_tp2.8/input/namelists_IROISE.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/points.list b/regtests/ww3_tp2.8/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/spec.list b/regtests/ww3_tp2.8/input/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/switch b/regtests/ww3_tp2.8/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_bounc.inp b/regtests/ww3_tp2.8/input/ww3_bounc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_bounc.nml b/regtests/ww3_tp2.8/input/ww3_bounc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_grid.inp b/regtests/ww3_tp2.8/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_grid.nml b/regtests/ww3_tp2.8/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_ounf.inp b/regtests/ww3_tp2.8/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_ounf.nml b/regtests/ww3_tp2.8/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_ounp.inp b/regtests/ww3_tp2.8/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_ounp.nml b/regtests/ww3_tp2.8/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_outp.inp b/regtests/ww3_tp2.8/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_prnc.inp b/regtests/ww3_tp2.8/input/ww3_prnc.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_prnc.nml b/regtests/ww3_tp2.8/input/ww3_prnc.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.8/input/ww3_shel.nml b/regtests/ww3_tp2.8/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/info b/regtests/ww3_tp2.9/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/curv_2d.bot b/regtests/ww3_tp2.9/input/curv_2d.bot old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/curv_2d.lat b/regtests/ww3_tp2.9/input/curv_2d.lat old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/curv_2d.lon b/regtests/ww3_tp2.9/input/curv_2d.lon old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/curv_2d.mask b/regtests/ww3_tp2.9/input/curv_2d.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/curv_2d.obs b/regtests/ww3_tp2.9/input/curv_2d.obs old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/namelists_a.nml b/regtests/ww3_tp2.9/input/namelists_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/namelists_b.nml b/regtests/ww3_tp2.9/input/namelists_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/rect_2d.bot b/regtests/ww3_tp2.9/input/rect_2d.bot old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/rect_2d.mask b/regtests/ww3_tp2.9/input/rect_2d.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/rect_2d.obs b/regtests/ww3_tp2.9/input/rect_2d.obs old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch b/regtests/ww3_tp2.9/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR1 b/regtests/ww3_tp2.9/input/switch_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR1_MPI b/regtests/ww3_tp2.9/input/switch_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR2_UNO b/regtests/ww3_tp2.9/input/switch_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR2_UNO_MPI b/regtests/ww3_tp2.9/input/switch_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR2_UQ b/regtests/ww3_tp2.9/input/switch_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR2_UQ_MPI b/regtests/ww3_tp2.9/input/switch_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR3_UNO b/regtests/ww3_tp2.9/input/switch_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR3_UNO_MPI b/regtests/ww3_tp2.9/input/switch_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR3_UQ b/regtests/ww3_tp2.9/input/switch_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/switch_PR3_UQ_MPI b/regtests/ww3_tp2.9/input/switch_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_grid_a.inp b/regtests/ww3_tp2.9/input/ww3_grid_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_grid_a.nml b/regtests/ww3_tp2.9/input/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_grid_b.inp b/regtests/ww3_tp2.9/input/ww3_grid_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_grid_b.nml b/regtests/ww3_tp2.9/input/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_ounf.inp b/regtests/ww3_tp2.9/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_ounf.nml b/regtests/ww3_tp2.9/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.inp b/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.nml b/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_outf.inp b/regtests/ww3_tp2.9/input/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_outf_flds_hrly.inp b/regtests/ww3_tp2.9/input/ww3_outf_flds_hrly.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_shel.inp b/regtests/ww3_tp2.9/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_shel.nml b/regtests/ww3_tp2.9/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tp2.9/input/ww3_strt.inp b/regtests/ww3_tp2.9/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/info b/regtests/ww3_tpt1.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM1.depth b/regtests/ww3_tpt1.1/input/PTM1.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM1.mask b/regtests/ww3_tpt1.1/input/PTM1.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM2.depth b/regtests/ww3_tpt1.1/input/PTM2.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM2.mask b/regtests/ww3_tpt1.1/input/PTM2.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM3.depth b/regtests/ww3_tpt1.1/input/PTM3.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM3.mask b/regtests/ww3_tpt1.1/input/PTM3.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM4.depth b/regtests/ww3_tpt1.1/input/PTM4.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM4.mask b/regtests/ww3_tpt1.1/input/PTM4.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM5.depth b/regtests/ww3_tpt1.1/input/PTM5.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/PTM5.mask b/regtests/ww3_tpt1.1/input/PTM5.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM1.nml b/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM1.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM2.nml b/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM2.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM3.nml b/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM3.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM4.nml b/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM4.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM5.nml b/regtests/ww3_tpt1.1/input/grid_nml/namelists_PTM5.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM1.nml b/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM1.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM2.nml b/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM2.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM3.nml b/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM3.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM4.nml b/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM4.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM5.nml b/regtests/ww3_tpt1.1/input/grid_nml/ww3_grid_PTM5.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/namelists_PTM1.nml b/regtests/ww3_tpt1.1/input/namelists_PTM1.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/namelists_PTM2.nml b/regtests/ww3_tpt1.1/input/namelists_PTM2.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/namelists_PTM3.nml b/regtests/ww3_tpt1.1/input/namelists_PTM3.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/namelists_PTM4.nml b/regtests/ww3_tpt1.1/input/namelists_PTM4.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/namelists_PTM5.nml b/regtests/ww3_tpt1.1/input/namelists_PTM5.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/points.list b/regtests/ww3_tpt1.1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/switch b/regtests/ww3_tpt1.1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/switch_MPI b/regtests/ww3_tpt1.1/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM1.inp b/regtests/ww3_tpt1.1/input/ww3_grid_PTM1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM1.nml b/regtests/ww3_tpt1.1/input/ww3_grid_PTM1.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM2.inp b/regtests/ww3_tpt1.1/input/ww3_grid_PTM2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM2.nml b/regtests/ww3_tpt1.1/input/ww3_grid_PTM2.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM3.inp b/regtests/ww3_tpt1.1/input/ww3_grid_PTM3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM3.nml b/regtests/ww3_tpt1.1/input/ww3_grid_PTM3.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM4.inp b/regtests/ww3_tpt1.1/input/ww3_grid_PTM4.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM4.nml b/regtests/ww3_tpt1.1/input/ww3_grid_PTM4.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM5.inp b/regtests/ww3_tpt1.1/input/ww3_grid_PTM5.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_grid_PTM5.nml b/regtests/ww3_tpt1.1/input/ww3_grid_PTM5.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_ounf.nml b/regtests/ww3_tpt1.1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_ounp.nml b/regtests/ww3_tpt1.1/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_outp.inp b/regtests/ww3_tpt1.1/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_shel.nml b/regtests/ww3_tpt1.1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tpt1.1/input/ww3_strt.inp b/regtests/ww3_tpt1.1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/info b/regtests/ww3_tr1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/RTD.depth b/regtests/ww3_tr1/input/RTD.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/RTD.mask b/regtests/ww3_tr1/input/RTD.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/namelists_RTD.nml b/regtests/ww3_tr1/input/namelists_RTD.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/points.list b/regtests/ww3_tr1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/switch b/regtests/ww3_tr1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/ww3_grid.inp b/regtests/ww3_tr1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/ww3_grid.nml b/regtests/ww3_tr1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/ww3_outp.inp b/regtests/ww3_tr1/input/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/ww3_shel.inp b/regtests/ww3_tr1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input/ww3_shel.nml b/regtests/ww3_tr1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/RTD.depth b/regtests/ww3_tr1/input_bndin/RTD.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/RTD.mask b/regtests/ww3_tr1/input_bndin/RTD.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/bnd1.spc b/regtests/ww3_tr1/input_bndin/bnd1.spc old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/bnd2.spc b/regtests/ww3_tr1/input_bndin/bnd2.spc old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/bnd3.spc b/regtests/ww3_tr1/input_bndin/bnd3.spc old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/namelists_RTD.nml b/regtests/ww3_tr1/input_bndin/namelists_RTD.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/points.list b/regtests/ww3_tr1/input_bndin/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/spec.list b/regtests/ww3_tr1/input_bndin/spec.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/switch b/regtests/ww3_tr1/input_bndin/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/ww3_bound.inp b/regtests/ww3_tr1/input_bndin/ww3_bound.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/ww3_bound.nml b/regtests/ww3_tr1/input_bndin/ww3_bound.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/ww3_grid.inp b/regtests/ww3_tr1/input_bndin/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/ww3_grid.nml b/regtests/ww3_tr1/input_bndin/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/ww3_outp.inp b/regtests/ww3_tr1/input_bndin/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/ww3_shel.inp b/regtests/ww3_tr1/input_bndin/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_bndin/ww3_shel.nml b/regtests/ww3_tr1/input_bndin/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/RTD.depth b/regtests/ww3_tr1/input_std/RTD.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/RTD.mask b/regtests/ww3_tr1/input_std/RTD.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/namelists_RTD.nml b/regtests/ww3_tr1/input_std/namelists_RTD.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/points.list b/regtests/ww3_tr1/input_std/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/switch b/regtests/ww3_tr1/input_std/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/ww3_grid.inp b/regtests/ww3_tr1/input_std/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/ww3_grid.nml b/regtests/ww3_tr1/input_std/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/ww3_outp.inp b/regtests/ww3_tr1/input_std/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/ww3_shel.inp b/regtests/ww3_tr1/input_std/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_tr1/input_std/ww3_shel.nml b/regtests/ww3_tr1/input_std/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/info b/regtests/ww3_ts1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/HOMOGENEOUS.depth b/regtests/ww3_ts1/input/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/gx_outp.inp b/regtests/ww3_ts1/input/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/namelists_ST4_T475.nml b/regtests/ww3_ts1/input/namelists_ST4_T475.nml deleted file mode 100644 index e104247aa..000000000 --- a/regtests/ww3_ts1/input/namelists_ST4_T475.nml +++ /dev/null @@ -1,7 +0,0 @@ -&SIN4 BETAMAX = 1.75, SWELLF = 0.66, TAUWSHELTER = 0.3, - SWELLF3 = 0.022, SWELLF4 = 115000.0, SWELLF7 = 432000.00 / -&SDS4 FXFM3 = 2.5 / -&SIC2 IC2ROUGH = 0.001000, IC2VISC = 2.000, IC2DMAX =0.300 / -&SIS2 ISC1 =0.200E+00, IS2BREAK = T, IS2DUPDATE = F, IS2CREEPB = 0.200E+08 / - -END OF NAMELISTS diff --git a/regtests/ww3_ts1/input/namelists_ST4_T700.nml b/regtests/ww3_ts1/input/namelists_ST4_T700.nml old mode 100644 new mode 100755 index b47cc70d0..aa6ecdf70 --- a/regtests/ww3_ts1/input/namelists_ST4_T700.nml +++ b/regtests/ww3_ts1/input/namelists_ST4_T700.nml @@ -1,4 +1,4 @@ &SDS4 SDSBCHOICE=3, SDSC2 = -3.8, SDSBR = 0.005, - FXFM3 = 20., SDSFACMTF = 400., + SDSSTRAIN =0., SDSSTRAIN2 = 0., FXFM3 = 20., SDSFACMTF = 400., SDSCUM=0., SDSC5 =0. / END OF NAMELISTS diff --git a/regtests/ww3_ts1/input/namelists_ST4_T702.nml b/regtests/ww3_ts1/input/namelists_ST4_T702.nml deleted file mode 100644 index 444c02e29..000000000 --- a/regtests/ww3_ts1/input/namelists_ST4_T702.nml +++ /dev/null @@ -1,12 +0,0 @@ -&SIN4 BETAMAX = 1.7, SWELLF = 0.60, TAUWSHELTER = 0.2, - SWELLF3 = 0.022, SWELLF4 = 115000.0, SWELLF7 = 432000.00 / -&SDS4 SDSBCHOICE = 3, SDSC2 = -3.80, FXFM3 = 20.00, - SDSBR = 0.005, SDSBT = 0.0011, SDSCUM = 0.300, SDSC5 = 1.0, - SDSMWD = 0.00, SDSFACMTF = 400 / -&SNL1 NLPROP = 25000000.0 / -&SIC2 IC2ROUGH = 0.001000, IC2VISC = 2.000, IC2DMAX =0.300 / -&SIS2 ISC1 =0.200E+00, IS2BREAK = T, IS2DUPDATE = F, IS2CREEPB = 0.200E+08 / -&MISC ICEHINIT = 0.5, ICEHMIN = 0.1, CICE0 = 0.25, NOSW =6, - CICEN = 2.00, LICE = 40000., FLAGTR = 4, FACBERG = 0.2 , - WCOR1=21., WCOR2=0.5 / -END OF NAMELISTS diff --git a/regtests/ww3_ts1/input/namelists_ST4_T707.nml b/regtests/ww3_ts1/input/namelists_ST4_T707.nml deleted file mode 100644 index 16f81517d..000000000 --- a/regtests/ww3_ts1/input/namelists_ST4_T707.nml +++ /dev/null @@ -1,13 +0,0 @@ - &SNL1 IQTYPE = -2, GQMNF1 = 11, GQMNT1 = 6, GQMNQ_OM2 = 6, - TAILNL=-5.0, GQMTHRSAT=5E-5, GQMTHRCOU = 0.05, GQAMP1=1., - GQAMP2=0.0022, GQAMP3=1., GQAMP4=1.0 / - &SIN4 BETAMAX = 1.6, TAUWSHELTER = 0.0 / - &SDS4 SDSBCHOICE=3, SDSC2 = -2.3, SDSBR = 0.005, - FXFM3 = 20, SDSFACMTF = 400., - SDSMWD = 2., SDSCUM = 0.35, SDSNUW =0, SDSC5=1., SDSBRF1=0.5 / -&SIC2 IC2ROUGH = 0.001000, IC2VISC = 2.000, IC2DMAX =0.300 / -&SIS2 ISC1 =0.200E+00, IS2BREAK = T, IS2DUPDATE = F, IS2CREEPB = 0.200E+08 / -&MISC ICEHINIT = 0.5, ICEHMIN = 0.1, CICE0 = 0.25, NOSW =6, - CICEN = 2.00, LICE = 40000., FLAGTR = 4, FACBERG = 0.2 , - WCOR1=21., WCOR2=0.5 / -END OF NAMELISTS diff --git a/regtests/ww3_ts1/input/points.list b/regtests/ww3_ts1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch b/regtests/ww3_ts1/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST1 b/regtests/ww3_ts1/input/switch_ST1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST1_RWND b/regtests/ww3_ts1/input/switch_ST1_RWND old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST2 b/regtests/ww3_ts1/input/switch_ST2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST3 b/regtests/ww3_ts1/input/switch_ST3 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST4 b/regtests/ww3_ts1/input/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST4_GMD b/regtests/ww3_ts1/input/switch_ST4_GMD old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST4_TSA b/regtests/ww3_ts1/input/switch_ST4_TSA old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST4_WRT b/regtests/ww3_ts1/input/switch_ST4_WRT old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/switch_ST6 b/regtests/ww3_ts1/input/switch_ST6 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_grid.inp b/regtests/ww3_ts1/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_grid.nml b/regtests/ww3_ts1/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_grid_ST4_T475.nml b/regtests/ww3_ts1/input/ww3_grid_ST4_T475.nml deleted file mode 100644 index 7987e9528..000000000 --- a/regtests/ww3_ts1/input/ww3_grid_ST4_T475.nml +++ /dev/null @@ -1,225 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! -! -------------------------------------------------------------------- ! - -! -------------------------------------------------------------------- ! -! Define the spectrum parameterization via SPECTRUM_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! SPECTRUM%XFR = 0. ! frequency increment -! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) -! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) -! SPECTRUM%NTH = 0 ! number of direction bins -! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] -! -------------------------------------------------------------------- ! -&SPECTRUM_NML - SPECTRUM%XFR = 1.10 - SPECTRUM%FREQ1 = 0.0485 - SPECTRUM%NK = 36 - SPECTRUM%NTH = 24 -/ - -! -------------------------------------------------------------------- ! -! Define the run parameterization via RUN_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! RUN%FLDRY = F ! dry run (I/O only, no calculation) -! RUN%FLCX = F ! x-component of propagation -! RUN%FLCY = F ! y-component of propagation -! RUN%FLCTH = F ! direction shift -! RUN%FLCK = F ! wavenumber shift -! RUN%FLSOU = F ! source terms -! -------------------------------------------------------------------- ! -&RUN_NML - RUN%FLSOU = T -/ - -! -------------------------------------------------------------------- ! -! Define the timesteps parameterization via TIMESTEPS_NML namelist -! -! * It is highly recommended to set up time steps which are multiple -! between them. -! -! * The first time step to calculate is the maximum CFL time step -! which depend on the lowest frequency FREQ1 previously set up and the -! lowest spatial grid resolution in meters DXY. -! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km -! The formula for the CFL time is : -! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; -! DTXY ~= 90% Tcfl -! DTMAX ~= 3 * DTXY (maximum global time step limit) -! -! * The refraction time step depends on how strong can be the current velocities -! on your grid : -! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities -! DTKTH ~= DTMAX / 10 ! in case of strong current velocities -! -! * The source terms time step is usually defined between 5s and 60s. -! A common value is 10s. -! DTMIN ~= 10 -! -! * namelist must be terminated with / -! * definitions & defaults: -! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) -! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) -! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) -! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) -! -------------------------------------------------------------------- ! -&TIMESTEPS_NML - TIMESTEPS%DTMAX = 900. - TIMESTEPS%DTXY = 900. - TIMESTEPS%DTKTH = 900. - TIMESTEPS%DTMIN = 15. -/ - -! -------------------------------------------------------------------- ! -! Define the grid to preprocess via GRID_NML namelist -! -! * the tunable parameters for source terms, propagation schemes, and -! numerics are read using namelists. -! * Any namelist found in the folowing sections is temporarily written -! to param.scratch, and read from there if necessary. -! * The order of the namelists is immaterial. -! * Namelists not needed for the given switch settings will be skipped -! automatically -! -! * grid type can be : -! 'RECT' : rectilinear -! 'CURV' : curvilinear -! 'UNST' : unstructured (triangle-based) -! -! * coordinate system can be : -! 'SPHE' : Spherical (degrees) -! 'CART' : Cartesian (meters) -! -! * grid closure can only be applied in spherical coordinates -! -! * grid closure can be : -! 'NONE' : No closure is applied -! 'SMPL' : Simple grid closure. Grid is periodic in the -! : i-index and wraps at i=NX+1. In other words, -! : (NX+1,J) => (1,J). A grid with simple closure -! : may be rectilinear or curvilinear. -! 'TRPL' : Tripole grid closure : Grid is periodic in the -! : i-index and wraps at i=NX+1 and has closure at -! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) -! : and (I,NY+1) => (NX-I+1,NY). Tripole -! : grid closure requires that NX be even. A grid -! : with tripole closure must be curvilinear. -! -! * The coastline limit depth is the value which distinguish the sea -! points to the land points. All the points with depth values (ZBIN) -! greater than this limit (ZLIM) will be considered as excluded points -! and will never be wet points, even if the water level grows over. -! It can only overwrite the status of a sea point to a land point. -! The value must have a negative value under the mean sea level -! -! * The minimum water depth allowed to compute the model is the absolute -! depth value (DMIN) used in the model if the input depth is lower to -! avoid the model to blow up. -! -! * namelist must be terminated with / -! * definitions & defaults: -! GRID%NAME = 'unset' ! grid name (30 char) -! GRID%NML = 'namelists.nml' ! namelists filename -! GRID%TYPE = 'unset' ! grid type -! GRID%COORD = 'unset' ! coordinate system -! GRID%CLOS = 'unset' ! grid closure -! -! GRID%ZLIM = 0. ! coastline limit depth (m) -! GRID%DMIN = 0. ! abs. minimum water depth (m) -! -------------------------------------------------------------------- ! -&GRID_NML - GRID%NAME = 'HOMOGENEOUS SOURCE TERM TEST' - GRID%NML = '../input/namelists_ST4_T475.nml' - GRID%TYPE = 'RECT' - GRID%COORD = 'SPHE' - GRID%CLOS = 'NONE' - GRID%ZLIM = -5. - GRID%DMIN = 5.75 -/ - -! -------------------------------------------------------------------- ! -! Define the rectilinear grid type via RECT_NML namelist -! - only for RECT grids - -! -! * The minimum grid size is 3x3. -! -! * If the grid increments SX and SY are given in minutes of arc, the scaling -! factor SF must be set to 60. to provide an increment factor in degree. -! -! * If CSTRG='SMPL', then SX is forced to 360/NX. -! -! * value <= value_read / scale_fac -! -! * namelist must be terminated with / -! * definitions & defaults: -! RECT%NX = 0 ! number of points along x-axis -! RECT%NY = 0 ! number of points along y-axis -! -! RECT%SX = 0. ! grid increment along x-axis -! RECT%SY = 0. ! grid increment along y-axis -! RECT%SF = 1. ! scaling division factor for x-y axis -! -! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) -! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) -! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord -! -------------------------------------------------------------------- ! -&RECT_NML - RECT%NX = 3 - RECT%NY = 3 - RECT%SX = 1. - RECT%SY = 1. - RECT%SF = 1.E-2 - RECT%X0 = -1. - RECT%Y0 = -1. - RECT%SF0 = 1.E-2 -/ - -! -------------------------------------------------------------------- ! -! Define the depth to preprocess via DEPTH_NML namelist -! - for RECT and CURV grids - -! -! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 -! -! * The depth value must have negative values under the mean sea level -! -! * value <= value_read * scale_fac -! -! * IDLA : Layout indicator : -! 1 : Read line-by-line bottom to top. (default) -! 2 : Like 1, single read statement. -! 3 : Read line-by-line top to bottom. -! 4 : Like 3, single read statement. -! * IDFM : format indicator : -! 1 : Free format. (default) -! 2 : Fixed format. -! 3 : Unformatted. -! * FORMAT : element format to read : -! '(....)' : auto detected (default) -! '(f10.6)' : float type -! -! * Example : -! IDF SF IDLA IDFM FORMAT FILENAME -! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' -! -! * namelist must be terminated with / -! * definitions & defaults: -! DEPTH%SF = 1. ! scale factor -! DEPTH%FILENAME = 'unset' ! filename -! DEPTH%IDF = 50 ! file unit number -! DEPTH%IDLA = 1 ! layout indicator -! DEPTH%IDFM = 1 ! format indicator -! DEPTH%FORMAT = '(....)' ! formatted read format -! -------------------------------------------------------------------- ! -&DEPTH_NML - DEPTH%SF = -2500. - DEPTH%FILENAME = '../input/HOMOGENEOUS.depth' - DEPTH%IDLA = 3 -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input/ww3_grid_ST4_T700.nml b/regtests/ww3_ts1/input/ww3_grid_ST4_T700.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_grid_ST4_T702.nml b/regtests/ww3_ts1/input/ww3_grid_ST4_T702.nml deleted file mode 100644 index 48135e1d9..000000000 --- a/regtests/ww3_ts1/input/ww3_grid_ST4_T702.nml +++ /dev/null @@ -1,225 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! -! -------------------------------------------------------------------- ! - -! -------------------------------------------------------------------- ! -! Define the spectrum parameterization via SPECTRUM_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! SPECTRUM%XFR = 0. ! frequency increment -! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) -! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) -! SPECTRUM%NTH = 0 ! number of direction bins -! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] -! -------------------------------------------------------------------- ! -&SPECTRUM_NML - SPECTRUM%XFR = 1.10 - SPECTRUM%FREQ1 = 0.0485 - SPECTRUM%NK = 36 - SPECTRUM%NTH = 24 -/ - -! -------------------------------------------------------------------- ! -! Define the run parameterization via RUN_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! RUN%FLDRY = F ! dry run (I/O only, no calculation) -! RUN%FLCX = F ! x-component of propagation -! RUN%FLCY = F ! y-component of propagation -! RUN%FLCTH = F ! direction shift -! RUN%FLCK = F ! wavenumber shift -! RUN%FLSOU = F ! source terms -! -------------------------------------------------------------------- ! -&RUN_NML - RUN%FLSOU = T -/ - -! -------------------------------------------------------------------- ! -! Define the timesteps parameterization via TIMESTEPS_NML namelist -! -! * It is highly recommended to set up time steps which are multiple -! between them. -! -! * The first time step to calculate is the maximum CFL time step -! which depend on the lowest frequency FREQ1 previously set up and the -! lowest spatial grid resolution in meters DXY. -! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km -! The formula for the CFL time is : -! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; -! DTXY ~= 90% Tcfl -! DTMAX ~= 3 * DTXY (maximum global time step limit) -! -! * The refraction time step depends on how strong can be the current velocities -! on your grid : -! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities -! DTKTH ~= DTMAX / 10 ! in case of strong current velocities -! -! * The source terms time step is usually defined between 5s and 60s. -! A common value is 10s. -! DTMIN ~= 10 -! -! * namelist must be terminated with / -! * definitions & defaults: -! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) -! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) -! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) -! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) -! -------------------------------------------------------------------- ! -&TIMESTEPS_NML - TIMESTEPS%DTMAX = 900. - TIMESTEPS%DTXY = 900. - TIMESTEPS%DTKTH = 900. - TIMESTEPS%DTMIN = 15. -/ - -! -------------------------------------------------------------------- ! -! Define the grid to preprocess via GRID_NML namelist -! -! * the tunable parameters for source terms, propagation schemes, and -! numerics are read using namelists. -! * Any namelist found in the folowing sections is temporarily written -! to param.scratch, and read from there if necessary. -! * The order of the namelists is immaterial. -! * Namelists not needed for the given switch settings will be skipped -! automatically -! -! * grid type can be : -! 'RECT' : rectilinear -! 'CURV' : curvilinear -! 'UNST' : unstructured (triangle-based) -! -! * coordinate system can be : -! 'SPHE' : Spherical (degrees) -! 'CART' : Cartesian (meters) -! -! * grid closure can only be applied in spherical coordinates -! -! * grid closure can be : -! 'NONE' : No closure is applied -! 'SMPL' : Simple grid closure. Grid is periodic in the -! : i-index and wraps at i=NX+1. In other words, -! : (NX+1,J) => (1,J). A grid with simple closure -! : may be rectilinear or curvilinear. -! 'TRPL' : Tripole grid closure : Grid is periodic in the -! : i-index and wraps at i=NX+1 and has closure at -! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) -! : and (I,NY+1) => (NX-I+1,NY). Tripole -! : grid closure requires that NX be even. A grid -! : with tripole closure must be curvilinear. -! -! * The coastline limit depth is the value which distinguish the sea -! points to the land points. All the points with depth values (ZBIN) -! greater than this limit (ZLIM) will be considered as excluded points -! and will never be wet points, even if the water level grows over. -! It can only overwrite the status of a sea point to a land point. -! The value must have a negative value under the mean sea level -! -! * The minimum water depth allowed to compute the model is the absolute -! depth value (DMIN) used in the model if the input depth is lower to -! avoid the model to blow up. -! -! * namelist must be terminated with / -! * definitions & defaults: -! GRID%NAME = 'unset' ! grid name (30 char) -! GRID%NML = 'namelists.nml' ! namelists filename -! GRID%TYPE = 'unset' ! grid type -! GRID%COORD = 'unset' ! coordinate system -! GRID%CLOS = 'unset' ! grid closure -! -! GRID%ZLIM = 0. ! coastline limit depth (m) -! GRID%DMIN = 0. ! abs. minimum water depth (m) -! -------------------------------------------------------------------- ! -&GRID_NML - GRID%NAME = 'HOMOGENEOUS SOURCE TERM TEST' - GRID%NML = '../input/namelists_ST4_T702.nml' - GRID%TYPE = 'RECT' - GRID%COORD = 'SPHE' - GRID%CLOS = 'NONE' - GRID%ZLIM = -5. - GRID%DMIN = 5.75 -/ - -! -------------------------------------------------------------------- ! -! Define the rectilinear grid type via RECT_NML namelist -! - only for RECT grids - -! -! * The minimum grid size is 3x3. -! -! * If the grid increments SX and SY are given in minutes of arc, the scaling -! factor SF must be set to 60. to provide an increment factor in degree. -! -! * If CSTRG='SMPL', then SX is forced to 360/NX. -! -! * value <= value_read / scale_fac -! -! * namelist must be terminated with / -! * definitions & defaults: -! RECT%NX = 0 ! number of points along x-axis -! RECT%NY = 0 ! number of points along y-axis -! -! RECT%SX = 0. ! grid increment along x-axis -! RECT%SY = 0. ! grid increment along y-axis -! RECT%SF = 1. ! scaling division factor for x-y axis -! -! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) -! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) -! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord -! -------------------------------------------------------------------- ! -&RECT_NML - RECT%NX = 3 - RECT%NY = 3 - RECT%SX = 1. - RECT%SY = 1. - RECT%SF = 1.E-2 - RECT%X0 = -1. - RECT%Y0 = -1. - RECT%SF0 = 1.E-2 -/ - -! -------------------------------------------------------------------- ! -! Define the depth to preprocess via DEPTH_NML namelist -! - for RECT and CURV grids - -! -! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 -! -! * The depth value must have negative values under the mean sea level -! -! * value <= value_read * scale_fac -! -! * IDLA : Layout indicator : -! 1 : Read line-by-line bottom to top. (default) -! 2 : Like 1, single read statement. -! 3 : Read line-by-line top to bottom. -! 4 : Like 3, single read statement. -! * IDFM : format indicator : -! 1 : Free format. (default) -! 2 : Fixed format. -! 3 : Unformatted. -! * FORMAT : element format to read : -! '(....)' : auto detected (default) -! '(f10.6)' : float type -! -! * Example : -! IDF SF IDLA IDFM FORMAT FILENAME -! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' -! -! * namelist must be terminated with / -! * definitions & defaults: -! DEPTH%SF = 1. ! scale factor -! DEPTH%FILENAME = 'unset' ! filename -! DEPTH%IDF = 50 ! file unit number -! DEPTH%IDLA = 1 ! layout indicator -! DEPTH%IDFM = 1 ! format indicator -! DEPTH%FORMAT = '(....)' ! formatted read format -! -------------------------------------------------------------------- ! -&DEPTH_NML - DEPTH%SF = -2500. - DEPTH%FILENAME = '../input/HOMOGENEOUS.depth' - DEPTH%IDLA = 3 -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input/ww3_grid_ST4_T707.nml b/regtests/ww3_ts1/input/ww3_grid_ST4_T707.nml deleted file mode 100644 index e6ef84a56..000000000 --- a/regtests/ww3_ts1/input/ww3_grid_ST4_T707.nml +++ /dev/null @@ -1,225 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! -! -------------------------------------------------------------------- ! - -! -------------------------------------------------------------------- ! -! Define the spectrum parameterization via SPECTRUM_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! SPECTRUM%XFR = 0. ! frequency increment -! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) -! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) -! SPECTRUM%NTH = 0 ! number of direction bins -! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] -! -------------------------------------------------------------------- ! -&SPECTRUM_NML - SPECTRUM%XFR = 1.10 - SPECTRUM%FREQ1 = 0.0485 - SPECTRUM%NK = 36 - SPECTRUM%NTH = 24 -/ - -! -------------------------------------------------------------------- ! -! Define the run parameterization via RUN_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! RUN%FLDRY = F ! dry run (I/O only, no calculation) -! RUN%FLCX = F ! x-component of propagation -! RUN%FLCY = F ! y-component of propagation -! RUN%FLCTH = F ! direction shift -! RUN%FLCK = F ! wavenumber shift -! RUN%FLSOU = F ! source terms -! -------------------------------------------------------------------- ! -&RUN_NML - RUN%FLSOU = T -/ - -! -------------------------------------------------------------------- ! -! Define the timesteps parameterization via TIMESTEPS_NML namelist -! -! * It is highly recommended to set up time steps which are multiple -! between them. -! -! * The first time step to calculate is the maximum CFL time step -! which depend on the lowest frequency FREQ1 previously set up and the -! lowest spatial grid resolution in meters DXY. -! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km -! The formula for the CFL time is : -! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; -! DTXY ~= 90% Tcfl -! DTMAX ~= 3 * DTXY (maximum global time step limit) -! -! * The refraction time step depends on how strong can be the current velocities -! on your grid : -! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities -! DTKTH ~= DTMAX / 10 ! in case of strong current velocities -! -! * The source terms time step is usually defined between 5s and 60s. -! A common value is 10s. -! DTMIN ~= 10 -! -! * namelist must be terminated with / -! * definitions & defaults: -! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) -! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) -! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) -! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) -! -------------------------------------------------------------------- ! -&TIMESTEPS_NML - TIMESTEPS%DTMAX = 900. - TIMESTEPS%DTXY = 900. - TIMESTEPS%DTKTH = 900. - TIMESTEPS%DTMIN = 15. -/ - -! -------------------------------------------------------------------- ! -! Define the grid to preprocess via GRID_NML namelist -! -! * the tunable parameters for source terms, propagation schemes, and -! numerics are read using namelists. -! * Any namelist found in the folowing sections is temporarily written -! to param.scratch, and read from there if necessary. -! * The order of the namelists is immaterial. -! * Namelists not needed for the given switch settings will be skipped -! automatically -! -! * grid type can be : -! 'RECT' : rectilinear -! 'CURV' : curvilinear -! 'UNST' : unstructured (triangle-based) -! -! * coordinate system can be : -! 'SPHE' : Spherical (degrees) -! 'CART' : Cartesian (meters) -! -! * grid closure can only be applied in spherical coordinates -! -! * grid closure can be : -! 'NONE' : No closure is applied -! 'SMPL' : Simple grid closure. Grid is periodic in the -! : i-index and wraps at i=NX+1. In other words, -! : (NX+1,J) => (1,J). A grid with simple closure -! : may be rectilinear or curvilinear. -! 'TRPL' : Tripole grid closure : Grid is periodic in the -! : i-index and wraps at i=NX+1 and has closure at -! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) -! : and (I,NY+1) => (NX-I+1,NY). Tripole -! : grid closure requires that NX be even. A grid -! : with tripole closure must be curvilinear. -! -! * The coastline limit depth is the value which distinguish the sea -! points to the land points. All the points with depth values (ZBIN) -! greater than this limit (ZLIM) will be considered as excluded points -! and will never be wet points, even if the water level grows over. -! It can only overwrite the status of a sea point to a land point. -! The value must have a negative value under the mean sea level -! -! * The minimum water depth allowed to compute the model is the absolute -! depth value (DMIN) used in the model if the input depth is lower to -! avoid the model to blow up. -! -! * namelist must be terminated with / -! * definitions & defaults: -! GRID%NAME = 'unset' ! grid name (30 char) -! GRID%NML = 'namelists.nml' ! namelists filename -! GRID%TYPE = 'unset' ! grid type -! GRID%COORD = 'unset' ! coordinate system -! GRID%CLOS = 'unset' ! grid closure -! -! GRID%ZLIM = 0. ! coastline limit depth (m) -! GRID%DMIN = 0. ! abs. minimum water depth (m) -! -------------------------------------------------------------------- ! -&GRID_NML - GRID%NAME = 'HOMOGENEOUS SOURCE TERM TEST' - GRID%NML = '../input/namelists_ST4_T707.nml' - GRID%TYPE = 'RECT' - GRID%COORD = 'SPHE' - GRID%CLOS = 'NONE' - GRID%ZLIM = -5. - GRID%DMIN = 5.75 -/ - -! -------------------------------------------------------------------- ! -! Define the rectilinear grid type via RECT_NML namelist -! - only for RECT grids - -! -! * The minimum grid size is 3x3. -! -! * If the grid increments SX and SY are given in minutes of arc, the scaling -! factor SF must be set to 60. to provide an increment factor in degree. -! -! * If CSTRG='SMPL', then SX is forced to 360/NX. -! -! * value <= value_read / scale_fac -! -! * namelist must be terminated with / -! * definitions & defaults: -! RECT%NX = 0 ! number of points along x-axis -! RECT%NY = 0 ! number of points along y-axis -! -! RECT%SX = 0. ! grid increment along x-axis -! RECT%SY = 0. ! grid increment along y-axis -! RECT%SF = 1. ! scaling division factor for x-y axis -! -! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) -! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) -! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord -! -------------------------------------------------------------------- ! -&RECT_NML - RECT%NX = 3 - RECT%NY = 3 - RECT%SX = 1. - RECT%SY = 1. - RECT%SF = 1.E-2 - RECT%X0 = -1. - RECT%Y0 = -1. - RECT%SF0 = 1.E-2 -/ - -! -------------------------------------------------------------------- ! -! Define the depth to preprocess via DEPTH_NML namelist -! - for RECT and CURV grids - -! -! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 -! -! * The depth value must have negative values under the mean sea level -! -! * value <= value_read * scale_fac -! -! * IDLA : Layout indicator : -! 1 : Read line-by-line bottom to top. (default) -! 2 : Like 1, single read statement. -! 3 : Read line-by-line top to bottom. -! 4 : Like 3, single read statement. -! * IDFM : format indicator : -! 1 : Free format. (default) -! 2 : Fixed format. -! 3 : Unformatted. -! * FORMAT : element format to read : -! '(....)' : auto detected (default) -! '(f10.6)' : float type -! -! * Example : -! IDF SF IDLA IDFM FORMAT FILENAME -! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' -! -! * namelist must be terminated with / -! * definitions & defaults: -! DEPTH%SF = 1. ! scale factor -! DEPTH%FILENAME = 'unset' ! filename -! DEPTH%IDF = 50 ! file unit number -! DEPTH%IDLA = 1 ! layout indicator -! DEPTH%IDFM = 1 ! format indicator -! DEPTH%FORMAT = '(....)' ! formatted read format -! -------------------------------------------------------------------- ! -&DEPTH_NML - DEPTH%SF = -2500. - DEPTH%FILENAME = '../input/HOMOGENEOUS.depth' - DEPTH%IDLA = 3 -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input/ww3_ounf.inp b/regtests/ww3_ts1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_ounf.nml b/regtests/ww3_ts1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_ounp_spec.inp b/regtests/ww3_ts1/input/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_ounp_spec.nml b/regtests/ww3_ts1/input/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_outp_spec.inp b/regtests/ww3_ts1/input/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_outp_tab50.inp b/regtests/ww3_ts1/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_shel.inp b/regtests/ww3_ts1/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_shel.nml b/regtests/ww3_ts1/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input/ww3_strt.inp b/regtests/ww3_ts1/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_10ms/namelists_ST4_T707.nml b/regtests/ww3_ts1/input_10ms/namelists_ST4_T707.nml deleted file mode 100644 index 0458cd775..000000000 --- a/regtests/ww3_ts1/input_10ms/namelists_ST4_T707.nml +++ /dev/null @@ -1,14 +0,0 @@ - &SNL1 IQTYPE = -2, GQMNF1 = 11, GQMNT1 = 6, GQMNQ_OM2 = 6, - TAILNL=-5.0, GQMTHRSAT=5E-5, GQMTHRCOU = 0.05, GQAMP1=1., - GQAMP2=0.0022, GQAMP3=1., GQAMP4=1.0 / - &SIN4 BETAMAX = 1.6, TAUWSHELTER = 0.0 / - &SDS4 SDSBCHOICE=3, SDSC2 = -2.3, SDSBR = 0.005, - FXFM3 = 20, SDSFACMTF = 400., - SDSMWD = 2., SDSCUM = 0.35, SDSNUW =0, SDSC5=1., SDSBRF1=0.5 / -&SIC2 IC2ROUGH = 0.001000, IC2VISC = 2.000, IC2DMAX =0.300 / -&SIS2 ISC1 =0.200E+00, IS2BREAK = T, IS2DUPDATE = F, IS2CREEPB = 0.200E+08 / -! DO NOT FORGET TO ADD FLAGTR = 4 for real life runs ... -&MISC ICEHINIT = 0.5, ICEHMIN = 0.1, CICE0 = 0.25, NOSW =6, - CICEN = 2.00, LICE = 40000., FACBERG = 0.2 , - WCOR1=21., WCOR2=0.5 / -END OF NAMELISTS diff --git a/regtests/ww3_ts1/input_10ms/namelists_ST4_T713.nml b/regtests/ww3_ts1/input_10ms/namelists_ST4_T713.nml deleted file mode 100644 index 878604430..000000000 --- a/regtests/ww3_ts1/input_10ms/namelists_ST4_T713.nml +++ /dev/null @@ -1,14 +0,0 @@ - &SNL1 IQTYPE = -2, GQMNF1 = 11, GQMNT1 = 6, GQMNQ_OM2 = 6, - TAILNL=-5.0, GQMTHRSAT=5E-5, GQMTHRCOU = 0.05, GQAMP1=1., - GQAMP2=0.0022, GQAMP3=2. / -&SIN4 BETAMAX = 1.1, TAUWSHELTER = 0.0 / -&SDS4 SDSBCHOICE=3, SDSC2 = -2.5, SDSBR = 0.005, - SDSSTRAIN2 =1.,SDSCUMP=1., FXFM3 = 20, SDSFACMTF = 200., - SDSMWD = 0.9, SDSCUM = 0.3, SDSNUW =0, SDSC5=0.5, SDSBRF1=0.5 / -&SIC2 IC2ROUGH = 0.001000, IC2VISC = 2.000, IC2DMAX =0.300 / -&SIS2 ISC1 =0.200E+00, IS2BREAK = T, IS2DUPDATE = F, IS2CREEPB = 0.200E+08 / -! DO NOT FORGET TO ADD FLAGTR = 4 for real life runs ... -&MISC ICEHINIT = 0.5, ICEHMIN = 0.1, CICE0 = 0.25, NOSW =6, - CICEN = 2.00, LICE = 40000., FACBERG = 0.2 , - WCOR1=21., WCOR2=0.5 / -END OF NAMELISTS diff --git a/regtests/ww3_ts1/input_10ms/points.list b/regtests/ww3_ts1/input_10ms/points.list deleted file mode 100644 index 5ad8fde50..000000000 --- a/regtests/ww3_ts1/input_10ms/points.list +++ /dev/null @@ -1 +0,0 @@ -0.0 0.0 'The_point' diff --git a/regtests/ww3_ts1/input_10ms/switch b/regtests/ww3_ts1/input_10ms/switch deleted file mode 100644 index c3b8938ee..000000000 --- a/regtests/ww3_ts1/input_10ms/switch +++ /dev/null @@ -1 +0,0 @@ -NOGRB SHRD PR0 FLX0 LN1 ST4 NL1 BT1 DB1 TR0 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 diff --git a/regtests/ww3_ts1/input_10ms/switch_ST4 b/regtests/ww3_ts1/input_10ms/switch_ST4 deleted file mode 100644 index c3b8938ee..000000000 --- a/regtests/ww3_ts1/input_10ms/switch_ST4 +++ /dev/null @@ -1 +0,0 @@ -NOGRB SHRD PR0 FLX0 LN1 ST4 NL1 BT1 DB1 TR0 BS0 IC0 IS0 REF0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 diff --git a/regtests/ww3_ts1/input_10ms/ww3_grid_ST4_T707.nml b/regtests/ww3_ts1/input_10ms/ww3_grid_ST4_T707.nml deleted file mode 100644 index 5378ebec3..000000000 --- a/regtests/ww3_ts1/input_10ms/ww3_grid_ST4_T707.nml +++ /dev/null @@ -1,225 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! -! -------------------------------------------------------------------- ! - -! -------------------------------------------------------------------- ! -! Define the spectrum parameterization via SPECTRUM_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! SPECTRUM%XFR = 0. ! frequency increment -! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) -! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) -! SPECTRUM%NTH = 0 ! number of direction bins -! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] -! -------------------------------------------------------------------- ! -&SPECTRUM_NML - SPECTRUM%XFR = 1.10 - SPECTRUM%FREQ1 = 0.034 - SPECTRUM%NK = 36 - SPECTRUM%NTH = 36 -/ - -! -------------------------------------------------------------------- ! -! Define the run parameterization via RUN_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! RUN%FLDRY = F ! dry run (I/O only, no calculation) -! RUN%FLCX = F ! x-component of propagation -! RUN%FLCY = F ! y-component of propagation -! RUN%FLCTH = F ! direction shift -! RUN%FLCK = F ! wavenumber shift -! RUN%FLSOU = F ! source terms -! -------------------------------------------------------------------- ! -&RUN_NML - RUN%FLSOU = T -/ - -! -------------------------------------------------------------------- ! -! Define the timesteps parameterization via TIMESTEPS_NML namelist -! -! * It is highly recommended to set up time steps which are multiple -! between them. -! -! * The first time step to calculate is the maximum CFL time step -! which depend on the lowest frequency FREQ1 previously set up and the -! lowest spatial grid resolution in meters DXY. -! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km -! The formula for the CFL time is : -! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; -! DTXY ~= 90% Tcfl -! DTMAX ~= 3 * DTXY (maximum global time step limit) -! -! * The refraction time step depends on how strong can be the current velocities -! on your grid : -! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities -! DTKTH ~= DTMAX / 10 ! in case of strong current velocities -! -! * The source terms time step is usually defined between 5s and 60s. -! A common value is 10s. -! DTMIN = 10 -! -! * namelist must be terminated with / -! * definitions & defaults: -! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) -! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) -! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) -! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) -! -------------------------------------------------------------------- ! -&TIMESTEPS_NML - TIMESTEPS%DTMAX = 900. - TIMESTEPS%DTXY = 900. - TIMESTEPS%DTKTH = 900. - TIMESTEPS%DTMIN = 5. -/ - -! -------------------------------------------------------------------- ! -! Define the grid to preprocess via GRID_NML namelist -! -! * the tunable parameters for source terms, propagation schemes, and -! numerics are read using namelists. -! * Any namelist found in the folowing sections is temporarily written -! to param.scratch, and read from there if necessary. -! * The order of the namelists is immaterial. -! * Namelists not needed for the given switch settings will be skipped -! automatically -! -! * grid type can be : -! 'RECT' : rectilinear -! 'CURV' : curvilinear -! 'UNST' : unstructured (triangle-based) -! -! * coordinate system can be : -! 'SPHE' : Spherical (degrees) -! 'CART' : Cartesian (meters) -! -! * grid closure can only be applied in spherical coordinates -! -! * grid closure can be : -! 'NONE' : No closure is applied -! 'SMPL' : Simple grid closure. Grid is periodic in the -! : i-index and wraps at i=NX+1. In other words, -! : (NX+1,J) => (1,J). A grid with simple closure -! : may be rectilinear or curvilinear. -! 'TRPL' : Tripole grid closure : Grid is periodic in the -! : i-index and wraps at i=NX+1 and has closure at -! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) -! : and (I,NY+1) => (NX-I+1,NY). Tripole -! : grid closure requires that NX be even. A grid -! : with tripole closure must be curvilinear. -! -! * The coastline limit depth is the value which distinguish the sea -! points to the land points. All the points with depth values (ZBIN) -! greater than this limit (ZLIM) will be considered as excluded points -! and will never be wet points, even if the water level grows over. -! It can only overwrite the status of a sea point to a land point. -! The value must have a negative value under the mean sea level -! -! * The minimum water depth allowed to compute the model is the absolute -! depth value (DMIN) used in the model if the input depth is lower to -! avoid the model to blow up. -! -! * namelist must be terminated with / -! * definitions & defaults: -! GRID%NAME = 'unset' ! grid name (30 char) -! GRID%NML = 'namelists.nml' ! namelists filename -! GRID%TYPE = 'unset' ! grid type -! GRID%COORD = 'unset' ! coordinate system -! GRID%CLOS = 'unset' ! grid closure -! -! GRID%ZLIM = 0. ! coastline limit depth (m) -! GRID%DMIN = 0. ! abs. minimum water depth (m) -! -------------------------------------------------------------------- ! -&GRID_NML - GRID%NAME = 'HOMOGENEOUS SOURCE TERM TEST' - GRID%NML = '../input_10ms/namelists_ST4_T707.nml' - GRID%TYPE = 'RECT' - GRID%COORD = 'SPHE' - GRID%CLOS = 'NONE' - GRID%ZLIM = -5. - GRID%DMIN = 5.75 -/ - -! -------------------------------------------------------------------- ! -! Define the rectilinear grid type via RECT_NML namelist -! - only for RECT grids - -! -! * The minimum grid size is 3x3. -! -! * If the grid increments SX and SY are given in minutes of arc, the scaling -! factor SF must be set to 60. to provide an increment factor in degree. -! -! * If CSTRG='SMPL', then SX is forced to 360/NX. -! -! * value <= value_read / scale_fac -! -! * namelist must be terminated with / -! * definitions & defaults: -! RECT%NX = 0 ! number of points along x-axis -! RECT%NY = 0 ! number of points along y-axis -! -! RECT%SX = 0. ! grid increment along x-axis -! RECT%SY = 0. ! grid increment along y-axis -! RECT%SF = 1. ! scaling division factor for x-y axis -! -! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) -! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) -! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord -! -------------------------------------------------------------------- ! -&RECT_NML - RECT%NX = 3 - RECT%NY = 3 - RECT%SX = 1. - RECT%SY = 1. - RECT%SF = 1.E-2 - RECT%X0 = -1. - RECT%Y0 = -1. - RECT%SF0 = 1.E-2 -/ - -! -------------------------------------------------------------------- ! -! Define the depth to preprocess via DEPTH_NML namelist -! - for RECT and CURV grids - -! -! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 -! -! * The depth value must have negative values under the mean sea level -! -! * value <= value_read * scale_fac -! -! * IDLA : Layout indicator : -! 1 : Read line-by-line bottom to top. (default) -! 2 : Like 1, single read statement. -! 3 : Read line-by-line top to bottom. -! 4 : Like 3, single read statement. -! * IDFM : format indicator : -! 1 : Free format. (default) -! 2 : Fixed format. -! 3 : Unformatted. -! * FORMAT : element format to read : -! '(....)' : auto detected (default) -! '(f10.6)' : float type -! -! * Example : -! IDF SF IDLA IDFM FORMAT FILENAME -! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' -! -! * namelist must be terminated with / -! * definitions & defaults: -! DEPTH%SF = 1. ! scale factor -! DEPTH%FILENAME = 'unset' ! filename -! DEPTH%IDF = 50 ! file unit number -! DEPTH%IDLA = 1 ! layout indicator -! DEPTH%IDFM = 1 ! format indicator -! DEPTH%FORMAT = '(....)' ! formatted read format -! -------------------------------------------------------------------- ! -&DEPTH_NML - DEPTH%SF = -2500. - DEPTH%FILENAME = '../input/HOMOGENEOUS.depth' - DEPTH%IDLA = 3 -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input_10ms/ww3_grid_ST4_T713.nml b/regtests/ww3_ts1/input_10ms/ww3_grid_ST4_T713.nml deleted file mode 100644 index 3efd65adf..000000000 --- a/regtests/ww3_ts1/input_10ms/ww3_grid_ST4_T713.nml +++ /dev/null @@ -1,225 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! -! -------------------------------------------------------------------- ! - -! -------------------------------------------------------------------- ! -! Define the spectrum parameterization via SPECTRUM_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! SPECTRUM%XFR = 0. ! frequency increment -! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) -! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) -! SPECTRUM%NTH = 0 ! number of direction bins -! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] -! -------------------------------------------------------------------- ! -&SPECTRUM_NML - SPECTRUM%XFR = 1.10 - SPECTRUM%FREQ1 = 0.034 - SPECTRUM%NK = 36 - SPECTRUM%NTH = 36 -/ - -! -------------------------------------------------------------------- ! -! Define the run parameterization via RUN_NML namelist -! -! * namelist must be terminated with / -! * definitions & defaults: -! RUN%FLDRY = F ! dry run (I/O only, no calculation) -! RUN%FLCX = F ! x-component of propagation -! RUN%FLCY = F ! y-component of propagation -! RUN%FLCTH = F ! direction shift -! RUN%FLCK = F ! wavenumber shift -! RUN%FLSOU = F ! source terms -! -------------------------------------------------------------------- ! -&RUN_NML - RUN%FLSOU = T -/ - -! -------------------------------------------------------------------- ! -! Define the timesteps parameterization via TIMESTEPS_NML namelist -! -! * It is highly recommended to set up time steps which are multiple -! between them. -! -! * The first time step to calculate is the maximum CFL time step -! which depend on the lowest frequency FREQ1 previously set up and the -! lowest spatial grid resolution in meters DXY. -! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km -! The formula for the CFL time is : -! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; -! DTXY ~= 90% Tcfl -! DTMAX ~= 3 * DTXY (maximum global time step limit) -! -! * The refraction time step depends on how strong can be the current velocities -! on your grid : -! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities -! DTKTH ~= DTMAX / 10 ! in case of strong current velocities -! -! * The source terms time step is usually defined between 5s and 60s. -! A common value is 10s. -! DTMIN = 10 -! -! * namelist must be terminated with / -! * definitions & defaults: -! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) -! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) -! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) -! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) -! -------------------------------------------------------------------- ! -&TIMESTEPS_NML - TIMESTEPS%DTMAX = 900. - TIMESTEPS%DTXY = 900. - TIMESTEPS%DTKTH = 900. - TIMESTEPS%DTMIN = 5. -/ - -! -------------------------------------------------------------------- ! -! Define the grid to preprocess via GRID_NML namelist -! -! * the tunable parameters for source terms, propagation schemes, and -! numerics are read using namelists. -! * Any namelist found in the folowing sections is temporarily written -! to param.scratch, and read from there if necessary. -! * The order of the namelists is immaterial. -! * Namelists not needed for the given switch settings will be skipped -! automatically -! -! * grid type can be : -! 'RECT' : rectilinear -! 'CURV' : curvilinear -! 'UNST' : unstructured (triangle-based) -! -! * coordinate system can be : -! 'SPHE' : Spherical (degrees) -! 'CART' : Cartesian (meters) -! -! * grid closure can only be applied in spherical coordinates -! -! * grid closure can be : -! 'NONE' : No closure is applied -! 'SMPL' : Simple grid closure. Grid is periodic in the -! : i-index and wraps at i=NX+1. In other words, -! : (NX+1,J) => (1,J). A grid with simple closure -! : may be rectilinear or curvilinear. -! 'TRPL' : Tripole grid closure : Grid is periodic in the -! : i-index and wraps at i=NX+1 and has closure at -! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) -! : and (I,NY+1) => (NX-I+1,NY). Tripole -! : grid closure requires that NX be even. A grid -! : with tripole closure must be curvilinear. -! -! * The coastline limit depth is the value which distinguish the sea -! points to the land points. All the points with depth values (ZBIN) -! greater than this limit (ZLIM) will be considered as excluded points -! and will never be wet points, even if the water level grows over. -! It can only overwrite the status of a sea point to a land point. -! The value must have a negative value under the mean sea level -! -! * The minimum water depth allowed to compute the model is the absolute -! depth value (DMIN) used in the model if the input depth is lower to -! avoid the model to blow up. -! -! * namelist must be terminated with / -! * definitions & defaults: -! GRID%NAME = 'unset' ! grid name (30 char) -! GRID%NML = 'namelists.nml' ! namelists filename -! GRID%TYPE = 'unset' ! grid type -! GRID%COORD = 'unset' ! coordinate system -! GRID%CLOS = 'unset' ! grid closure -! -! GRID%ZLIM = 0. ! coastline limit depth (m) -! GRID%DMIN = 0. ! abs. minimum water depth (m) -! -------------------------------------------------------------------- ! -&GRID_NML - GRID%NAME = 'HOMOGENEOUS SOURCE TERM TEST' - GRID%NML = '../input_10ms/namelists_ST4_T713.nml' - GRID%TYPE = 'RECT' - GRID%COORD = 'SPHE' - GRID%CLOS = 'NONE' - GRID%ZLIM = -5. - GRID%DMIN = 5.75 -/ - -! -------------------------------------------------------------------- ! -! Define the rectilinear grid type via RECT_NML namelist -! - only for RECT grids - -! -! * The minimum grid size is 3x3. -! -! * If the grid increments SX and SY are given in minutes of arc, the scaling -! factor SF must be set to 60. to provide an increment factor in degree. -! -! * If CSTRG='SMPL', then SX is forced to 360/NX. -! -! * value <= value_read / scale_fac -! -! * namelist must be terminated with / -! * definitions & defaults: -! RECT%NX = 0 ! number of points along x-axis -! RECT%NY = 0 ! number of points along y-axis -! -! RECT%SX = 0. ! grid increment along x-axis -! RECT%SY = 0. ! grid increment along y-axis -! RECT%SF = 1. ! scaling division factor for x-y axis -! -! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) -! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) -! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord -! -------------------------------------------------------------------- ! -&RECT_NML - RECT%NX = 3 - RECT%NY = 3 - RECT%SX = 1. - RECT%SY = 1. - RECT%SF = 1.E-2 - RECT%X0 = -1. - RECT%Y0 = -1. - RECT%SF0 = 1.E-2 -/ - -! -------------------------------------------------------------------- ! -! Define the depth to preprocess via DEPTH_NML namelist -! - for RECT and CURV grids - -! -! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 -! -! * The depth value must have negative values under the mean sea level -! -! * value <= value_read * scale_fac -! -! * IDLA : Layout indicator : -! 1 : Read line-by-line bottom to top. (default) -! 2 : Like 1, single read statement. -! 3 : Read line-by-line top to bottom. -! 4 : Like 3, single read statement. -! * IDFM : format indicator : -! 1 : Free format. (default) -! 2 : Fixed format. -! 3 : Unformatted. -! * FORMAT : element format to read : -! '(....)' : auto detected (default) -! '(f10.6)' : float type -! -! * Example : -! IDF SF IDLA IDFM FORMAT FILENAME -! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' -! -! * namelist must be terminated with / -! * definitions & defaults: -! DEPTH%SF = 1. ! scale factor -! DEPTH%FILENAME = 'unset' ! filename -! DEPTH%IDF = 50 ! file unit number -! DEPTH%IDLA = 1 ! layout indicator -! DEPTH%IDFM = 1 ! format indicator -! DEPTH%FORMAT = '(....)' ! formatted read format -! -------------------------------------------------------------------- ! -&DEPTH_NML - DEPTH%SF = -2500. - DEPTH%FILENAME = '../input/HOMOGENEOUS.depth' - DEPTH%IDLA = 3 -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input_10ms/ww3_ounf.nml b/regtests/ww3_ts1/input_10ms/ww3_ounf.nml deleted file mode 100644 index 716f1df4b..000000000 --- a/regtests/ww3_ts1/input_10ms/ww3_ounf.nml +++ /dev/null @@ -1,29 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! -! -------------------------------------------------------------------- ! - -! -------------------------------------------------------------------- ! -! Define the output fields to postprocess via FIELD_NML namelist -! -------------------------------------------------------------------- ! -&FIELD_NML - FIELD%TIMESTART = '20000101 000000' - FIELD%TIMESTRIDE = '10' - FIELD%TIMECOUNT = '8000' - FIELD%LIST = 'DPT QP QKK WND ICE HS MSS MSD FAW WCC WCF WCH WCM FOC TAW CHA UST' - FIELD%PARTITION = '0 1 2' - FIELD%TYPE = 4 -/ - -! -------------------------------------------------------------------- ! -! Define the content of the output file via FILE_NML namelist -! -------------------------------------------------------------------- ! -&FILE_NML - FILE%IX0 = 2 - FILE%IXN = 2 - FILE%IY0 = 2 - FILE%IYN = 2 -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input_10ms/ww3_ounp_spec.nml b/regtests/ww3_ts1/input_10ms/ww3_ounp_spec.nml deleted file mode 100644 index 34bac9764..000000000 --- a/regtests/ww3_ts1/input_10ms/ww3_ounp_spec.nml +++ /dev/null @@ -1,48 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III ww3_ounp.nml - Point output post-processing ! -! -------------------------------------------------------------------- ! - -! -------------------------------------------------------------------- ! -! Define the output fields to postprocess via POINT_NML namelist -! -------------------------------------------------------------------- ! -&POINT_NML - POINT%TIMESTART = '20000101 000000' - POINT%TIMESTRIDE = '1800.' - POINT%TIMECOUNT = '1000' - POINT%TIMESPLIT = 4 - POINT%BUFFER = 100 - POINT%TYPE = 3 -/ - -! -------------------------------------------------------------------- ! -! Define the content of the output file via FILE_NML namelist -! -------------------------------------------------------------------- ! -&FILE_NML -/ - -! -------------------------------------------------------------------- ! -! Define the type 0, inventory of file -! -------------------------------------------------------------------- ! - - -! -------------------------------------------------------------------- ! -! Define the type 1, spectra via SPECTRA_NML namelist -! -------------------------------------------------------------------- ! -&SPECTRA_NML -/ - -! -------------------------------------------------------------------- ! -! Define the type 2, mean parameter via PARAM_NML namelist -! -------------------------------------------------------------------- ! -&PARAM_NML -/ - -! -------------------------------------------------------------------- ! -! Define the type 3, source terms via SOURCE_NML namelist -! -------------------------------------------------------------------- ! -&SOURCE_NML -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input_10ms/ww3_shel.nml b/regtests/ww3_ts1/input_10ms/ww3_shel.nml deleted file mode 100644 index d83106ed1..000000000 --- a/regtests/ww3_ts1/input_10ms/ww3_shel.nml +++ /dev/null @@ -1,54 +0,0 @@ -! -------------------------------------------------------------------- ! -! WAVEWATCH III ww3_shel.nml - single-grid model ! -! -------------------------------------------------------------------- ! - - -! -------------------------------------------------------------------- ! -! Define top-level model parameters via DOMAIN_NML namelist -! -------------------------------------------------------------------- ! -&DOMAIN_NML - DOMAIN%START = '20000101 000000' - DOMAIN%STOP = '20000106 000000' -/ - -! -------------------------------------------------------------------- ! -! Define each forcing via the INPUT_NML namelist -! -------------------------------------------------------------------- ! -&INPUT_NML - INPUT%FORCING%WINDS = 'H' -/ - -! -------------------------------------------------------------------- ! -! Define the output types point parameters via OUTPUT_TYPE_NML namelist -! -------------------------------------------------------------------- ! -&OUTPUT_TYPE_NML - TYPE%FIELD%LIST = 'DPT QP QKK WND ICE HS MSS MSD FAW WCC WCF WCH WCM FOC TAW CHA UST' - TYPE%POINT%FILE = '../input_10ms/points.list' -/ - -! -------------------------------------------------------------------- ! -! Define output dates via OUTPUT_DATE_NML namelist -! -------------------------------------------------------------------- ! -&OUTPUT_DATE_NML - DATE%FIELD = '19680606 000000' '1800' '20230618 000000' - DATE%POINT = '19680606 000000' '1800' '20230618 000000' -/ - -! -------------------------------------------------------------------- ! -! Define homogeneous input via HOMOG_COUNT_NML and HOMOG_INPUT_NML namelist -! -------------------------------------------------------------------- ! -&HOMOG_COUNT_NML - HOMOG_COUNT%N_CUR = 0 - HOMOG_COUNT%N_WND = 1 -/ - -&HOMOG_INPUT_NML - HOMOG_INPUT(1)%NAME = 'WND' - HOMOG_INPUT(1)%VALUE1 = 10. - HOMOG_INPUT(1)%VALUE2 = 270. - HOMOG_INPUT(1)%VALUE3 = 0. -/ - -! -------------------------------------------------------------------- ! -! WAVEWATCH III - end of namelist ! -! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_ts1/input_fld/HOMOGENEOUS.depth b/regtests/ww3_ts1/input_fld/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/gx_outf.inp b/regtests/ww3_ts1/input_fld/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_fld/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/points.list b/regtests/ww3_ts1/input_fld/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/switch_ST4 b/regtests/ww3_ts1/input_fld/switch_ST4 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/switch_ST6 b/regtests/ww3_ts1/input_fld/switch_ST6 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_grid.inp b/regtests/ww3_ts1/input_fld/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_grid.nml b/regtests/ww3_ts1/input_fld/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_ounf.inp b/regtests/ww3_ts1/input_fld/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_ounf.nml b/regtests/ww3_ts1/input_fld/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_outf.inp b/regtests/ww3_ts1/input_fld/ww3_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_shel.inp b/regtests/ww3_ts1/input_fld/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_shel.nml b/regtests/ww3_ts1/input_fld/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_fld/ww3_strt.inp b/regtests/ww3_ts1/input_fld/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/HOMOGENEOUS.depth b/regtests/ww3_ts1/input_icesct_IC0/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/gx_outp.inp b/regtests/ww3_ts1/input_icesct_IC0/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_icesct_IC0/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/points.list b/regtests/ww3_ts1/input_icesct_IC0/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/switch b/regtests/ww3_ts1/input_icesct_IC0/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_grid.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_grid.nml b/regtests/ww3_ts1/input_icesct_IC0/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_spec.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_spec.nml b/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_src.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_src.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_src.nml b/regtests/ww3_ts1/input_icesct_IC0/ww3_ounp_src.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_outp_spec.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_outp_tab50.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_prep_ice.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.nml b/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_strt.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/HOMOGENEOUS.depth b/regtests/ww3_ts1/input_icesct_IC1/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/gx_outp.inp b/regtests/ww3_ts1/input_icesct_IC1/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_icesct_IC1/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/points.list b/regtests/ww3_ts1/input_icesct_IC1/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/switch b/regtests/ww3_ts1/input_icesct_IC1/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_grid.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_grid.nml b/regtests/ww3_ts1/input_icesct_IC1/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_spec.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_spec.nml b/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_src.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_src.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_src.nml b/regtests/ww3_ts1/input_icesct_IC1/ww3_ounp_src.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_outp_spec.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_outp_tab50.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_prep_ice.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.nml b/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_strt.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/HOMOGENEOUS.depth b/regtests/ww3_ts1/input_icesct_IC2/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/gx_outp.inp b/regtests/ww3_ts1/input_icesct_IC2/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_icesct_IC2/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/points.list b/regtests/ww3_ts1/input_icesct_IC2/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/switch b/regtests/ww3_ts1/input_icesct_IC2/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_grid.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_grid.nml b/regtests/ww3_ts1/input_icesct_IC2/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_spec.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_spec.nml b/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_src.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_src.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_src.nml b/regtests/ww3_ts1/input_icesct_IC2/ww3_ounp_src.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_outp_spec.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_outp_tab50.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_prep_ice.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.nml b/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_strt.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/HOMOGENEOUS.depth b/regtests/ww3_ts1/input_icesct_IC3/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/gx_outp.inp b/regtests/ww3_ts1/input_icesct_IC3/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_icesct_IC3/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/points.list b/regtests/ww3_ts1/input_icesct_IC3/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/switch b/regtests/ww3_ts1/input_icesct_IC3/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_grid.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_grid.nml b/regtests/ww3_ts1/input_icesct_IC3/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_spec.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_spec.nml b/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_src.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_src.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_src.nml b/regtests/ww3_ts1/input_icesct_IC3/ww3_ounp_src.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_outp_spec.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_outp_tab50.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_prep_ice.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.nml b/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_strt.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/HOMOGENEOUS.depth b/regtests/ww3_ts1/input_icesct_IC4/HOMOGENEOUS.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/gx_outp.inp b/regtests/ww3_ts1/input_icesct_IC4/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_icesct_IC4/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/points.list b/regtests/ww3_ts1/input_icesct_IC4/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/switch b/regtests/ww3_ts1/input_icesct_IC4/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_grid.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_grid.nml b/regtests/ww3_ts1/input_icesct_IC4/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_spec.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_spec.nml b/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_spec.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_src.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_src.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_src.nml b/regtests/ww3_ts1/input_icesct_IC4/ww3_ounp_src.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_outp_spec.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_outp_tab50.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_prep_ice.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_prep_ice.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.nml b/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_strt.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/Evolution.depth b/regtests/ww3_ts1/input_nl5_gaussian/Evolution.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/namelists_Evolution.nml b/regtests/ww3_ts1/input_nl5_gaussian/namelists_Evolution.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_nl5_gaussian/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/points.list b/regtests/ww3_ts1/input_nl5_gaussian/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/switch b/regtests/ww3_ts1/input_nl5_gaussian/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_grid.inp b/regtests/ww3_ts1/input_nl5_gaussian/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_grid.nml b/regtests/ww3_ts1/input_nl5_gaussian/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounf.inp b/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounf.nml b/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounp.inp b/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounp.nml b/regtests/ww3_ts1/input_nl5_gaussian/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_shel.inp b/regtests/ww3_ts1/input_nl5_gaussian/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_shel.nml b/regtests/ww3_ts1/input_nl5_gaussian/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_gaussian/ww3_strt.inp b/regtests/ww3_ts1/input_nl5_gaussian/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/Duration-limited.depth b/regtests/ww3_ts1/input_nl5_growth/Duration-limited.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/namelists_Duration-limited.nml b/regtests/ww3_ts1/input_nl5_growth/namelists_Duration-limited.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_nl5_growth/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/points.list b/regtests/ww3_ts1/input_nl5_growth/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/switch b/regtests/ww3_ts1/input_nl5_growth/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_grid.inp b/regtests/ww3_ts1/input_nl5_growth/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_grid.nml b/regtests/ww3_ts1/input_nl5_growth/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_ounf.inp b/regtests/ww3_ts1/input_nl5_growth/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_ounf.nml b/regtests/ww3_ts1/input_nl5_growth/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_ounp.inp b/regtests/ww3_ts1/input_nl5_growth/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_ounp.nml b/regtests/ww3_ts1/input_nl5_growth/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_shel.inp b/regtests/ww3_ts1/input_nl5_growth/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_shel.nml b/regtests/ww3_ts1/input_nl5_growth/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_growth/ww3_strt.inp b/regtests/ww3_ts1/input_nl5_growth/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/Duration-limited.depth b/regtests/ww3_ts1/input_nl5_matrix/Duration-limited.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/namelists_Duration-limited.nml b/regtests/ww3_ts1/input_nl5_matrix/namelists_Duration-limited.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/namelists_HOMOGENEOUS.nml b/regtests/ww3_ts1/input_nl5_matrix/namelists_HOMOGENEOUS.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/points.list b/regtests/ww3_ts1/input_nl5_matrix/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/switch b/regtests/ww3_ts1/input_nl5_matrix/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_grid.inp b/regtests/ww3_ts1/input_nl5_matrix/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_grid.nml b/regtests/ww3_ts1/input_nl5_matrix/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_ounf.inp b/regtests/ww3_ts1/input_nl5_matrix/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_ounf.nml b/regtests/ww3_ts1/input_nl5_matrix/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_ounp.inp b/regtests/ww3_ts1/input_nl5_matrix/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_ounp.nml b/regtests/ww3_ts1/input_nl5_matrix/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_outp.inp b/regtests/ww3_ts1/input_nl5_matrix/ww3_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_shel.inp b/regtests/ww3_ts1/input_nl5_matrix/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_shel.nml b/regtests/ww3_ts1/input_nl5_matrix/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts1/input_nl5_matrix/ww3_strt.inp b/regtests/ww3_ts1/input_nl5_matrix/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/info b/regtests/ww3_ts2/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/FETCH.depth b/regtests/ww3_ts2/input/FETCH.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/gx_outp.inp b/regtests/ww3_ts2/input/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/namelists_FETCH.nml b/regtests/ww3_ts2/input/namelists_FETCH.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/points.list b/regtests/ww3_ts2/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch b/regtests/ww3_ts2/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST1_PR1 b/regtests/ww3_ts2/input/switch_ST1_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST1_PR2_UNO b/regtests/ww3_ts2/input/switch_ST1_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST1_PR2_UQ b/regtests/ww3_ts2/input/switch_ST1_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST1_PR3_UNO b/regtests/ww3_ts2/input/switch_ST1_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST1_PR3_UQ b/regtests/ww3_ts2/input/switch_ST1_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST2_PR1 b/regtests/ww3_ts2/input/switch_ST2_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST2_PR2_UNO b/regtests/ww3_ts2/input/switch_ST2_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST2_PR2_UQ b/regtests/ww3_ts2/input/switch_ST2_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST2_PR3_UNO b/regtests/ww3_ts2/input/switch_ST2_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST2_PR3_UQ b/regtests/ww3_ts2/input/switch_ST2_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST3_PR1 b/regtests/ww3_ts2/input/switch_ST3_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST3_PR2_UNO b/regtests/ww3_ts2/input/switch_ST3_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST3_PR2_UQ b/regtests/ww3_ts2/input/switch_ST3_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST3_PR3_UNO b/regtests/ww3_ts2/input/switch_ST3_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST3_PR3_UQ b/regtests/ww3_ts2/input/switch_ST3_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST4_PR1 b/regtests/ww3_ts2/input/switch_ST4_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST4_PR2_UNO b/regtests/ww3_ts2/input/switch_ST4_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST4_PR2_UQ b/regtests/ww3_ts2/input/switch_ST4_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST4_PR3_UNO b/regtests/ww3_ts2/input/switch_ST4_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST4_PR3_UQ b/regtests/ww3_ts2/input/switch_ST4_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST6_PR1 b/regtests/ww3_ts2/input/switch_ST6_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST6_PR2_UNO b/regtests/ww3_ts2/input/switch_ST6_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST6_PR2_UQ b/regtests/ww3_ts2/input/switch_ST6_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST6_PR3_UNO b/regtests/ww3_ts2/input/switch_ST6_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/switch_ST6_PR3_UQ b/regtests/ww3_ts2/input/switch_ST6_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_grid.inp b/regtests/ww3_ts2/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_grid.nml b/regtests/ww3_ts2/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_ounp.inp b/regtests/ww3_ts2/input/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_ounp.nml b/regtests/ww3_ts2/input/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_outp_spec.inp b/regtests/ww3_ts2/input/ww3_outp_spec.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_outp_tab50.inp b/regtests/ww3_ts2/input/ww3_outp_tab50.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_outp_tab51.inp b/regtests/ww3_ts2/input/ww3_outp_tab51.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_shel.inp b/regtests/ww3_ts2/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_shel.nml b/regtests/ww3_ts2/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts2/input/ww3_strt.inp b/regtests/ww3_ts2/input/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/info b/regtests/ww3_ts3/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/MOVING.depth b/regtests/ww3_ts3/input/MOVING.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/gx_outf.inp b/regtests/ww3_ts3/input/gx_outf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/gx_outp.inp b/regtests/ww3_ts3/input/gx_outp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/map_s3.gs b/regtests/ww3_ts3/input/map_s3.gs old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/namelists_MOVING.nml b/regtests/ww3_ts3/input/namelists_MOVING.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/points.list b/regtests/ww3_ts3/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch b/regtests/ww3_ts3/input/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR1 b/regtests/ww3_ts3/input/switch_ST1_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR1_MPI b/regtests/ww3_ts3/input/switch_ST1_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR1_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST1_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR1_OMP b/regtests/ww3_ts3/input/switch_ST1_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UNO b/regtests/ww3_ts3/input/switch_ST1_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UNO_MPI b/regtests/ww3_ts3/input/switch_ST1_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST1_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UNO_OMP b/regtests/ww3_ts3/input/switch_ST1_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UQ b/regtests/ww3_ts3/input/switch_ST1_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UQ_MPI b/regtests/ww3_ts3/input/switch_ST1_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST1_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR2_UQ_OMP b/regtests/ww3_ts3/input/switch_ST1_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UNO b/regtests/ww3_ts3/input/switch_ST1_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UNO_MPI b/regtests/ww3_ts3/input/switch_ST1_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST1_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UNO_OMP b/regtests/ww3_ts3/input/switch_ST1_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UQ b/regtests/ww3_ts3/input/switch_ST1_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UQ_MPI b/regtests/ww3_ts3/input/switch_ST1_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST1_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST1_PR3_UQ_OMP b/regtests/ww3_ts3/input/switch_ST1_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR1 b/regtests/ww3_ts3/input/switch_ST2_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR1_MPI b/regtests/ww3_ts3/input/switch_ST2_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR1_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST2_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR1_OMP b/regtests/ww3_ts3/input/switch_ST2_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UNO b/regtests/ww3_ts3/input/switch_ST2_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UNO_MPI b/regtests/ww3_ts3/input/switch_ST2_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST2_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UNO_OMP b/regtests/ww3_ts3/input/switch_ST2_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UQ b/regtests/ww3_ts3/input/switch_ST2_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UQ_MPI b/regtests/ww3_ts3/input/switch_ST2_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST2_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR2_UQ_OMP b/regtests/ww3_ts3/input/switch_ST2_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UNO b/regtests/ww3_ts3/input/switch_ST2_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UNO_MPI b/regtests/ww3_ts3/input/switch_ST2_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST2_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UNO_OMP b/regtests/ww3_ts3/input/switch_ST2_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UQ b/regtests/ww3_ts3/input/switch_ST2_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UQ_MPI b/regtests/ww3_ts3/input/switch_ST2_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST2_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST2_PR3_UQ_OMP b/regtests/ww3_ts3/input/switch_ST2_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR1 b/regtests/ww3_ts3/input/switch_ST3_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR1_MPI b/regtests/ww3_ts3/input/switch_ST3_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR1_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST3_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR1_OMP b/regtests/ww3_ts3/input/switch_ST3_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UNO b/regtests/ww3_ts3/input/switch_ST3_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UNO_MPI b/regtests/ww3_ts3/input/switch_ST3_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST3_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UNO_OMP b/regtests/ww3_ts3/input/switch_ST3_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UQ b/regtests/ww3_ts3/input/switch_ST3_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UQ_MPI b/regtests/ww3_ts3/input/switch_ST3_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST3_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR2_UQ_OMP b/regtests/ww3_ts3/input/switch_ST3_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UNO b/regtests/ww3_ts3/input/switch_ST3_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UNO_MPI b/regtests/ww3_ts3/input/switch_ST3_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST3_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UNO_OMP b/regtests/ww3_ts3/input/switch_ST3_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UQ b/regtests/ww3_ts3/input/switch_ST3_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UQ_MPI b/regtests/ww3_ts3/input/switch_ST3_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST3_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST3_PR3_UQ_OMP b/regtests/ww3_ts3/input/switch_ST3_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1 b/regtests/ww3_ts3/input/switch_ST4_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1_FLD1 b/regtests/ww3_ts3/input/switch_ST4_PR1_FLD1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1_FLD1_MPI b/regtests/ww3_ts3/input/switch_ST4_PR1_FLD1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1_FLD2 b/regtests/ww3_ts3/input/switch_ST4_PR1_FLD2 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1_FLD2_MPI b/regtests/ww3_ts3/input/switch_ST4_PR1_FLD2_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1_MPI b/regtests/ww3_ts3/input/switch_ST4_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST4_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR1_OMP b/regtests/ww3_ts3/input/switch_ST4_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UNO b/regtests/ww3_ts3/input/switch_ST4_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UNO_MPI b/regtests/ww3_ts3/input/switch_ST4_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST4_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UNO_OMP b/regtests/ww3_ts3/input/switch_ST4_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UQ b/regtests/ww3_ts3/input/switch_ST4_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UQ_MPI b/regtests/ww3_ts3/input/switch_ST4_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST4_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR2_UQ_OMP b/regtests/ww3_ts3/input/switch_ST4_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UNO b/regtests/ww3_ts3/input/switch_ST4_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UNO_MPI b/regtests/ww3_ts3/input/switch_ST4_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST4_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UNO_OMP b/regtests/ww3_ts3/input/switch_ST4_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UQ b/regtests/ww3_ts3/input/switch_ST4_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UQ_MPI b/regtests/ww3_ts3/input/switch_ST4_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST4_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_PR3_UQ_OMP b/regtests/ww3_ts3/input/switch_ST4_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO_MPI b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO_OMP b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ_MPI b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ_OMP b/regtests/ww3_ts3/input/switch_ST4_TSA_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR1 b/regtests/ww3_ts3/input/switch_ST6_PR1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR1_MPI b/regtests/ww3_ts3/input/switch_ST6_PR1_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR1_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST6_PR1_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR1_OMP b/regtests/ww3_ts3/input/switch_ST6_PR1_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UNO b/regtests/ww3_ts3/input/switch_ST6_PR2_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UNO_MPI b/regtests/ww3_ts3/input/switch_ST6_PR2_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST6_PR2_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UNO_OMP b/regtests/ww3_ts3/input/switch_ST6_PR2_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UQ b/regtests/ww3_ts3/input/switch_ST6_PR2_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UQ_MPI b/regtests/ww3_ts3/input/switch_ST6_PR2_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST6_PR2_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR2_UQ_OMP b/regtests/ww3_ts3/input/switch_ST6_PR2_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UNO b/regtests/ww3_ts3/input/switch_ST6_PR3_UNO old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UNO_MPI b/regtests/ww3_ts3/input/switch_ST6_PR3_UNO_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UNO_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST6_PR3_UNO_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UNO_OMP b/regtests/ww3_ts3/input/switch_ST6_PR3_UNO_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UQ b/regtests/ww3_ts3/input/switch_ST6_PR3_UQ old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UQ_MPI b/regtests/ww3_ts3/input/switch_ST6_PR3_UQ_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UQ_MPI_OMPH b/regtests/ww3_ts3/input/switch_ST6_PR3_UQ_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/switch_ST6_PR3_UQ_OMP b/regtests/ww3_ts3/input/switch_ST6_PR3_UQ_OMP old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/wind.f b/regtests/ww3_ts3/input/wind.f old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_grid.inp b/regtests/ww3_ts3/input/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_grid.nml b/regtests/ww3_ts3/input/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_ounf.inp b/regtests/ww3_ts3/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_ounf.nml b/regtests/ww3_ts3/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_outf_ITYPE1.inp b/regtests/ww3_ts3/input/ww3_outf_ITYPE1.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_outf_ITYPE2.inp b/regtests/ww3_ts3/input/ww3_outf_ITYPE2.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_outf_ITYPE3.inp b/regtests/ww3_ts3/input/ww3_outf_ITYPE3.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_prep_wind.inp b/regtests/ww3_ts3/input/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_shel.inp b/regtests/ww3_ts3/input/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts3/input/ww3_shel.nml b/regtests/ww3_ts3/input/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/info b/regtests/ww3_ts4/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/grdset b/regtests/ww3_ts4/input_rg_multi/grdset old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/large.depth_ascii b/regtests/ww3_ts4/input_rg_multi/large.depth_ascii old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/large.mask b/regtests/ww3_ts4/input_rg_multi/large.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/large.obstr_lev1 b/regtests/ww3_ts4/input_rg_multi/large.obstr_lev1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/namelists_large.nml b/regtests/ww3_ts4/input_rg_multi/namelists_large.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/namelists_nest.nml b/regtests/ww3_ts4/input_rg_multi/namelists_nest.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/namelists_wind.nml b/regtests/ww3_ts4/input_rg_multi/namelists_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/nest.depth_ascii b/regtests/ww3_ts4/input_rg_multi/nest.depth_ascii old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/nest.mask b/regtests/ww3_ts4/input_rg_multi/nest.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/nest.obstr_lev1 b/regtests/ww3_ts4/input_rg_multi/nest.obstr_lev1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/obstructions_local.large.in b/regtests/ww3_ts4/input_rg_multi/obstructions_local.large.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/obstructions_local.nest.in b/regtests/ww3_ts4/input_rg_multi/obstructions_local.nest.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/obstructions_shadow.large.in b/regtests/ww3_ts4/input_rg_multi/obstructions_shadow.large.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/obstructions_shadow.nest.in b/regtests/ww3_ts4/input_rg_multi/obstructions_shadow.nest.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/points_1.list b/regtests/ww3_ts4/input_rg_multi/points_1.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/points_2.list b/regtests/ww3_ts4/input_rg_multi/points_2.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/switch b/regtests/ww3_ts4/input_rg_multi/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/switch_MPI b/regtests/ww3_ts4/input_rg_multi/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/wind.depth b/regtests/ww3_ts4/input_rg_multi/wind.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/wind.raw b/regtests/ww3_ts4/input_rg_multi/wind.raw old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_grid_large.inp b/regtests/ww3_ts4/input_rg_multi/ww3_grid_large.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_grid_large.nml b/regtests/ww3_ts4/input_rg_multi/ww3_grid_large.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_grid_nest.inp b/regtests/ww3_ts4/input_rg_multi/ww3_grid_nest.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_grid_nest.nml b/regtests/ww3_ts4/input_rg_multi/ww3_grid_nest.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_grid_wind.inp b/regtests/ww3_ts4/input_rg_multi/ww3_grid_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_grid_wind.nml b/regtests/ww3_ts4/input_rg_multi/ww3_grid_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.inp b/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.nml b/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_ounf.inp b/regtests/ww3_ts4/input_rg_multi/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_ounf.nml b/regtests/ww3_ts4/input_rg_multi/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_ounp.inp b/regtests/ww3_ts4/input_rg_multi/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_ounp.nml b/regtests/ww3_ts4/input_rg_multi/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_prep_wind.inp b/regtests/ww3_ts4/input_rg_multi/ww3_prep_wind.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_strt.inp b/regtests/ww3_ts4/input_rg_multi/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/namelists_tst_crs.nml b/regtests/ww3_ts4/input_rg_shel/namelists_tst_crs.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/obstructions_local.ww3.in b/regtests/ww3_ts4/input_rg_shel/obstructions_local.ww3.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/obstructions_shadow.ww3.in b/regtests/ww3_ts4/input_rg_shel/obstructions_shadow.ww3.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/points.list b/regtests/ww3_ts4/input_rg_shel/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/switch b/regtests/ww3_ts4/input_rg_shel/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/switch_MPI b/regtests/ww3_ts4/input_rg_shel/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/tst_crs.depth_ascii b/regtests/ww3_ts4/input_rg_shel/tst_crs.depth_ascii old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/tst_crs.mask b/regtests/ww3_ts4/input_rg_shel/tst_crs.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/tst_crs.obstr_lev1 b/regtests/ww3_ts4/input_rg_shel/tst_crs.obstr_lev1 old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_grid.inp b/regtests/ww3_ts4/input_rg_shel/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_grid.nml b/regtests/ww3_ts4/input_rg_shel/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_ounf.inp b/regtests/ww3_ts4/input_rg_shel/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_ounf.nml b/regtests/ww3_ts4/input_rg_shel/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_ounp.inp b/regtests/ww3_ts4/input_rg_shel/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_ounp.nml b/regtests/ww3_ts4/input_rg_shel/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_shel.inp b/regtests/ww3_ts4/input_rg_shel/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_shel.nml b/regtests/ww3_ts4/input_rg_shel/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_strt.inp b/regtests/ww3_ts4/input_rg_shel/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/namelists_Mediterranean.nml b/regtests/ww3_ts4/input_ug/namelists_Mediterranean.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/obstructions_local.ugtest.in b/regtests/ww3_ts4/input_ug/obstructions_local.ugtest.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/obstructions_shadow.ugtest.in b/regtests/ww3_ts4/input_ug/obstructions_shadow.ugtest.in old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/plotOutput.py b/regtests/ww3_ts4/input_ug/plotOutput.py old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/points.list b/regtests/ww3_ts4/input_ug/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/switch b/regtests/ww3_ts4/input_ug/switch old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/switch_MPI b/regtests/ww3_ts4/input_ug/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ugtest.msh b/regtests/ww3_ts4/input_ug/ugtest.msh old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_grid.inp b/regtests/ww3_ts4/input_ug/ww3_grid.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_grid.nml b/regtests/ww3_ts4/input_ug/ww3_grid.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_ounf.inp b/regtests/ww3_ts4/input_ug/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_ounf.nml b/regtests/ww3_ts4/input_ug/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_ounp.inp b/regtests/ww3_ts4/input_ug/ww3_ounp.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_ounp.nml b/regtests/ww3_ts4/input_ug/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_shel.inp b/regtests/ww3_ts4/input_ug/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_shel.nml b/regtests/ww3_ts4/input_ug/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ts4/input_ug/ww3_strt.inp b/regtests/ww3_ts4/input_ug/ww3_strt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/info b/regtests/ww3_ufs1.1/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/glo_1deg.depth b/regtests/ww3_ufs1.1/input/glo_1deg.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/glo_1deg.mask b/regtests/ww3_ufs1.1/input/glo_1deg.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/glo_1deg.obst b/regtests/ww3_ufs1.1/input/glo_1deg.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/glo_5deg.depth b/regtests/ww3_ufs1.1/input/glo_5deg.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/glo_5deg.mask b/regtests/ww3_ufs1.1/input/glo_5deg.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/glo_5deg.obst b/regtests/ww3_ufs1.1/input/glo_5deg.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/grdset_a b/regtests/ww3_ufs1.1/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/grdset_b b/regtests/ww3_ufs1.1/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/grdset_c b/regtests/ww3_ufs1.1/input/grdset_c old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/grdset_d b/regtests/ww3_ufs1.1/input/grdset_d old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/namelists_glo_15mxt.nml b/regtests/ww3_ufs1.1/input/namelists_glo_15mxt.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/namelists_glo_1deg.nml b/regtests/ww3_ufs1.1/input/namelists_glo_1deg.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/namelists_glo_5deg.nml b/regtests/ww3_ufs1.1/input/namelists_glo_5deg.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/namelists_points.nml b/regtests/ww3_ufs1.1/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/points.depth b/regtests/ww3_ufs1.1/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/points.list b/regtests/ww3_ufs1.1/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/points.mask b/regtests/ww3_ufs1.1/input/points.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/points.obst b/regtests/ww3_ufs1.1/input/points.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/switch_MPI b/regtests/ww3_ufs1.1/input/switch_MPI old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/switch_MPI_OMPH b/regtests/ww3_ufs1.1/input/switch_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_esmf.rc b/regtests/ww3_ufs1.1/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grib_glo_1deg.inp b/regtests/ww3_ufs1.1/input/ww3_grib_glo_1deg.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grib_glo_5deg.inp b/regtests/ww3_ufs1.1/input/ww3_grib_glo_5deg.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_glo_15mxt.inp b/regtests/ww3_ufs1.1/input/ww3_grid_glo_15mxt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_glo_15mxt.nml b/regtests/ww3_ufs1.1/input/ww3_grid_glo_15mxt.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_glo_1deg.inp b/regtests/ww3_ufs1.1/input/ww3_grid_glo_1deg.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_glo_1deg.nml b/regtests/ww3_ufs1.1/input/ww3_grid_glo_1deg.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_glo_5deg.inp b/regtests/ww3_ufs1.1/input/ww3_grid_glo_5deg.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_glo_5deg.nml b/regtests/ww3_ufs1.1/input/ww3_grid_glo_5deg.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_points.inp b/regtests/ww3_ufs1.1/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_grid_points.nml b/regtests/ww3_ufs1.1/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_a.inp b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_a.nml b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_b.inp b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_b.nml b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_c.inp b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_c.nml b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_d.inp b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_d.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_multi_grdset_d.nml b/regtests/ww3_ufs1.1/input/ww3_multi_grdset_d.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_ounf.inp b/regtests/ww3_ufs1.1/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_ounf.nml b/regtests/ww3_ufs1.1/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_ounp_points.nml b/regtests/ww3_ufs1.1/input/ww3_ounp_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_prnc_glo_15mxt_current.nml b/regtests/ww3_ufs1.1/input/ww3_prnc_glo_15mxt_current.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_prnc_glo_15mxt_ice.nml b/regtests/ww3_ufs1.1/input/ww3_prnc_glo_15mxt_ice.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_prnc_glo_15mxt_wind.nml b/regtests/ww3_ufs1.1/input/ww3_prnc_glo_15mxt_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_prnc_glo_5deg_current.nml b/regtests/ww3_ufs1.1/input/ww3_prnc_glo_5deg_current.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_prnc_glo_5deg_ice.nml b/regtests/ww3_ufs1.1/input/ww3_prnc_glo_5deg_ice.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input/ww3_prnc_glo_5deg_wind.nml b/regtests/ww3_ufs1.1/input/ww3_prnc_glo_5deg_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/namelists_a.nml b/regtests/ww3_ufs1.1/input_unstr/namelists_a.nml old mode 100644 new mode 100755 index e28a03245..584405f2f --- a/regtests/ww3_ufs1.1/input_unstr/namelists_a.nml +++ b/regtests/ww3_ufs1.1/input_unstr/namelists_a.nml @@ -31,7 +31,7 @@ SDSHCK = 1.50, SDSBR = 0.9000E-03, SDSSTRAIN = 0.000, SDSP = 2.00, SDSISO = 2, SDSCOS =2.0, SDSDTH = 80.0, SDSBRF1 = 0.50, SDSBRFDF = 0, SDSBM0 = 1.00, SDSBM1 = 0.00, SDSBM2 = 0.00, SDSBM3 = 0.00, SDSBM4 = 0.00, -WHITECAPWIDTH = 0.30/ +, WHITECAPWIDTH = 0.30/ &SBT1 GAMMA = -0.6700E-01 / &SDB1 BJALFA = 1.000, BJGAM = 0.730, BJFLAG = .TRUE. / &PRO3 CFLTM = 0.70, WDTHCG = 1.50, WDTHTH = 1.50 / diff --git a/regtests/ww3_ufs1.1/input_unstr/namelists_b.nml b/regtests/ww3_ufs1.1/input_unstr/namelists_b.nml old mode 100644 new mode 100755 index 8d1c72eda..292ffc5f7 --- a/regtests/ww3_ufs1.1/input_unstr/namelists_b.nml +++ b/regtests/ww3_ufs1.1/input_unstr/namelists_b.nml @@ -51,7 +51,7 @@ SDSHCK = 1.50, SDSBR = 0.9000E-03, SDSSTRAIN = 0.000, SDSP = 2.00, SDSISO = 2, SDSCOS =2.0, SDSDTH = 80.0, SDSBRF1 = 0.50, SDSBRFDF = 0, SDSBM0 = 1.00, SDSBM1 = 0.00, SDSBM2 = 0.00, SDSBM3 = 0.00, SDSBM4 = 0.00, -WHITECAPWIDTH = 0.30/ +, WHITECAPWIDTH = 0.30/ &SBT1 GAMMA = -0.6700E-01 / &SDB1 BJALFA = 1.000, BJGAM = 0.730, BJFLAG = .TRUE. / &PRO3 CFLTM = 0.70, WDTHCG = 1.50, WDTHTH = 1.50 / diff --git a/regtests/ww3_ufs1.1/input_unstr/namelists_c.nml b/regtests/ww3_ufs1.1/input_unstr/namelists_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/switch_PDLIB b/regtests/ww3_ufs1.1/input_unstr/switch_PDLIB old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_grid_a.inp b/regtests/ww3_ufs1.1/input_unstr/ww3_grid_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_grid_a.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_grid_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_grid_b.inp b/regtests/ww3_ufs1.1/input_unstr/ww3_grid_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_grid_b.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_grid_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_grid_c.inp b/regtests/ww3_ufs1.1/input_unstr/ww3_grid_c.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_grid_c.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_grid_c.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_ounf.inp b/regtests/ww3_ufs1.1/input_unstr/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_ounf.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_ounp.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_ounp.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_points.list b/regtests/ww3_ufs1.1/input_unstr/ww3_points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_prnc_current.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_prnc_current.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_prnc_ice.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_prnc_ice.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_prnc_wind.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_prnc_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_shel.inp b/regtests/ww3_ufs1.1/input_unstr/ww3_shel.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.1/input_unstr/ww3_shel.nml b/regtests/ww3_ufs1.1/input_unstr/ww3_shel.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/info b/regtests/ww3_ufs1.2/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/glox_10m.depth b/regtests/ww3_ufs1.2/input/glox_10m.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/grdset_a b/regtests/ww3_ufs1.2/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/grdset_b b/regtests/ww3_ufs1.2/input/grdset_b old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/grdset_c b/regtests/ww3_ufs1.2/input/grdset_c old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/grdset_l b/regtests/ww3_ufs1.2/input/grdset_l old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/namelists_aoc_9km.nml b/regtests/ww3_ufs1.2/input/namelists_aoc_9km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/namelists_glo_15mxt.nml b/regtests/ww3_ufs1.2/input/namelists_glo_15mxt.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/namelists_glox_10m.nml b/regtests/ww3_ufs1.2/input/namelists_glox_10m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/namelists_gnh_10m.nml b/regtests/ww3_ufs1.2/input/namelists_gnh_10m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/namelists_gsh_15m.nml b/regtests/ww3_ufs1.2/input/namelists_gsh_15m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/namelists_points.nml b/regtests/ww3_ufs1.2/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/points.depth b/regtests/ww3_ufs1.2/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/points.list b/regtests/ww3_ufs1.2/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/points.mask b/regtests/ww3_ufs1.2/input/points.mask old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/points.obst b/regtests/ww3_ufs1.2/input/points.obst old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/switch_MPI_OMPH b/regtests/ww3_ufs1.2/input/switch_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_esmf.rc b/regtests/ww3_ufs1.2/input/ww3_esmf.rc old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_gint_grdset_a.inp b/regtests/ww3_ufs1.2/input/ww3_gint_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_gint_grdset_b.inp b/regtests/ww3_ufs1.2/input/ww3_gint_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_gint_grdset_c.inp b/regtests/ww3_ufs1.2/input/ww3_gint_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grib_aoc_9km.inp b/regtests/ww3_ufs1.2/input/ww3_grib_aoc_9km.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_aoc_9km.nml b/regtests/ww3_ufs1.2/input/ww3_grid_aoc_9km.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_glo_15mxt.inp b/regtests/ww3_ufs1.2/input/ww3_grid_glo_15mxt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_glo_15mxt.nml b/regtests/ww3_ufs1.2/input/ww3_grid_glo_15mxt.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_glox_10m.nml b/regtests/ww3_ufs1.2/input/ww3_grid_glox_10m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_gnh_10m.nml b/regtests/ww3_ufs1.2/input/ww3_grid_gnh_10m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_gsh_15m.nml b/regtests/ww3_ufs1.2/input/ww3_grid_gsh_15m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_hafsl.inp b/regtests/ww3_ufs1.2/input/ww3_grid_hafsl.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_l.bot b/regtests/ww3_ufs1.2/input/ww3_grid_l.bot old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_l.msk b/regtests/ww3_ufs1.2/input/ww3_grid_l.msk old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_l.obr b/regtests/ww3_ufs1.2/input/ww3_grid_l.obr old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_points.inp b/regtests/ww3_ufs1.2/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_grid_points.nml b/regtests/ww3_ufs1.2/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_multi_grdset_a.inp b/regtests/ww3_ufs1.2/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_multi_grdset_a.nml b/regtests/ww3_ufs1.2/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_multi_grdset_b.inp b/regtests/ww3_ufs1.2/input/ww3_multi_grdset_b.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_multi_grdset_b.nml b/regtests/ww3_ufs1.2/input/ww3_multi_grdset_b.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_multi_grdset_c.inp b/regtests/ww3_ufs1.2/input/ww3_multi_grdset_c.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_multi_grdset_l.inp b/regtests/ww3_ufs1.2/input/ww3_multi_grdset_l.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_ounf.inp b/regtests/ww3_ufs1.2/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_ounf.nml b/regtests/ww3_ufs1.2/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_ounp_points.nml b/regtests/ww3_ufs1.2/input/ww3_ounp_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_prnc_glo_15mxt_current.nml b/regtests/ww3_ufs1.2/input/ww3_prnc_glo_15mxt_current.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_prnc_glo_15mxt_ice.nml b/regtests/ww3_ufs1.2/input/ww3_prnc_glo_15mxt_ice.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.2/input/ww3_prnc_glox_10m_wind.nml b/regtests/ww3_ufs1.2/input/ww3_prnc_glox_10m_wind.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/info b/regtests/ww3_ufs1.3/info old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/glo_15m.depth b/regtests/ww3_ufs1.3/input/glo_15m.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/grdset_a b/regtests/ww3_ufs1.3/input/grdset_a old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/namelists_glo_15m.nml b/regtests/ww3_ufs1.3/input/namelists_glo_15m.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/namelists_points.nml b/regtests/ww3_ufs1.3/input/namelists_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/points.depth b/regtests/ww3_ufs1.3/input/points.depth old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/points.list b/regtests/ww3_ufs1.3/input/points.list old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/switch_MPI_OMPH b/regtests/ww3_ufs1.3/input/switch_MPI_OMPH old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_gint_grdset_a.inp b/regtests/ww3_ufs1.3/input/ww3_gint_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_grid_ao_20m.inp b/regtests/ww3_ufs1.3/input/ww3_grid_ao_20m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_grid_clean.inp b/regtests/ww3_ufs1.3/input/ww3_grid_clean.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_grid_glo_15m.inp b/regtests/ww3_ufs1.3/input/ww3_grid_glo_15m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_grid_glo_15mxt.inp b/regtests/ww3_ufs1.3/input/ww3_grid_glo_15mxt.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_grid_points.inp b/regtests/ww3_ufs1.3/input/ww3_grid_points.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_grid_points.nml b/regtests/ww3_ufs1.3/input/ww3_grid_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_grid_so_20m.inp b/regtests/ww3_ufs1.3/input/ww3_grid_so_20m.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_multi_grdset_a.inp b/regtests/ww3_ufs1.3/input/ww3_multi_grdset_a.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_multi_grdset_a.nml b/regtests/ww3_ufs1.3/input/ww3_multi_grdset_a.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_ounf.inp b/regtests/ww3_ufs1.3/input/ww3_ounf.inp old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_ounf.nml b/regtests/ww3_ufs1.3/input/ww3_ounf.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_ounp_points.nml b/regtests/ww3_ufs1.3/input/ww3_ounp_points.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_prnc_glo_15mxt_ice.nml b/regtests/ww3_ufs1.3/input/ww3_prnc_glo_15mxt_ice.nml old mode 100644 new mode 100755 diff --git a/regtests/ww3_ufs1.3/input/ww3_prnc_glo_15mxt_wind.nml b/regtests/ww3_ufs1.3/input/ww3_prnc_glo_15mxt_wind.nml old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50AISide.dat b/smc_docs/SMCG_TKs/G50AISide.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50AJSide.dat b/smc_docs/SMCG_TKs/G50AJSide.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50GISide.dat b/smc_docs/SMCG_TKs/G50GISide.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50GJSide.dat b/smc_docs/SMCG_TKs/G50GJSide.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50GObstr.dat b/smc_docs/SMCG_TKs/G50GObstr.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50SAcSide.f90 b/smc_docs/SMCG_TKs/G50SAcSide.f90 old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50SGlSide.f90 b/smc_docs/SMCG_TKs/G50SGlSide.f90 old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50SMCBAr.dat b/smc_docs/SMCG_TKs/G50SMCBAr.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50SMCSRGD.f90 b/smc_docs/SMCG_TKs/G50SMCSRGD.f90 old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50kmBathy.dat b/smc_docs/SMCG_TKs/G50kmBathy.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/G50kmObstr.dat b/smc_docs/SMCG_TKs/G50kmObstr.dat old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/Glob50SMCObstr.pro b/smc_docs/SMCG_TKs/Glob50SMCObstr.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/Glob50SMCels.pro b/smc_docs/SMCG_TKs/Glob50SMCels.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/eq2lldeg.pro b/smc_docs/SMCG_TKs/eq2lldeg.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/g50smcgrids.pro b/smc_docs/SMCG_TKs/g50smcgrids.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/g50smcswhglb.pro b/smc_docs/SMCG_TKs/g50smcswhglb.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/g50smstrspb.pro b/smc_docs/SMCG_TKs/g50smstrspb.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/linuxspectrum.clr b/smc_docs/SMCG_TKs/linuxspectrum.clr old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/ll2eqdeg.pro b/smc_docs/SMCG_TKs/ll2eqdeg.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/readcell.pro b/smc_docs/SMCG_TKs/readcell.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/readproj.pro b/smc_docs/SMCG_TKs/readproj.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/smc625gridGlb.pro b/smc_docs/SMCG_TKs/smc625gridGlb.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/smc625swhGlb.pro b/smc_docs/SMCG_TKs/smc625swhGlb.pro old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/smcrv50kgrid b/smc_docs/SMCG_TKs/smcrv50kgrid old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/smcrv50kinit b/smc_docs/SMCG_TKs/smcrv50kinit old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/smcrv50kmrun b/smc_docs/SMCG_TKs/smcrv50kmrun old mode 100644 new mode 100755 diff --git a/smc_docs/SMCG_TKs/steromap.pro b/smc_docs/SMCG_TKs/steromap.pro old mode 100644 new mode 100755