roms.in: Difference between revisions

From WikiROMS
Jump to navigationJump to search
No edit summary   (change visibility)
 
(65 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<div class="title">Standard Input Script - <span class="red">ocean.in</span></div>
<div class="title">Standard Input Script - <span class="red">roms.in</span></div>


File <span class="red">ocean.in</span> is the ROMS standard input file to any model run. This file sets the application spatial dimensions and many of the parameters that are not specified at compile time, including parallel tile decomposition, time-stepping, physical coefficients and constants, vertical coordinate set-up, logical switches and flags to control the frequency of output, the names of input and output NetCDF files, and additional input scripts names for [[s4dvar.in|data assimilation]], [[stations.in|stations]], [[floats.in| floats trajectories]], [[biological.in|ecosystem models]], and [[sediment.in|sediment model]].
{{note}} '''Notice:''' In SVN revision 933 (January 26, 2019), all "<span class="red">ocean_*.in</span>" files were renamed to <span class="red">roms_*.in</span> and all <span class="red">ocean*</span> ROMS executables were renamed to <span class="red">roms*</span> in order to facilitate and clarify model coupling efforts. More information can be found in the ROMS repository [https://www.myroms.org/projects/src/ticket/794 Trac ticket #794].
 
 
File <span class="red">roms.in</span> is the ROMS standard input file to any model run. This file sets the application spatial dimensions and many of the parameters that are not specified at compile time, including parallel tile decomposition, timestepping, physical coefficients and constants, vertical coordinate set-up, logical switches and flags to control the frequency of output, the names of input and output NetCDF files, and additional input scripts names for [[s4dvar.in|data assimilation]], [[stations.in|stations]], [[floats.in| floats trajectories]], [[biology.in|ecosystem models]], and [[sediment.in|sediment model]].


This standard input ASCII file is organized in several sections as shown below, with links to more detailed explanation where required.
This standard input ASCII file is organized in several sections as shown below, with links to more detailed explanation where required.
Line 7: Line 10:
{{note}} '''Notice:''' A detailed information about ROMS input script file syntax can be found [[Input Parameter Files|here]].
{{note}} '''Notice:''' A detailed information about ROMS input script file syntax can be found [[Input Parameter Files|here]].


{{note}} '''Notice:''' A default <span class="red">ocean.in</span> input script is provided in the '''User/External''' subdirectory. Also there are several standard input scripts in the '''ROMS/External''' subdirectory which are used in the distributed [[Test Cases|test cases]]. They are usually named <span class="red">ocean_</span><span class="blue">app</span><span class="red">.in</span> where <span class="blue">app</span> is the lowercase of the test case [[Options|cpp option]].
{{note}} '''Notice:''' A default <span class="red">roms.in</span> input script is provided in the '''User/External''' subdirectory. Also there are several standard input scripts in the '''ROMS/External''' subdirectory which are used in the distributed [[Test Cases|test cases]]. They are usually named <span class="red">roms_</span><span class="blue">app</span><span class="red">.in</span> where <span class="blue">app</span> is the lowercase of the test case [[Options|cpp option]].


== Configuration Parameters ==
== Configuration Parameters ==


* Application title. This string will be saved in the output NetCDF files. <div class="box">      [[title|TITLE]] = Wind-Driven Upwelling/Downwelling over a Periodic Channel</div>
* Application title. This string will be saved in the output NetCDF files. <div class="box">      [[Variables#title|TITLE]] = Wind-Driven Upwelling/Downwelling over a Periodic Channel</div>
 
* C-preprocessing Flag to define the specific configuration.<div class="box">    MyAppCPP = UPWELLING</div>Though this is set by [[makefile#ROMS_APPLICATION | ROMS_APPLICATION]] in the [[makefile]] or [[build Script]], ROMS is also compiled with <span style="white-space:nowrap;">'''-D$(ROMS_APPLICATION)'''</span>, which allows the use of<div class="box">#ifdef UPWELLING</div>for instance. The net result of both<div class="box">-D$(ROMS_APPLICATION)=UPWELLING -DUPWELLING</div>is that '''ROMS_APPLICATION''' becomes '''1''' in the source code. ROMS therefore needs to be told the application name here as well in order to report it to the output file.


* C-preprocessing Flag to define the specific configuration. In versions up to 2.3 this flag was one of the predefined model applications that headed the [[cppdefs.h]] file. You '''must''' make the value of <span class="blue">MyAppCPP</span> below consistent with variable <span class="blue">ROMS_APPLICATION</span> in the [[makefile]]. ROMS converts the <span class="blue">ROMS_APPLICATION</span> variable to lowercase to determine the name of the file to include. To see the options used in the predefined applications browse the files in '''ROMS/Include'''.<div class="box">   [[MyAppCPP]] = [[UPWELLING]]</div>{{note}} '''Notice:''' It is recommended that users setting up their own configuration by creating a new file e.g. <span class="red">myproject.h</span> to hold [[Options|CPP options]] and keep this either in '''User/Include''' or a separate directory that is indicated by the <span class="red">MY_HEADER_DIR</span> macro definition in [[makefile]].<br /><br />{{warning}}  '''Warning:''' If you copy a predefined application from '''ROMS/Include''' as a template for your application you '''must''' rename it. You cannot stop ROMS from first looking in '''ROMS/Include''', in which case any edits you make will get shadowed and your changes will not be used.
* Input variable information file name. This file needs to be processed first so all information arrays can be initialized properly. Notice that we need an absolute or relative path for input metadata file [[varinfo.dat]]. There are many posts in the ROMS Forum of new users that fail to specify the correct location of this file. Expert users usually have the own modified copy of this file for a particular application.<div class="box">     [[Variables#varname|VARNAME]] = ROMS/External/[[varinfo.dat]]</div>


* Input variable information file name.  This file needs to be processed first so all information arrays can be initialized properly.<div class="box">     [[varname|VARNAME]] = ROMS/External/[[varinfo.dat]]</div>
:{{note}}'''NOTE:''' Starting with '''revision 460''' file names can be up to 256 characters long. Previously only 80 characters were allowed.
 
* Number of nested grids.<div class="box">      [[Ngrids]] =  1</div>
 
* Number of grid nesting layers.  This parameter is used to allow refinement and composite grid combinations.<div class="box"> [[Variables#NestLayers|NestLayers]] = 1</div>
* Number of grids in each nesting layer, [1:[[Variables#NestLayers|NestLayers]]] values are expected.<div class="box">[[Variables#GridsInLayer|GridsInLayer]] =  1</div>


* Grid dimension parameters. These are used to dynamically allocate all model state variables upon execution.<div class="box">          [[Variables#Lm|Lm]] == 41            ! Number of I-direction INTERIOR RHO-points<br />          [[Variables#Mm|Mm]] == 80            ! Number of J-direction INTERIOR RHO-points<br />          [[Variables#N|N]] == 16            ! Number of vertical levels<br /><br />        [[Variables#Nbed|Nbed]] =  0            ! Number of sediment bed layers<br /><br />        [[Variables#NAT|NAT]] =  2            ! Number of active tracers (usually, 2)<br />        [[Variables#NPT|NPT]] =  0            ! Number of inactive passive tracers<br />        [[Variables#NCS|NCS]] =  0            ! Number of cohesive (mud) sediment tracers<br />        [[Variables#NNS|NNS]] =  0            ! Number of non-cohesive (sand) sediment tracers</div>
* Grid dimension parameters. These are used to dynamically allocate all model state variables upon execution.<div class="box">          [[Variables#Lm|Lm]] == 41            ! Number of I-direction INTERIOR RHO-points<br />          [[Variables#Mm|Mm]] == 80            ! Number of J-direction INTERIOR RHO-points<br />          [[Variables#N|N]] == 16            ! Number of vertical levels<br /><br />        [[Variables#Nbed|Nbed]] =  0            ! Number of sediment bed layers<br /><br />        [[Variables#NAT|NAT]] =  2            ! Number of active tracers (usually, 2)<br />        [[Variables#NPT|NPT]] =  0            ! Number of inactive passive tracers<br />        [[Variables#NCS|NCS]] =  0            ! Number of cohesive (mud) sediment tracers<br />        [[Variables#NNS|NNS]] =  0            ! Number of non-cohesive (sand) sediment tracers</div>
Line 21: Line 32:
* Domain decomposition parameters for serial, distributed-memory or shared-memory configurations used to determine tile horizontal range indices ([[Istr]],[[Iend]]) and ([[Jstr]],[[Jend]]), [1:[[Ngrids]]] values are expected.<div class="box">      [[NtileI]] == 1            ! I-direction partition<br />      [[NtileJ]] == 1            ! J-direction partition</div>
* Domain decomposition parameters for serial, distributed-memory or shared-memory configurations used to determine tile horizontal range indices ([[Istr]],[[Iend]]) and ([[Jstr]],[[Jend]]), [1:[[Ngrids]]] values are expected.<div class="box">      [[NtileI]] == 1            ! I-direction partition<br />      [[NtileJ]] == 1            ! J-direction partition</div>


==Time-Stepping and Iterations Parameters==
==Tracer Advection Schemes==
 
Set horizontal and vertical advection schemes for active and inert tracers. A different advection scheme is allowed for each tracer. For example, a positive-definite (monotonic) algorithm can be activated for salinity and inert tracers, while a different one is set for temperature.
 
It is more advantageous to set the horizontal and vertical advection schemes for each tracer with switches instead of a single CPP flag for all of them. Positive-definite and monotonic algorithms (i.e., MPDATA and HSIMT) are appropriate and useful for positive fields like salinity, inert, biological, and sediment tracers.  However, since the temperature has a dynamic range with negative and positive values in the ocean, other advection schemes are more appropriate.
 
Currently, the following tracer advection schemes are available and are activated using the associated Keyword:
:<div class="box">Keyword    Advection Algorithm<br /><br />A4        4th-order Akima (horizontal/vertical)<br />C2        2nd-order centered differences (horizontal/vertical)<br />C4        4th-order centered differences (horizontal/vertical)<br />HSIMT      3th-order HSIMT with TVD limiter (horizontal/vertical)<br />MPDATA    recursive flux corrected MPDATA (horizontal/vertical)<br />SPLINES    parabolic splines reconstruction (only vertical)<br />SU3        split third-order upstream (horizontal/vertical)<br />U3        3rd-order upstresm-bias (only horizontal)</div>
 
The user has the option of specifying the full Keyword or the first two letters, regardless if using uppercase or lowercase.
 
If using either HSIMT ([[Bibliography#WuH_2010a|Wu and Zhu, 2010]]) or MPDATA ([[Bibliography#SmolarkiewiczPK_1998a|Smolarkiewicz and Margolin, 1998]]) options, the user needs to set the same scheme for both horizontal and vertical advection to preserve monotonicity.
 
*Horizontal and vertical advection for each active (temperature and salinity) and inert tracer, [1:[[Variables#NAT|NAT]]+[[Variables#NPT|NPT]],[[Variables#Ngrids|Ngrids]]] values are expected.<div class="box">  [[Variables#Hadvection|Hadvection]] == U3      \                    ! temperature<br />                U3      \                    ! salinity<br />                HSIMT    \                    ! dye_01, inert(1)<br />                HSIMT                          ! dy2_02, inert(2)<br /><br />  [[Variables#Vadvection|Vadvection]] == C4      \                    ! temperature<br />                C4      \                    ! salinity<br />                HSIMT    \                    ! dye_01, inert(1)<br />                HSIMT                          ! dy2_02, inert(2)</div>
 
*Horizontal and vertical advection for each active (temperature and salinity) and inert tracer for adjoint-based algorithms can have different horizontal schemes, [1:[[Variables#NAT|NAT]]+[[Variables#NPT|NPT]],[[Variables#Ngrids|Ngrids]]] values are expected.<div class="box">[[Variables#ad_Hadvection|ad_Hadvection]] == U3      \                    ! temperature<br />                U3      \                    ! salinity<br />                HSIMT    \                    ! dye_01, inert(1)<br />                HSIMT                          ! dy2_02, inert(2)<br /><br />[[Variables#ad_Vadvection|ad_Vadvection]] == C4      \                    ! temperature<br />                C4      \                    ! salinity<br />                HSIMT    \                    ! dye_01, inert(1)<br />                HSIMT                          ! dy2_02, inert(2)</div>
 
 
==Lateral Open Boundary Conditions Parameters==
 
*The lateral boundary conditions are now specified with logical switches instead of CPP flags to allow nested grid configurations. Their values are loaded into the structured array:<div class="box">[[Variables#LBC|LBC]](1:4, nLBCvar, [[Ngrids]])</div>where '''1:4''' are the numbered boundary edges, '''nLBCvar''' are the number LBC state variables, and [[Ngrids]] is the number of nested grids. For example, to apply gradient boundary conditions for free-surface we use:<div class="box">[[Variables#LBC|LBC]](iwest,  isFsur, ng) % gradient<br />[[Variables#LBC|LBC]](ieast,  ...  , ng) % gradient<br />[[Variables#LBC|LBC]](isouth, ...  , ng) % gradient<br />[[Variables#LBC|LBC]](inorth, ...  , ng) % gradient</div>The lateral boundary conditions are entered with a keyword. A value is expected for each boundary segment per nested grid for each state variable. Each tracer variable requires [1:4,1:[[NAT]]+[[NPT]],[[Ngrids]]] values. [1:4,1:[[Ngrids]]] values are expected for other variables. The boundary order is: '''1'''=west, '''2'''=south, '''3'''=east, and '''4'''=north. That is, anticlockwise starting at the western boundary.<br /><br />The keyword is case insensitive and usually has three characters. However, it is possible to have compound keywords, if applicable. For example, the keyword '''RadNud''' implies radiation boundary condition with nudging. This combination is usually used in active/passive radiation conditions.<div class="box"><span class="twilightBlue">!  Keyword    Lateral Boundary Condition Type<br />!<br />!  Cha        Chapman<br />!  Cla        Clamped<br />!  Clo        Closed<br />!  Fla        Flather                                _____N_____    j=Mm<br />!  Gra        Gradient                              |    4    |<br />!  Nes        Nested                                |          |<br />!  Nud        Nudging                            1 W          E 3<br />!  Per        Periodic                              |          |<br />!  Rad        Radiation                            |_____S_____|<br />!  Red        Reduced Physics                            2          j=1<br />!                                                  i=1        i=Lm<br />!                  W      S      E      N<br />!                  e      o      a      o<br />!                  s      u      s      r<br />!                  t      t      t      t<br />!                          h              h<br />!<br />!                  1      2      3      4</span><br /><br />  [[Variables#LBC|LBC(isFsur)]] ==  Per    Clo    Per    Clo        ! free-surface<br />  [[Variables#LBC|LBC(isUbar)]] ==  Per    Clo    Per    Clo        ! 2D U-momentum<br />  [[Variables#LBC|LBC(isVbar)]] ==  Per    Clo    Per    Clo        ! 2D V-momentum<br />  [[Variables#LBC|LBC(isUvel)]] ==  Per    Clo    Per    Clo        ! 3D U-momentum<br />  [[Variables#LBC|LBC(isVvel)]] ==  Per    Clo    Per    Clo        ! 3D V-momentum<br />  [[Variables#LBC|LBC(isMtke)]] ==  Per    Clo    Per    Clo        ! mixing TKE<br /><br />  [[Variables#LBC|LBC(isTvar)]] ==  Per    Clo    Per    Clo \      ! temperature<br />                    Per    Clo    Per    Clo        ! salinity</div>
 
*Adjoint-based algorithms can have different lateral boundary conditions keywords.<div class="box">[[Variables#ad_LBC|ad_LBC(isFsur)]] ==  Per    Clo    Per    Clo        ! free-surface<br />[[Variables#ad_LBC|ad_LBC(isUbar)]] ==  Per    Clo    Per    Clo        ! 2D U-momentum<br />[[Variables#ad_LBC|ad_LBC(isVbar)]] ==  Per    Clo    Per    Clo        ! 2D U-momentum<br />[[Variables#ad_LBC|ad_LBC(isUvel)]] ==  Per    Clo    Per    Clo        ! 3D U-momentum<br />[[Variables#ad_LBC|ad_LBC(isVvel)]] ==  Per    Clo    Per    Clo        ! 3D V-momentum<br />[[Variables#ad_LBC|ad_LBC(isMtke)]] ==  Per    Clo    Per    Clo        ! mixing TKE<br /><br />[[Variables#ad_LBC|ad_LBC(isTvar)]] ==  Per    Clo    Per    Clo \      ! temperature<br />                    Per    Clo    Per    Clo        ! salinity</div>
 
*Lateral open boundary edge volume conservation switch for nonlinear model and adjoint-based algorithm. This is usually activated with radiation boundary conditions to enforce global mass conservation. Notice that these switches should not be activated if tidal forcing, [1:[[Ngrids]]] values are expected.<div class="box">  [[Variables#VolCons|VolCons(west)]]  ==  F                            ! western  boundary<br />  [[Variables#VolCons|VolCons(east)]]  ==  F                            ! eastern  boundary<br />  [[Variables#VolCons|VolCons(south)]] ==  F                            ! southern boundary<br />  [[Variables#VolCons|VolCons(north)]] ==  F                            ! northern boundary<br /><br />[[Variables#ad_VolCons|ad_VolCons(west)]]  ==  F                            ! western  boundary<br />[[Variables#ad_VolCons|ad_VolCons(east)]]  ==  F                            ! eastern  boundary<br />[[Variables#ad_VolCons|ad_VolCons(south)]] ==  F                            ! southern boundary<br />[[Variables#ad_VolCons|ad_VolCons(north)]] ==  F                            ! northern boundary</div>


* Time-stepping parameters.<div class="box">      [[Variables#ntimes|NTIMES]] =  1440          ! Number of time steps<br />          [[Variables#dt|DT]] == 300.0d0      ! Time-step size (seconds)<br />    [[Variables#ndtfast|NDTFAST]] == 30            ! Number of barotropic steps</div>
==Timestepping and Iterations Parameters==
 
* Timestepping parameters.<div class="box">      [[Variables#ntimes|NTIMES]] =  1440          ! Number of timesteps<br />          [[Variables#dt|DT]] == 300.0d0      ! Timestep size (seconds)<br />    [[Variables#ndtfast|NDTFAST]] == 30            ! Number of barotropic steps</div>
 
* Total number of timesteps for computing observations impacts interval during the analysis ([[Variables#ntimes_ana|NTIMES_ANA]]) or forecast ([[Variables#ntimes_fct|NTIMES_FCT]]) cycle.<div class="box">      [[Variables#ntimes_ana|NTIMES_ANA]] =  1440          ! analysis interval<br />      [[Variables#ntimes_fct|NTIMES_FCT]] =  1440          ! forecast interval</div>


* Model iteration loops parameters.<div class="box">      [[Variables#ERstr|ERstr]] =  1            ! Starting perturbation or iteration<br />      [[Variables#ERend|ERend]] =  1            ! Ending perturbation or iteration<br />      [[Variables#Nouter|Nouter]] =  1            ! Maximum number of 4DVar outer loop iterations<br />      [[Variables#Ninner|Ninner]] =  1            ! Maximum number of 4DVar inner loop iterations<br />  [[Variables#Nintervals|Nintervals]] =  1            ! Number of stochastic optimals interval divisions</div>
* Model iteration loops parameters.<div class="box">      [[Variables#ERstr|ERstr]] =  1            ! Starting perturbation or iteration<br />      [[Variables#ERend|ERend]] =  1            ! Ending perturbation or iteration<br />      [[Variables#Nouter|Nouter]] =  1            ! Maximum number of 4DVar outer loop iterations<br />      [[Variables#Ninner|Ninner]] =  1            ! Maximum number of 4DVar inner loop iterations<br />  [[Variables#Nintervals|Nintervals]] =  1            ! Number of stochastic optimals interval divisions</div>


* Number of eigenvalues ([[Variables#NEV|NEV]]) and eigenvectors ([[Variables#NCV|NCV]]) to compute for the Lanczos/Arnoldi problem in the Generalized Stability Theory (GST) analysis. [[Variables#NCV|NCV]] must be greater than [[Variables#NEV|NEV]].<div class="box">        [[Variables#NEV|NEV]] =  2            ! Number of eigenvalues<br />        [[Variables#NCV|NCV]] =  10            ! Number of eigenvectors</div>{{note}} '''Notice:''' At present, there is no a-priori analysis to guide the selection of <span class="twilightBlue">NCV</span> relative to <span class="twilightBlue">NEV</span>.  The only formal requirement is that <span class="twilightBlue">NCV > NEV</span>. However in optimal perturbations, it is recommended to have <span class="twilightBlue">NCV &ge; 2*NEV</span>. In Finite Time Eigenmodes (FTE) and Adjoint Finite Time Eigenmodes (AFTE) the requirement is to have <span class="twilightBlue">NCV &ge; 2*NEV+1</span>. The efficiency of calculations depends critically on the combination of <span class="twilightBlue">NEV</span> and <span class="twilightBlue">NCV</span>.  If <span class="twilightBlue">NEV</span> is large (greater than 10 say), you can use <span class="twilightBlue">NCV=2*NEV+1</span> but for <span class="twilightBlue">NEV</span> small (less than 6) it will be inefficient to use <span class="twilightBlue">NCV=2*NEV+1</span>. In complicated applications, you can start with <span class="twilightBlue">NEV=2</span> and <span class="twilightBlue">NCV=10</span>. Otherwise, it will iterate for very long time.
* Number of eigenvalues ([[Variables#NEV|NEV]]) and eigenvectors ([[Variables#NCV|NCV]]) to compute for the Lanczos/Arnoldi problem in the Generalized Stability Theory (GST) analysis. [[Variables#NCV|NCV]] must be greater than [[Variables#NEV|NEV]].<div class="box">        [[Variables#NEV|NEV]] =  2            ! Number of eigenvalues<br />        [[Variables#NCV|NCV]] =  10            ! Number of eigenvectors</div>{{note}} '''Notice:''' At present, there is no ''apriori'' analysis to guide the selection of <span class="twilightBlue">NCV</span> relative to <span class="twilightBlue">NEV</span>.  The only formal requirement is that <span class="twilightBlue">NCV > NEV</span>. However in optimal perturbations, it is recommended to have <span class="twilightBlue">NCV &ge; 2*NEV</span>. In Finite Time Eigenmodes (FTE) and Adjoint Finite Time Eigenmodes (AFTE) the requirement is to have <span class="twilightBlue">NCV &ge; 2*NEV+1</span>. The efficiency of calculations depends critically on the combination of <span class="twilightBlue">NEV</span> and <span class="twilightBlue">NCV</span>.  If <span class="twilightBlue">NEV</span> is large (greater than 10 say), you can use <span class="twilightBlue">NCV=2*NEV+1</span> but for <span class="twilightBlue">NEV</span> small (less than 6) it will be inefficient to use <span class="twilightBlue">NCV=2*NEV+1</span>. In complicated applications, you can start with <span class="twilightBlue">NEV=2</span> and <span class="twilightBlue">NCV=10</span>. Otherwise, it will iterate for very long time.


==Output Frequency Parameters==
==Output Frequency Parameters==


* Flags controlling the frequency of output.<div class="box">      [[Variables#nrrec|NRREC]] =  0            ! Model restart flag<br />  [[Variables#LcycleRST|LcycleRST]] == T            ! Switch to recycle restart time records<br />        [[Variables#nRST|NRST]] == 288          ! Number of time-steps between restart records<br />        [[Variables#nSTA|NSTA]] == 1            ! Number of time-steps between stations records<br />        [[Variables#nFLT|NFLT]] == 1            ! Number of time-steps between floats records<br />      [[Variables#ninfo|NINFO]] == 1            ! Number of time-steps between information diagnostics</div>
* Flags controlling the frequency of output.<div class="box">      [[Variables#nrrec|NRREC]] =  0            ! Model restart flag<br />  [[Variables#LcycleRST|LcycleRST]] == T            ! Switch to recycle restart time records<br />        [[Variables#nRST|NRST]] == 288          ! Number of timesteps between writing restart records<br />        [[Variables#nSTA|NSTA]] == 1            ! Number of timesteps between stations records<br />        [[Variables#nFLT|NFLT]] == 1            ! Number of timesteps between floats records<br />      [[Variables#ninfo|NINFO]] == 1            ! Number of timesteps between printing information diagnostics</div>


* Output history, average, diagnostic files parameters.<div class="box">    [[Variables#ldefout|LDEFOUT]] == T            ! File creation/append switch<br />        [[Variables#nHIS|NHIS]] == 72            ! Number of time-steps between history records<br />    [[Variables#ndefHIS|NDEFHIS]] == 0            ! Number of time-steps between creation of new history file<br />      [[Variables#ntsAVG|NTSAVG]] == 1            ! Starting averages time-step<br />        [[Variables#nAVG|NAVG]] == 72            ! Number of time-steps between averages records<br />    [[Variables#ndefAVG|NDEFAVG]] == 0            ! Number of time-steps between creation of new averages file<br />      [[Variables#ntsDIA|NTSDIA]] == 1            ! Starting diagnostics time-step<br />        [[Variables#nDIA|NDIA]] == 72            ! Number of time-steps between diagnostics records<br />    [[Variables#ndefDIA|NDEFDIA]] == 0            ! Number of time-steps between creation of new diagnostics file</div>
* Output history, average, diagnostic files parameters.<div class="box">    [[Variables#ldefout|LDEFOUT]] == T            ! File creation/append switch<br />        [[Variables#nHIS|NHIS]] == 72            ! Number of timesteps between writing history records<br />    [[Variables#ndefHIS|NDEFHIS]] == 0            ! Number of timesteps between creation of new history file<br />        [[Variables#nQCK|NQCK]] == 0            ! Number of timesteps between writing quicksave records<br />    [[Variables#ndefQCK|NDEFQCK]] == 0            ! Number of timesteps between creation of new quicksave file<br />      [[Variables#ntsAVG|NTSAVG]] == 1            ! Starting averages timestep<br />        [[Variables#nAVG|NAVG]] == 72            ! Number of timesteps between writing averages records<br />    [[Variables#ndefAVG|NDEFAVG]] == 0            ! Number of timesteps between creation of new averages file<br />      [[Variables#ntsDIA|NTSDIA]] == 1            ! Starting diagnostics timestep<br />        [[Variables#nDIA|NDIA]] == 72            ! Number of timesteps between writing diagnostics records<br />    [[Variables#ndefDIA|NDEFDIA]] == 0            ! Number of timesteps between creation of new diagnostics file</div>


* Output tangent linear and adjoint models parameters.<div class="box">  [[Variables#LcycleTLM|LcycleTLM]] == F            ! Switch to recycle TLM time records<br />        [[Variables#nTLM|NTLM]] == 72            ! Number of time-steps between TLM records<br />    [[Variables#ndefTLM|NDEFTLM]] == 0            ! Number of time-steps between creation of new TLM file<br />  [[Variables#LcycleADJ|LcycleADJ]] == F            ! Switch to recycle ADM time records<br />        [[Variables#nADJ|NADJ]] == 72            ! Number of time-steps between ADM records<br />    [[Variables#ndefADJ|NDEFADJ]] == 0            ! Number of time-steps between creation of new ADM file</div>
* Output tangent linear and adjoint models parameters.<div class="box">  [[Variables#LcycleTLM|LcycleTLM]] == F            ! Switch to recycle TLM time records<br />        [[Variables#nTLM|NTLM]] == 72            ! Number of timesteps writing between TLM records<br />    [[Variables#ndefTLM|NDEFTLM]] == 0            ! Number of timesteps between creation of new TLM file<br>  [[Variables#LcycleADJ|LcycleADJ]] == F            ! Switch to recycle ADM time records<br>        [[Variables#nADJ|NADJ]] == 72            ! Number of timesteps between writing ADM records<br>    [[Variables#ndefADJ|NDEFADJ]] == 0            ! Number of timesteps between creation of new ADM file<br>        [[Variables#nSFF|NSFF]] == 72            ! Number of timesteps between 4DVAR adjustment of<br>                              !  surface forcing fluxes<br>        [[Variables#nOBC|NOBC]] == 72            ! Number of timesteps between 4DVAR adjustment of<br>                              !  open boundary fields</div>


* Output check pointing GST restart parameters.<div class="box">    [[Variables#LrstGST|LrstGST]] =  F            ! GST restart switch<br />  [[Variables#MaxIterGST|MaxIterGST]] =  500          ! maximum number of iterations<br />        [[Variables#nGST|NGST]] =  10            ! check pointing interval</div>
* Output check pointing GST restart parameters.<div class="box">  [[Variables#LmultiGST|LmultiGST]] =  F            ! one eigenvector per history file<br />    [[Variables#LrstGST|LrstGST]] =  F            ! GST restart switch<br />  [[Variables#MaxIterGST|MaxIterGST]] =  500          ! maximum number of iterations<br />        [[Variables#nGST|NGST]] =  10            ! check pointing interval</div>


== Physical and Numerical Parameters ==
== Physical and Numerical Parameters ==
Line 43: Line 82:
* Relative accuracy of the Ritz values computed in the GST analysis.<div class="box">    [[Variables#Ritz_tol|Ritz_tol]] =  1.0d-15</div>
* Relative accuracy of the Ritz values computed in the GST analysis.<div class="box">    [[Variables#Ritz_tol|Ritz_tol]] =  1.0d-15</div>


* Harmonic/biharmonic horizontal diffusion of all active and passive (dye) tracers, [1:[[NAT]]+[[NPT]],[[Ngrids]]]. Diffusion coefficients for biology and sediment tracers are set in their respective input scripts.<div class="box">        [[Variables#tnu2|TNU2]] == 0.0d0  0.0d0                   ! m2/s<br />        [[Variables#tnu4|TNU4]] == 2*0.0d0                         ! m4/s</div>
* Harmonic/biharmonic horizontal diffusion of all active and passive (dye) tracers for the nonlinear model and adjoint-based algorithms: [1:[[NAT]]+[[NPT]],[[Ngrids]]] values are expected. Diffusion coefficients for biology and sediment tracers are set in their respective input scripts.<div class="box">        [[Variables#tnu2|TNU2]] == 0.0d0  0.0d0       ! m2/s<br />        [[Variables#tnu4|TNU4]] == 2*0.0d0             ! m4/s<br /><br />    [[Variables#ad_tnu2|ad_TNU2]] == 0.0d0  0.0d0        ! m2/s<br />    [[Variables#ad_tnu4|ad_TNU4]] == 0.0d0  0.0d0        ! m4/s</div>
 
* Harmonic/biharmonic, horizontal viscosity coefficient for the nonlinear model and adjoint-based algorithms: [1:[[Ngrids]] values are expected.  Only used if the appropriate CPP options are defined.<div class="box">      [[Variables#visc2|VISC2]] == 0.0d0              ! m2/s<br />      [[Variables#visc4|VISC4]] == 0.0d0              ! m4/s<br /><br />    [[Variables#ad_visc2|ad_VISC2]] == 0.0d0              ! m2/s<br />    [[Variables#ad_visc4|ad_VISC4]] == 0.0d0              ! m4/s</div>
 
* Logical switches ('''TRUE'''/'''FALSE''') to increase/decrease horizontal viscosity and/or diffusivity in specific areas of the application domain (like sponge areas) for the desired application grid.<div class="box">    [[Variables#LuvSponge|LuvSponge]] == F                  ! horizontal momentum<br />[[Variables#LtracerSponge|LtracerSponge]] == F F                ! temperature, salinity, inert</div>


* Harmonic/biharmonic, horizontal viscosity coefficient: [1:[[Ngrids]] values are expected.  Only used if the appropriate CPP options are defined.<div class="box">       [[Variables#visc2|VISC2]] == 0.0d0                          ! m2/s<br />       [[Variables#visc4|VISC4]] == 0.0d0                           ! m4/s</div>
* Background vertical mixing coefficients for active ([[NAT]]) and inert ([[NPT]]) tracers for the nonlinear model and basic state scale factor in adjoint-based algorithms: [1:[[NAT]]+[[NPT]],[[Ngrids]]] values are expected.<div class="box">     [[Variables#Akt_bak|AKT_BAK]] == 1.0d-6 1.0d-6      ! m2/s<br /><br />  [[Variables#ad_Akt_fac|ad_AKT_fac]] == 1.0d0 1.0d0        !nondimensional</div>


* Background vertical mixing coefficients for active and passive (dye) tracers: [1:[[NAT]]+[[NPT]],[[Ngrids]]] values are expected.<div class="box">    [[Variables#Akt_bak|AKT_BAK]] == 1.0d-6 1.0d-6                  ! m2/s</div>
* Background vertical mixing coefficient for momentum for the nonlinear model and basic state scale factor in the adjoint-based algorithms: [1:[[Ngrids]]] values are expected.<div class="box">    [[Variables#Akv_bak|AKV_BAK]] == 1.0d-5              ! m2/s<br /><br />  [[Variables#ad_Akv_fac|ad_AKV_fac]] == 1.0d0              !nondimensional</div>


* Background vertical mixing coefficient for momentum: [1:[[Ngrids]]] values are expected.<div class="box">     [[Variables#Akv_bak|AKV_BAK]] == 1.0d-5                          ! m2/s</div>
* Upper threshold values to limit vertical mixing coefficients computed from vertical mixing parameterizations. Although this is an engineering fix, the vertical mixing values inferred from ocean observations are rarely higher than this upper limit value.<div class="box">   [[Variables#Akt_limit|AKT_LIMIT]] == 1.0d-3 1.0d-3      ! m2/s<br /><br />  [[Variables#Akv_limit|AKV_LIMIT]] == 1.0d-3              ! m2/s</div>


* Turbulent closures parameters.<div class="box">    [[Variables#Akk_bak|AKK_BAK]] == 5.0d-6                         ! m2/s<br />    [[Variables#Akp_bak|AKP_BAK]] == 5.0d-6                         ! m2/s<br />      [[Variables#tkene2|TKENU2]] == 0.0d0                           ! m2/s<br />      [[Variables#tkenu4|TKENU4]] == 0.0d0                           ! m4/s</div>
* Turbulent closures parameters.<div class="box">    [[Variables#Akk_bak|AKK_BAK]] == 5.0d-6             ! m2/s<br />    [[Variables#Akp_bak|AKP_BAK]] == 5.0d-6             ! m2/s<br />      [[Variables#tkene2|TKENU2]] == 0.0d0               ! m2/s<br />      [[Variables#tkenu4|TKENU4]] == 0.0d0               ! m4/s</div>


* [[Vertical Mixing Parameterizations#Generic Length Scale|Generic length-scale]] turbulence closure parameters. These parameters are used when [[GLS_MIXING]] is activated.<div class="box">      [[Variables#gls_p|GLS_P]] == 3.0d0                           ! <span class="red">K-epsilon</span><br />      [[Variables#gls_m|GLS_M]] == 1.5d0<br />      [[Variables#gls_n|GLS_N]] == -1.0d0<br />    [[Variables#gls_Kmin|GLS_Kmin]] == 7.6d-6<br />    [[Variables#gls_Pmin|GLS_Pmin]] == 1.0d-12<br /><br />    [[Variables#gls_cmu0|GLS_CMU0]] == 0.5477d0<br />      [[Variables#gls_c1|GLS_C1]] == 1.44d0<br />      [[Variables#gls_c2|GLS_C2]] == 1.92d0<br />    [[Variables#gls_c3m|GLS_C3M]] == -0.4d0<br />    [[Variables#gls_c3p|GLS_C3P]] == 1.0d0<br />    [[Variables#gls_sigp|GLS_SIGK]] == 1.0d0<br />    [[Variables#gls_sigp|GLS_SIGP]] == 1.30d0</div>
* [[Vertical Mixing Parameterizations#Generic Length Scale|Generic length-scale]] turbulence closure parameters. These parameters are used when [[GLS_MIXING]] is activated.<div class="box">      [[Variables#gls_p|GLS_P]] == 3.0d0               ! <span class="red">K-epsilon</span><br />      [[Variables#gls_m|GLS_M]] == 1.5d0               ! Turbulent kinetic energy exponent<br />      [[Variables#gls_n|GLS_N]] == -1.0d0             ! Turbulent length scale exponent<br />    [[Variables#gls_Kmin|GLS_Kmin]] == 7.6d-6             ! Minimum value of specific turbulent energy<br />    [[Variables#gls_Pmin|GLS_Pmin]] == 1.0d-12             ! Minimum Value of dissipation<br /><br />'''! Closure independent constraint parameters:'''<br><br>    [[Variables#gls_cmu0|GLS_CMU0]] == 0.5477d0           ! Stability coefficient<br />      [[Variables#gls_c1|GLS_C1]] == 1.44d0             ! Shear production coefficient<br />      [[Variables#gls_c2|GLS_C2]] == 1.92d0             ! Dissipation coefficient<br />    [[Variables#gls_c3m|GLS_C3M]] == -0.4d0             ! Buoyancy production coefficient (minus)<br />    [[Variables#gls_c3p|GLS_C3P]] == 1.0d0               ! Buoyancy production coefficient (plus)<br />    [[Variables#gls_sigp|GLS_SIGK]] == 1.0d0               ! Constant Schmidt number for turbulent<br>                                    !  kinetic energy diffusivity<br />    [[Variables#gls_sigp|GLS_SIGP]] == 1.30d0             ! Constant Schmidt number for turbulent<br>                                    !  generic statistical field, "psi"</div>


* Constants used in surface turbulent kinetic energy flux computation.<div class="box">  [[Variables#charnok_alpha|CHARNOK_ALPHA]] == 1400.0d0               ! Charnok surface roughness<br /> [[Variables#zoz_hsig_alpha|ZOS_HSIG_ALPHA]] == 0.5d0                   ! Roughness from wave amplitude<br />      [[Variables#sz_alpha|SZ_ALPHA]] == 0.25d0                 ! roughness from wave dissipation<br />      [[Variables#crgban_cw|CRGBAN_CW]] == 100.0d0                 ! Craig and Banner wave breaking</div>
* Constants used in surface turbulent kinetic energy flux computation.<div class="box">  [[Variables#charnok_alpha|CHARNOK_ALPHA]] == 1400.0d0         ! Charnok surface roughness<br /> [[Variables#zoz_hsig_alpha|ZOS_HSIG_ALPHA]] == 0.5d0           ! Roughness from wave amplitude<br />      [[Variables#sz_alpha|SZ_ALPHA]] == 0.25d0           ! roughness from wave dissipation<br />      [[Variables#crgban_cw|CRGBAN_CW]] == 100.0d0         ! Craig and Banner wave breaking</div>


* Constants used in momentum stress computation.<div class="box">        [[Variables#rdrg|RDRG]] == 3.0d-04                   ! m/s<br />      [[Variables#rdrg2|RDRG2]] == 3.0d-03                   ! nondimensional<br />        [[Variables#Zob|Zob]] == 0.02d0                     ! m<br />        [[Variables#Zos|Zos]] == 0.02d0                     ! m</div>
* Constants used in momentum stress computation.<div class="box">        [[Variables#rdrg|RDRG]] == 3.0d-04             ! m/s<br />      [[Variables#rdrg2|RDRG2]] == 3.0d-03             ! nondimensional<br />        [[Variables#Zob|Zob]] == 0.02d0             ! m<br />        [[Variables#Zos|Zos]] == 0.02d0             ! m</div>


* Height (m) of atmospheric measurements for Bulk fluxes parameterization.<div class="box">      [[Variables#blk_ZQ|BLK_ZQ]] == 2.0d0                     ! air humidity<br />      [[Variables#blk_ZT|BLK_ZT]] == 2.0d0                     ! air temperature<br />      [[Variables#blk_ZW|BLK_ZW]] == 10.0d0                     ! winds</div>
* Height (m) of atmospheric measurements for Bulk fluxes parameterization.<div class="box">      [[Variables#blk_ZQ|BLK_ZQ]] == 10.0d0             ! air humidity<br />      [[Variables#blk_ZT|BLK_ZT]] == 10.0d0             ! air temperature<br />      [[Variables#blk_ZW|BLK_ZW]] == 10.0d0             ! winds</div>


* Minimum depth for wetting and drying.<div class="box">      [[Variables#Dcrit|DCRIT]] == 0.10d0                     ! m</div>
* Minimum depth for wetting and drying.<div class="box">      [[Variables#Dcrit|DCRIT]] == 0.10d0             ! m</div>


* Jerlov water type used to set vertical depth scale for shortwave radiation absorption.<div class="box">      [[Variables#lmd_Jwt|WTYPE]] == 1</div>
* Jerlov water type used to set vertical depth scale for shortwave radiation absorption.<div class="box">      [[Variables#lmd_Jwt|WTYPE]] == 1</div>
Line 67: Line 110:
* Deepest and shallowest levels to apply surface momentum stress as a [[BODYFORCE|body-force]].<div class="box">    [[Variables#levsfrc|LEVSFRC]] == 15<br />    [[Variables#levbfrc|LEVBFRC]] == 1</div>
* Deepest and shallowest levels to apply surface momentum stress as a [[BODYFORCE|body-force]].<div class="box">    [[Variables#levsfrc|LEVSFRC]] == 15<br />    [[Variables#levbfrc|LEVBFRC]] == 1</div>


* Mean Density and Brunt-Vaisala frequency.<div class="box">        [[Variables#rho0|RHO0]] =  1025.0d0                   ! kg/m3<br />    [[Variables#bvf_bak|BVF_BAK]] =  1.0d-4                     ! 1/s2</div>
* Mean Density and Brunt-Vaisala frequency.<div class="box">        [[Variables#rho0|RHO0]] =  1025.0d0           ! kg/m3<br />    [[Variables#bvf_bak|BVF_BAK]] =  1.0d-4             ! 1/s2</div>


* Time-stamp assigned for model initialization, reference time origin for tidal forcing, and model reference time for output NetCDF units attribute.<div class="box">      [[Variables#dstart|DSTART]] =  0.0d0                     ! days<br />  [[Variables#tide_start|TIDE_START]] =  0.0d0                     ! days<br />    [[Variables#time_ref|TIME_REF]] =  0.0d0                     ! yyyymmdd.dd</div>
* Timestamp assigned for model initialization, reference time origin for tidal forcing, and model reference time for output NetCDF units attribute.<div class="box">      [[Variables#dstart|DSTART]] =  0.0d0               ! days<br />  [[Variables#tide_start|TIDE_START]] =  0.0d0               ! days<br />    [[Variables#time_ref|TIME_REF]] =  0.0d0               ! yyyymmdd.dd</div>


* Nudging/relaxation time scales, inverse scales will be computed internally, [1:[[Ngrids]]] values are expected.<div class="box">      [[Variables#Tnudg|TNUDG]] == 2*0.0d0                   ! days<br />      [[Variables#Znudg|ZNUDG]] == 0.0d0                     ! days<br />      [[Variables#M2nudg|M2NUDG]] == 0.0d0                     ! days<br />      [[Variables#M3nudg|M3NUDG]] == 0.0d0                     ! days</div>
* Nudging/relaxation time scales, inverse scales will be computed internally, [1:[[Ngrids]]] values are expected. These values are used for two purposes.
# When climatology nudging is active throughout the domain because the logical flags LtracerCLM, Lm3CLM, Lm2CLM etc. are TRUE, these values are the default nudging time scales set in Functionals/ana_nudgcoef.h. Since the user can choose to customize ana_nudgcoef.h, or provide 3-D climatology nudging time scales in an external file, these parameters might not be used
# When nudging is applied in the lateral open boundary conditions because the LBC logical flags are set to "RadNud" the values here set the nudging time scale when the Orlanski radiation scheme detects outflow conditions. When the Orlanski scheme detects inflow conditions, the nudging time scale is TNUDG/OBCFAC (see OBCFAC below).
<div class="box">      [[Variables#Tnudg|TNUDG]] == 2*0.0d0             ! days<br />      [[Variables#Znudg|ZNUDG]] == 0.0d0               ! days<br />      [[Variables#M2nudg|M2NUDG]] == 0.0d0               ! days<br />      [[Variables#M3nudg|M3NUDG]] == 0.0d0               ! days</div>


* Factor between passive (outflow) and active (inflow) open boundary conditions, [1:Ngrids]. If [[Variables#obcfac|OBCFAC]] > 1, nudging on inflow is stronger than on outflow (recommended).<div class="box">      [[Variables#obcfac|OBCFAC]] == 0.0d0                     ! nondimensional</div>
* Factor between passive (outflow) and active (inflow) (in the Orlanksi radiation sense) open boundary condition nudging time scales, [1:Ngrids]. If [[Variables#obcfac|OBCFAC]] > 1, nudging on inflow is stronger than on outflow (recommended) because the inflow time scale TNUDG/OBCFAC is less than the outflow timescale TNUDG (see above). The passive/active radiation conditions in ROMS follow the method proposed by [[Bibliography#MarchesielloP_2001a | Marchesiello et al. (2001)]]: <math display="block">\frac{\partial \phi}{\partial t} + C_x \frac{\partial \phi}{\partial x} + C_y \frac{\partial \phi}{\partial y} = - \frac{1}{\tau}(\phi - \phi^{ext})</math> with <math display="block">\begin{align} \tau &= \tau_{out} &\text{if} \;\;\; &C_x > 0, \\ \tau &= \tau_{in} &\text{if} \;\;\; &C_x < 0 \;\;\; \text{and} \;\;\; C_y = 0 \end{align}</math> where <math>\phi^{ext}</math> represents the external boundary data and <math>\tau</math> is the nudging time scale with <math>\tau_{out}</math> for outflow, <math>\tau_{in}</math> for inflow, and <math>\tau_{out} \ll \tau_{in}</math>. At outflow, a weak nudging is used to prevent a numerical drift in the solution while avoiding over-specification of the boundary data. During inflow, a strong nudging is applied to avoid data-shock in the solution. The nudging time scales provided above are for the outflow (passive) conditions, <math>\tau_{out}</math>, in days.  The inflow nudging factor in the above equation is <math>\frac{1}{\tau_{in}} = \frac{\text{obcfac}}{\tau_{out}}</math>. <div class="box">      [[Variables#obcfac|OBCFAC]] == 10.0d0               ! nondimensional</div>


* Linear equation of State parameters, [1:[[Ngrids]]] values are expected.<div class="box">          [[Variables#R0|R0]] == 1027.0d0                   ! kg/m3<br />          [[Variables#T0|T0]] == 10.0d0                     ! Celsius<br />          [[Variables#S0|S0]] == 35.0d0                     ! PSU<br />      [[Variables#Tcoef|TCOEF]] == 1.7d-4                     ! 1/Celsius<br />      [[Variables#Scoef|SCOEF]] == 7.6d-4                     ! 1/PSU</div>
* Linear equation of State parameters, [1:[[Ngrids]]] values are expected.<div class="box">          [[Variables#R0|R0]] == 1027.0d0           ! kg/m3<br />          [[Variables#T0|T0]] == 10.0d0             ! Celsius<br />          [[Variables#S0|S0]] == 35.0d0             ! nondimensional<br />      [[Variables#Tcoef|TCOEF]] == 1.7d-4             ! 1/Celsius<br />      [[Variables#Scoef|SCOEF]] == 7.6d-4             ! 1/nondimensional</div>


* Slipperiness parameter: 1.0 (free slip) or -1.0 (no slip).<div class="box">      [[Variables#gamma2|GAMMA2]] =  1.0d0</div>
* Slipperiness parameter: 1.0 (free slip) or -1.0 (no slip).<div class="box">      [[Variables#gamma2|GAMMA2]] =  1.0d0</div>
* Logical switches ('''TRUE'''/'''FALSE''') to activate horizontal momentum transport point Sources/Sinks (like river runoff) and mass point Sources/Sinks (like volume vertical influx): [1:[[Ngrids]]] values are expected. These switches replace obsolete CPP options [[Options#UV_PSOURCE|UV_PSOURCE]] and [[Options#Q_PSOURCE|Q_PSOURCE]], respectively. In nesting, a particular grid may or may not have Sources/Sinks forcing.<div class="box">      [[Variables#LuvSrc|LuvSrc]] == F                  ! horizontal momentum transport<br />      [[Variables#LwSrc|LwSrc]] == F                  ! volume vertical influx</div>
* Logical switches ('''TRUE'''/'''FALSE''') to activate tracers point Sources/Sinks (like river runoff) and to specify which tracer variables to consider: [1:[[NAT]]+[[NPT]],[[Ngrids]]] values are expected.  Other biological and sediment tracer switches are activated in their respective input scripts. This switch replaces obsolete CPP option [[Options#TS_PSOURCE|TS_PSOURCE]]. In nesting, a particular grid may or may not have tracers Sources/Sinks forcing.<div class="box">  [[LtracerSrc]] == F F                ! temperature, salinity, inert</div>
* Logical switches ('''TRUE'''/'''FALSE''') to read and process climatology fields.<div class="box">    [[Variables#LsshCLM|LsshCLM]] == F                  ! sea-surface height<br/>      [[Variables#Lm2CLM|Lm2CLM]] == F                  ! 2D momentum<br/>      [[Variables#Lm3CLM|Lm3CLM]] == F                  ! 3D momentum<br /><br />  [[Variables#LtracerCLM|LtracerCLM]] == F F                ! temperature, salinity, inert</div>
* Logical switches ('''TRUE'''/'''FALSE''') to nudge the desired climatology field(s). If not analytical climatology fields, users need to turn ON the logical switches above to process the fields from the climatology NetCDF file that are needed for nudging.<div class="box"> [[Variables#LnudgeM2CLM|LnudgeM2CLM]] == F                  ! 2D momentum<br /> [[Variables#LnudgeM3CLM|LnudgeM3CLM]] == F                  ! 3D momentum<br /><br />  [[Variables#LnudgeTCLM|LnudgeTCLM]] == F F                ! temperature, salinity, inert</div>


== Vertical Coordinates Parameters ==
== Vertical Coordinates Parameters ==


* Terrain-following coordinates surface control parameter, [1:[[Ngrids]]] values are expected.<div class="box">     [[Variables#theta_s|THETA_S]] == 3.0d0                      ! 0 < THETA_S < 20</div>
* Set vertical, terrain-following coordinates transformation equation and stretching function (see [[Vertical S-coordinate]] for more details).<div class="box"> [[Variables#Vtransform|Vtransform]] == 2                          ! transformation equation<br /> [[Variables#Vstretching|Vstretching]] == 4                          ! stretching function</div>


* Terrain-following coordinates bottom control parameter, [1:[[Ngrids]]] values are expected.<div class="box">    [[Variables#theta_b|THETA_B]] == 0.0d0                      ! 0 < THETA_B < 1</div>
* S-coordinate surface control parameter, [1:[[Ngrids]]] values are expected. The range of optimal values depends on the vertical stretching function.<div class="box">    [[Variables#theta_s|THETA_S]] == 3.0d0                      ! surface stretching parameter</div>


* Width of surface or bottom boundary layer in which higher vertical resolution is required during stretching.<div class="box">      [[Variables#tcline|TCLINE]] == 50.0d0                    ! m</div>
* S-coordinate bottom control parameter, [1:[[Ngrids]]] values are expected. The range of optimal values depends on the vertical stretching function.<div class="box">    [[Variables#theta_b|THETA_B]] == 0.0d0                      ! bottom  stretching parameter</div>
 
* Critical depth (hc) in meters (positive) controlling the stretching. It can be interpreted as the width of surface or bottom boundary layer in which higher vertical resolution (levels) is required during stretching.<div class="box">      [[Variables#tcline|TCLINE]] == 25.0d0                    ! critical depth (m)</div>


== Adjoint Sensitivity Parameters ==
== Adjoint Sensitivity Parameters ==
Line 93: Line 149:
* Starting and ending vertical levels of the 3D adjoint state variables whose sensitivity is required.<div class="box">      [[Variables#KstrS|KstrS]] == 1                          ! starting level<br />      [[Variables#KendS|KendS]] == 1                          ! ending level</div>
* Starting and ending vertical levels of the 3D adjoint state variables whose sensitivity is required.<div class="box">      [[Variables#KstrS|KstrS]] == 1                          ! starting level<br />      [[Variables#KendS|KendS]] == 1                          ! ending level</div>


* Logical switches ('''TRUE'''/'''FALSE''') to specify the adjoint state variables whose sensitivity is required.<div class="box">[[Variables#Lstate|Lstate(isFsur)]] == F                        ! free-surface<br />[[Variables#Lstate|Lstate(isUbar)]] == F                        ! 2D U-momentum<br />[[Variables#Lstate|Lstate(isVbar)]] == F                        ! 2D V-momentum<br />[[Variables#Lstate|Lstate(isUvel)]] == F                        ! 3D U-momentum<br />[[Variables#Lstate|Lstate(isVvel)]] == F                        ! 3D V-momentum</div>
* Logical switches ('''TRUE'''/'''FALSE''') to specify the adjoint state variables whose sensitivity is required.<div class="box">[[Variables#Lstate|Lstate(isFsur)]] == F                        ! free-surface<br />[[Variables#Lstate|Lstate(isUbar)]] == F                        ! 2D U-momentum<br />[[Variables#Lstate|Lstate(isVbar)]] == F                        ! 2D V-momentum<br />[[Variables#Lstate|Lstate(isUvel)]] == F                        ! 3D U-momentum<br />[[Variables#Lstate|Lstate(isVvel)]] == F                        ! 3D V-momentum<br />[[Variables#Lstate|Lstate(isWvel)]] == F                        ! 3D W-momentum</div>


* Logical switches ('''TRUE'''/'''FALSE''') to specify the adjoint state tracervariables whose sensitivity is required, [1:[[NT]],1:[[Ngrids]]] values are expected.<div class="box">[[Variables#Lstate|Lstate(isTvar)]] == F F                      ! tracers</div>
* Logical switches ('''TRUE'''/'''FALSE''') to specify the adjoint state tracer variables whose sensitivity is required, [1:[[NT]],1:[[Ngrids]]] values are expected.<div class="box">[[Variables#Lstate|Lstate(isTvar)]] == F F                      ! NT tracers</div>


== Stochastic Optimals Parameters ==
== Stochastic Optimals Parameters ==
* Logical switches ('''TRUE'''/'''FALSE''') to specify the state variables required by Forcing Singular Vectors or Stochastic Optimals.<div class="box">[[Variables#Fstate|Fstate(isFsur)]] == F                        ! free-surface<br />[[Variables#Fstate|Fstate(isUbar)]] == F                        ! 2D U-momentum<br />[[Variables#Fstate|Fstate(isVbar)]] == F                        ! 2D V-momentum<br />[[Variables#Fstate|Fstate(isUvel)]] == F                        ! 3D U-momentum<br />[[Variables#Fstate|Fstate(isVvel)]] == F                        ! 3D V-momentum<br />[[Variables#Fstate|Fstate(isTvar)]] == F F                      ! NT tracers<br /><br />[[Variables#Fstate|Fstate(isUstr)]] == F                        ! surface U-stress<br />[[Variables#Fstate|Fstate(isVstr)]] == F                        ! surface V-stress<br />[[Variables#Fstate|Fstate(isTsur)]] == F F                      ! NT surface tracers flux</div>


* Stochastic optimals time decorrelation scale (days) assumed for red noise processes.<div class="box">      [[Variables#SO_decay|SO_decay]] == 2.0d0                  ! days</div>
* Stochastic optimals time decorrelation scale (days) assumed for red noise processes.<div class="box">      [[Variables#SO_decay|SO_decay]] == 2.0d0                  ! days</div>


* Logical switches ('''TRUE'''/'''FALSE''') to specify the state surface forcing variable whose stochastic optimals is required.<div class="box">[[Variables#SOstate|SOstate(isUstr)]] == T                       ! surface u-stress<br />[[Variables#SOstate|SOstate(isVstr)]] == T                       ! surface v-stress</div>
* Stochastic Optimals surface forcing standard deviation for dimensionalization.<div class="box">[[Variables#SO_sdev|SO_sdev(isFsur)]] == 1.0d0                  ! free-surface<br />[[Variables#SO_sdev|SO_sdev(isUbar)]] == 1.0d0                  ! 2D U-momentum<br />[[Variables#SO_sdev|SO_sdev(isVbar)]] == 1.0d0                  ! 2D V-momentum<br />[[Variables#SO_sdev|SO_sdev(isUvel)]] == 1.0d0                  ! 3D U-momentum<br />[[Variables#SO_sdev|SO_sdev(isVvel)]] == 1.0d0                  ! 3D V-momentum<br />[[Variables#SO_sdev|SO_sdev(isTvar)]] == 1.0d0 1.0d0            ! NT tracers<br /><br />[[Variables#SOstate|SOstate(isUstr)]] == 1.0d0                  ! surface u-stress<br />[[Variables#SOstate|SOstate(isVstr)]] == 1.0d0                  ! surface v-stress<br />[[Variables#SO_sdev|SO_sdev(isTsur)]] == 1.0d0 1.0d0            ! NT surface tracer flux</div>
 
== History Output Variables Switches ==
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of fields into history output file.<div class="box">[[Variables#Hout|Hout(idUvel)]] == T      ! u                  3D U-velocity<br />[[Variables#Hout|Hout(idVvel)]] == T      ! v                  3D V-velocity<br />[[Variables#Hout|Hout(idu3dE)]] == F      ! u_eastward        3D U-eastward  at RHO-points<br />[[Variables#Hout|Hout(idv3dN)]] == F      ! v_northward        3D V-northward at RHO-points<br />[[Variables#Hout|Hout(idWvel)]] == T      ! w                  3D W-velocity<br />[[Variables#Hout|Hout(idOvel)]] == T      ! omega              omega vertical velocity<br />[[Variables#Hout|Hout(idUbar)]] == T      ! ubar              2D U-velocity<br />[[Variables#Hout|Hout(idVbar)]] == T      ! vbar              2D V-velocity<br />[[Variables#Hout|Hout(idu2dE)]] == F      ! ubar_eastward      2D U-eastward  at RHO-points<br />[[Variables#Hout|Hout(idv2dN)]] == F      ! vbar_northward    2D V-northward at RHO-points<br />[[Variables#Hout|Hout(idFsur)]] == T      ! zeta              free-surface<br />[[Variables#Hout|Hout(idBath)]] == T      ! bath              time-dependent bathymetry<br /><br />[[Variables#Hout|Hout(idTvar)]] == T T    ! temp, salt        temperature and salinity<br /><br />[[Variables#Hout|Hout(idpthR)]] == F      ! z_rho              time-varying depths of RHO-points<br />[[Variables#Hout|Hout(idpthU)]] == F      ! z_u                time-varying depths of U-points<br />[[Variables#Hout|Hout(idpthV)]] == F      ! z_v                time-varying depths of V-points<br />[[Variables#Hout|Hout(idpthW)]] == F      ! z_w                time-varying depths of W-points<br /><br />[[Variables#Hout|Hout(idUsms)]] == F      ! sustr              surface U-stress<br />[[Variables#Hout|Hout(idVsms)]] == F      ! svstr              surface V-stress<br />[[Variables#Hout|Hout(idUbms)]] == F      ! bustr              bottom U-stress<br />[[Variables#Hout|Hout(idVbms)]] == F      ! bvstr              bottom V-stress<br /><br />[[Variables#Hout|Hout(idUbrs)]] == F      ! bustrc            bottom U-current stress<br />[[Variables#Hout|Hout(idVbrs)]] == F      ! bvstrc            bottom V-current stress<br />[[Variables#Hout|Hout(idUbws)]] == F      ! bustrw            bottom U-wave stress<br />[[Variables#Hout|Hout(idVbws)]] == F      ! bvstrw            bottom V-wave stress<br />[[Variables#Hout|Hout(idUbcs)]] == F      ! bustrcwmax        bottom max wave-current U-stress<br />[[Variables#Hout|Hout(idVbcs)]] == F      ! bvstrcwmax        bottom max wave-current V-stress<br /><br />[[Variables#Hout|Hout(idUbot)]] == F      ! Ubot              bed wave orbital U-velocity<br />[[Variables#Hout|Hout(idVbot)]] == F      ! Vbot              bed wave orbital V-velocity<br />[[Variables#Hout|Hout(idUbur)]] == F      ! Ur                bottom U-velocity above bed<br />[[Variables#Hout|Hout(idVbvr)]] == F      ! Vr                bottom V-velocity above bed<br /><br />[[Variables#Hout|Hout(idW2xx)]] == F      ! Sxx_bar            2D radiation stress, Sxx component<br />[[Variables#Hout|Hout(idW2xy)]] == F      ! Sxy_bar            2D radiation stress, Sxy component<br />[[Variables#Hout|Hout(idW2yy)]] == F      ! Syy_bar            2D radiation stress, Syy component<br />[[Variables#Hout|Hout(idU2rs)]] == F      ! Ubar_Rstress      2D radiation U-stress<br />[[Variables#Hout|Hout(idV2rs)]] == F      ! Vbar_Rstress      2D radiation V-stress<br />[[Variables#Hout|Hout(idU2Sd)]] == F      ! ubar_stokes        2D U-Stokes velocity<br />[[Variables#Hout|Hout(idV2Sd)]] == F      ! vbar_stokes        2D V-Stokes velocity<br /><br />[[Variables#Hout|Hout(idW3xx)]] == F      ! Sxx                3D radiation stress, Sxx component<br />[[Variables#Hout|Hout(idW3xy)]] == F      ! Sxy                3D radiation stress, Sxy component<br />[[Variables#Hout|Hout(idW3yy)]] == F      ! Syy                3D radiation stress, Syy component<br />[[Variables#Hout|Hout(idW3zx)]] == F      ! Szx                3D radiation stress, Szx component<br />[[Variables#Hout|Hout(idW3zy)]] == F      ! Szy                3D radiation stress, Szy component<br />[[Variables#Hout|Hout(idU3rs)]] == F      ! u_Rstress          3D U-radiation stress<br />[[Variables#Hout|Hout(idV3rs)]] == F      ! v_Rstress          3D V-radiation stress<br />[[Variables#Hout|Hout(idU3Sd)]] == F      ! u_stokes          3D U-Stokes velocity<br />[[Variables#Hout|Hout(idV3Sd)]] == F      ! v_stokes          3D V-Stokes velocity<br /><br />[[Variables#Hout|Hout(idWamp)]] == F      ! Hwave              wave height<br />[[Variables#Hout|Hout(idWlen)]] == F      ! Lwave              wave length<br />[[Variables#Hout|Hout(idWdir)]] == F      ! Dwave              wave direction<br />[[Variables#Hout|Hout(idWptp)]] == F      ! Pwave_top          wave surface period<br />[[Variables#Hout|Hout(idWpbt)]] == F      ! Pwave_bot          wave bottom period<br />[[Variables#Hout|Hout(idWorb)]] == F      ! Ub_swan            wave bottom orbital velocity<br />[[Variables#Hout|Hout(idWdis)]] == F      ! Wave_dissip        wave dissipation<br /><br />[[Variables#Hout|Hout(idPair)]] == F      ! Pair              surface air pressure<br />[[Variables#Hout|Hout(idUair)]] == F      ! Uair              surface U-wind component<br />[[Variables#Hout|Hout(idVair)]] == F      ! Vair              surface V-wind component<br /><br />[[Variables#Hout|Hout(idTsur)]] == F F    ! shflux, ssflux    surface net heat and salt flux<br />[[Variables#Hout|Hout(idLhea)]] == F      ! latent            latent heat flux<br />[[Variables#Hout|Hout(idShea)]] == F      ! sensible          sensible heat flux<br />[[Variables#Hout|Hout(idLrad)]] == F      ! lwrad              longwave radiation flux<br />[[Variables#Hout|Hout(idSrad)]] == F      ! swrad              shortwave radiation flux<br />[[Variables#Hout|Hout(idEmPf)]] == F      ! EminusP            E-P flux <br />[[Variables#Hout|Hout(idevap)]] == F      ! evaporation        evaporation rate<br />[[Variables#Hout|Hout(idrain)]] == F      ! rain              precipitation rate<br /><br />[[Variables#Hout|Hout(idDano)]] == F      ! rho                density anomaly<br />[[Variables#Hout|Hout(idVvis)]] == F      ! AKv                vertical viscosity<br />[[Variables#Hout|Hout(idTdif)]] == F      ! AKt                vertical T-diffusion<br />[[Variables#Hout|Hout(idSdif)]] == F      ! AKs                vertical Salinity diffusion<br />[[Variables#Hout|Hout(idHsbl)]] == F      ! Hsbl              depth of surface boundary layer<br />[[Variables#Hout|Hout(idHbbl)]] == F      ! Hbbl              depth of bottom boundary layer<br />[[Variables#Hout|Hout(idMtke)]] == F      ! tke                turbulent kinetic energy<br />[[Variables#Hout|Hout(idMtls)]] == F      ! gls                turbulent length scale</div>
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of extra inert passive tracers other than biological and sediment tracers. An inert passive tracer is one that it is only advected and diffused. Other processes are ignored. These tracers include, for example, dyes, pollutants, oil spills, etc. [1:[[NPT]]] values are expected. However, these switches can be activated using compact parameter specification.<div class="box">[[Variables#Hout|Hout(inert)]] == T      ! dye_01, ...        inert passive tracers</div>
 
<!--* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of exposed sediment layer properties into HISTORY output file.  Currently, [[Variables#MBOTP|MBOTP]] properties are expected for the bottom boundary layer and/or sediment models.<div class="box"><span class="twilightBlue">! [[Variables#Hout|idBott]]( 1=isd50)  grain_diameter          mean grain diameter<br />! [[Variables#Hout|idBott]]( 2=idens)  grain_density          mean grain density<br />! [[Variables#Hout|idBott]]( 3=iwsed)  settling_vel            mean settling velocity<br />! [[Variables#Hout|idBott]]( 4=itauc)  erosion_stress          critical erosion stress<br />! [[Variables#Hout|idBott]]( 5=irlen)  ripple_length          ripple length<br />! [[Variables#Hout|idBott]]( 6=irhgt)  ripple_height          ripple height<br />! [[Variables#Hout|idBott]]( 7=ibwav)  bed_wave_amp            wave excursion amplitude<br />! [[Variables#Hout|idBott]]( 8=izdef)  Zo_def                  default bottom roughness<br />! [[Variables#Hout|idBott]]( 9=izapp)  Zo_app                  apparent bottom roughness<br />! [[Variables#Hout|idBott]](10=izNik)  Zo_Nik                  Nikuradse bottom roughness<br />! [[Variables#Hout|idBott]](11=izbio)  Zo_bio                  biological bottom roughness<br />! [[Variables#Hout|idBott]](12=izbfm)  Zo_bedform              bed form bottom roughness<br />! [[Variables#Hout|idBott]](13=izbld)  Zo_bedload              bed load bottom roughness<br />! [[Variables#Hout|idBott]](14=izwbl)  Zo_wbl                  wave bottom roughness<br />! [[Variables#Hout|idBott]](15=iactv)  active_layer_thickness  active layer thickness<br />! [[Variables#Hout|idBott]](16=ishgt)  saltation              saltation height<br />!<br />!                                1 1 1 1 1 1 1<br />!              1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6</span><br /><br />[[Variables#Hout|Hout(idBott)]] == T T T T T T T T T F F F F F F F</div>-->
 
== Quicksave Output Variables Switches ==
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of fields into quicksave output file.<div class="box">[[Variables#Qout|Qout(idUvel)]] == F      ! u                  3D U-velocity<br />[[Variables#Qout|Qout(idVvel)]] == F      ! v                  3D V-velocity<br />[[Variables#Qout|Qout(idu3dE)]] == F      ! u_eastward        3D U-eastward  at RHO-points<br />[[Variables#Qout|Qout(idv3dN)]] == F      ! v_northward        3D V-northward at RHO-points<br />[[Variables#Qout|Qout(idWvel)]] == F      ! w                  3D W-velocity<br />[[Variables#Qout|Qout(idOvel)]] == F      ! omega              omega vertical velocity<br />[[Variables#Qout|Qout(idUbar)]] == T      ! ubar              2D U-velocity<br />[[Variables#Qout|Qout(idVbar)]] == T      ! vbar              2D V-velocity<br />[[Variables#Qout|Qout(idu2dE)]] == T      ! ubar_eastward      2D U-eastward  at RHO-points<br />[[Variables#Qout|Qout(idv2dN)]] == T      ! vbar_northward    2D V-northward at RHO-points<br />[[Variables#Qout|Qout(idFsur)]] == T      ! zeta              free-surface<br />[[Variables#Qout|Qout(idBath)]] == T      ! bath              time-dependent bathymetry<br /><br />[[Variables#Qout|Qout(idTvar)]] == F F    ! temp, salt        temperature and salinity<br /><br />[[Variables#Qout|Qout(idUsur)]] == T      ! u_sur              surface U-velocity<br />[[Variables#Qout|Qout(idVsur)]] == T      ! v_sur              surface V-velocity<br />[[Variables#Qout|Qout(idUsuE)]] == T      ! u_sur_eastward    surface U-eastward  velocity<br />[[Variables#Qout|Qout(idVsuN)]] == T      ! v_sur_northward    surface V-northward velocity<br /><br />[[Variables#Qout|Qout(idsurT)]] == T T    ! temp_sur, salt_sur surface temperature and salinity<br /><br />[[Variables#Qout|Qout(idpthR)]] == F      ! z_rho              time-varying depths of RHO-points<br />[[Variables#Qout|Qout(idpthU)]] == F      ! z_u                time-varying depths of U-points<br />[[Variables#Qout|Qout(idpthV)]] == F      ! z_v                time-varying depths of V-points<br />[[Variables#Qout|Qout(idpthW)]] == F      ! z_w                time-varying depths of W-points<br /><br />[[Variables#Qout|Qout(idUsms)]] == F      ! sustr              surface U-stress<br />[[Variables#Qout|Qout(idVsms)]] == F      ! svstr              surface V-stress<br />[[Variables#Qout|Qout(idUbms)]] == F      ! bustr              bottom U-stress<br />[[Variables#Qout|Qout(idVbms)]] == F      ! bvstr              bottom V-stress<br /><br />[[Variables#Qout|Qout(idUbrs)]] == F      ! bustrc            bottom U-current stress<br />[[Variables#Qout|Qout(idVbrs)]] == F      ! bvstrc            bottom V-current stress<br />[[Variables#Qout|Qout(idUbws)]] == F      ! bustrw            bottom U-wave stress<br />[[Variables#Qout|Qout(idVbws)]] == F      ! bvstrw            bottom V-wave stress<br />[[Variables#Qout|Qout(idUbcs)]] == F      ! bustrcwmax        bottom max wave-current U-stress<br />[[Variables#Qout|Qout(idVbcs)]] == F      ! bvstrcwmax        bottom max wave-current V-stress<br /><br />[[Variables#Qout|Qout(idUbot)]] == F      ! Ubot              bed wave orbital U-velocity<br />[[Variables#Qout|Qout(idVbot)]] == F      ! Vbot              bed wave orbital V-velocity<br />[[Variables#Qout|Qout(idUbur)]] == F      ! Ur                bottom U-velocity above bed<br />[[Variables#Qout|Qout(idVbvr)]] == F      ! Vr                bottom V-velocity above bed<br /><br />[[Variables#Qout|Qout(idW2xx)]] == F      ! Sxx_bar            2D radiation stress, Sxx component<br />[[Variables#Qout|Qout(idW2xy)]] == F      ! Sxy_bar            2D radiation stress, Sxy component<br />[[Variables#Qout|Qout(idW2yy)]] == F      ! Syy_bar            2D radiation stress, Syy component<br />[[Variables#Qout|Qout(idU2rs)]] == F      ! Ubar_Rstress      2D radiation U-stress<br />[[Variables#Qout|Qout(idV2rs)]] == F      ! Vbar_Rstress      2D radiation V-stress<br />[[Variables#Qout|Qout(idU2Sd)]] == F      ! ubar_stokes        2D U-Stokes velocity<br />[[Variables#Qout|Qout(idV2Sd)]] == F      ! vbar_stokes        2D V-Stokes velocity<br /><br />[[Variables#Qout|Qout(idW3xx)]] == F      ! Sxx                3D radiation stress, Sxx component<br />[[Variables#Qout|Qout(idW3xy)]] == F      ! Sxy                3D radiation stress, Sxy component<br />[[Variables#Qout|Qout(idW3yy)]] == F      ! Syy                3D radiation stress, Syy component<br />[[Variables#Qout|Qout(idW3zx)]] == F      ! Szx                3D radiation stress, Szx component<br />[[Variables#Qout|Qout(idW3zy)]] == F      ! Szy                3D radiation stress, Szy component<br />[[Variables#Qout|Qout(idU3rs)]] == F      ! u_Rstress          3D U-radiation stress<br />[[Variables#Qout|Qout(idV3rs)]] == F      ! v_Rstress          3D V-radiation stress<br />[[Variables#Qout|Qout(idU3Sd)]] == F      ! u_stokes          3D U-Stokes velocity<br />[[Variables#Qout|Qout(idV3Sd)]] == F      ! v_stokes          3D V-Stokes velocity<br /><br />[[Variables#Qout|Qout(idWamp)]] == F      ! Hwave              wave height<br />[[Variables#Qout|Qout(idWlen)]] == F      ! Lwave              wave length<br />[[Variables#Qout|Qout(idWdir)]] == F      ! Dwave              wave direction<br />[[Variables#Qout|Qout(idWptp)]] == F      ! Pwave_top          wave surface period<br />[[Variables#Qout|Qout(idWpbt)]] == F      ! Pwave_bot          wave bottom period<br />[[Variables#Qout|Qout(idWorb)]] == F      ! Ub_swan            wave bottom orbital velocity<br />[[Variables#Qout|Qout(idWdis)]] == F      ! Wave_dissip        wave dissipation<br /><br />[[Variables#Qout|Qout(idPair)]] == F      ! Pair              surface air pressure<br />[[Variables#Qout|Qout(idUair)]] == F      ! Uair              surface U-wind component<br />[[Variables#Qout|Qout(idVair)]] == F      ! Vair              surface V-wind component<br /><br />[[Variables#Qout|Qout(idTsur)]] == F F    ! shflux, ssflux    surface net heat and salt flux<br />[[Variables#Qout|Qout(idLhea)]] == F      ! latent            latent heat flux<br />[[Variables#Qout|Qout(idShea)]] == F      ! sensible          sensible heat flux<br />[[Variables#Qout|Qout(idLrad)]] == F      ! lwrad              longwave radiation flux<br />[[Variables#Qout|Qout(idSrad)]] == F      ! swrad              shortwave radiation flux<br />[[Variables#Qout|Qout(idEmPf)]] == F      ! EminusP            E-P flux <br />[[Variables#Qout|Qout(idevap)]] == F      ! evaporation        evaporation rate<br />[[Variables#Qout|Qout(idrain)]] == F      ! rain              precipitation rate<br /><br />[[Variables#Qout|Qout(idDano)]] == F      ! rho                density anomaly<br />[[Variables#Qout|Qout(idVvis)]] == F      ! AKv                vertical viscosity<br />[[Variables#Qout|Qout(idTdif)]] == F      ! AKt                vertical T-diffusion<br />[[Variables#Qout|Qout(idSdif)]] == F      ! AKs                vertical Salinity diffusion<br />[[Variables#Qout|Qout(idHsbl)]] == F      ! Hsbl              depth of surface boundary layer<br />[[Variables#Qout|Qout(idHbbl)]] == F      ! Hbbl              depth of bottom boundary layer<br />[[Variables#Qout|Qout(idMtke)]] == F      ! tke                turbulent kinetic energy<br />[[Variables#Qout|Qout(idMtls)]] == F      ! gls                turbulent length scale</div>
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of extra inert passive tracers other than biological and sediment tracers into the quicksave output file. An inert passive tracer is one that it is only advected and diffused. Other processes are ignored. These tracers include, for example, dyes, pollutants, oil spills, etc. [1:[[NPT]]] values are expected. However, these switches can be activated using compact parameter specification.<div class="box">[[Variables#Qout|Qout(inert)]] == F      ! dye_01, ...        inert passive tracers<br />[[Variables#Qout|Qout(Snert)]] == F      ! dye_01, ...        surface inert passive tracers</div>
 
 
== Time-averaged Output Variables Switches ==
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of fields into time-averaged output file.<div class="box">[[Variables#Aout|Aout(idUvel)]] == T      ! u                  3D U-velocityy<br />[[Variables#Aout|Aout(idVvel)]] == T      ! v                  3D V-velocity<br />[[Variables#Aout|Aout(idu3dE)]] == F      ! u_eastward        3D U-eastward  at RHO-points<br />[[Variables#Aout|Aout(idv3dN)]] == F      ! v_northward        3D V-northward at RHO-points<br />[[Variables#Aout|Aout(idWvel)]] == T      ! w                  3D W-velocity<br />[[Variables#Aout|Aout(idOvel)]] == T      ! omega              omega vertical velocity<br />[[Variables#Aout|Aout(idUbar)]] == T      ! ubar              2D U-velocity<br />[[Variables#Aout|Aout(idVbar)]] == T      ! vbar              2D V-velocity<br />[[Variables#Aout|Aout(idu2dE)]] == F      ! ubar_eastward      2D U-eastward  at RHO-points<br />[[Variables#Aout|Aout(idv2dN)]] == F      ! vbar_northward    2D V-northward at RHO-points<br />[[Variables#Aout|Aout(idFsur)]] == T      ! zeta              free-surface<br />[[Variables#Aout|Aout(idTvar)]] == T T    ! temp, salt        temperature and salinity<br /><br />[[Variables#Aout|Aout(idUsms)]] == F      ! sustr              surface U-stress<br />[[Variables#Aout|Aout(idVsms)]] == F      ! svstr              surface V-stress<br />[[Variables#Aout|Aout(idUbms)]] == F      ! bustr              bottom U-stress<br />[[Variables#Aout|Aout(idVbms)]] == F      ! bvstr              bottom V-stress<br /><br />[[Variables#Aout|Aout(idW2xx)]] == F      ! Sxx_bar            2D radiation stress, Sxx component<br />[[Variables#Aout|Aout(idW2xy)]] == F      ! Sxy_bar            2D radiation stress, Sxy component<br />[[Variables#Aout|Aout(idW2yy)]] == F      ! Syy_bar            2D radiation stress, Syy component<br />[[Variables#Aout|Aout(idU2rs)]] == F      ! Ubar_Rstress      2D radiation U-stress<br />[[Variables#Aout|Aout(idV2rs)]] == F      ! Vbar_Rstress      2D radiation V-stress<br />[[Variables#Aout|Aout(idU2Sd)]] == F      ! ubar_stokes        2D U-Stokes velocity<br />[[Variables#Aout|Aout(idV2Sd)]] == F      ! vbar_stokes        2D V-Stokes velocity<br /><br />[[Variables#Aout|Aout(idW3xx)]] == F      ! Sxx                3D radiation stress, Sxx component<br />[[Variables#Aout|Aout(idW3xy)]] == F      ! Sxy                3D radiation stress, Sxy component<br />[[Variables#Aout|Aout(idW3yy)]] == F      ! Syy                3D radiation stress, Syy component<br />[[Variables#Aout|Aout(idW3zx)]] == F      ! Szx                3D radiation stress, Szx component<br />[[Variables#Aout|Aout(idW3zy)]] == F      ! Szy                3D radiation stress, Szy component<br />[[Variables#Aout|Aout(idU3rs)]] == F      ! u_Rstress          3D U-radiation stress<br />[[Variables#Aout|Aout(idV3rs)]] == F      ! v_Rstress          3D V-radiation stress<br />[[Variables#Aout|Aout(idU3Sd)]] == F      ! u_stokes          3D U-Stokes velocity<br />[[Variables#Aout|Aout(idV3Sd)]] == F      ! v_stokes          3D V-Stokes velocity<br /><br />[[Variables#Aout|Aout(idPair)]] == F      ! Pair              surface air pressure<br />[[Variables#Aout|Aout(idUair)]] == F      ! Uair              surface U-wind component<br />[[Variables#Aout|Aout(idVair)]] == F      ! Vair              surface V-wind component<br /><br />[[Variables#Aout|Aout(idTsur)]] == F F    ! shflux, ssflux    surface net heat and salt flux<br />[[Variables#Aout|Aout(idLhea)]] == F      ! latent            latent heat flux<br />[[Variables#Aout|Aout(idShea)]] == F      ! sensible          sensible heat flux<br />[[Variables#Aout|Aout(idLrad)]] == F      ! lwrad              longwave radiation flux<br />[[Variables#Aout|Aout(idSrad)]] == F      ! swrad              shortwave radiation flux<br />[[Variables#Aout|Aout(idevap)]] == F      ! evaporation        evaporation rate<br />[[Variables#Aout|Aout(idrain)]] == F      ! rain              precipitation rate<br /><br />[[Variables#Aout|Aout(idDano)]] == F      ! rho                density anomaly<br />[[Variables#Aout|Aout(idVvis)]] == F      ! AKv                vertical viscosity<br />[[Variables#Aout|Aout(idTdif)]] == F      ! AKt                vertical T-diffusion<br />[[Variables#Aout|Aout(idSdif)]] == F      ! AKs                vertical Salinity diffusion<br />[[Variables#Aout|Aout(idHsbl)]] == F      ! Hsbl              depth of surface boundary layer<br />[[Variables#Aout|Aout(idHbbl)]] == F      ! Hbbl              depth of bottom boundary layer<br /><br />[[Variables#Aout|Aout(id2dRV)]] == F      ! pvorticity_bar    2D relative vorticity<br />[[Variables#Aout|Aout(id3dRV)]] == F      ! pvorticity        3D relative vorticity<br />[[Variables#Aout|Aout(id2dPV)]] == F      ! rvorticity_bar    2D potential vorticity<br />[[Variables#Aout|Aout(id3dPV)]] == F      ! rvorticity        3D potential vorticity<br /><br />[[Variables#Aout|Aout(idu3dD)]] == F      ! u_detided          detided 3D U-velocity<br />[[Variables#Aout|Aout(idv3dD)]] == F      ! v_detided          detided 3D V-velocity<br />[[Variables#Aout|Aout(idu2dD)]] == F      ! ubar_detided      detided 2D U-velocity<br />[[Variables#Aout|Aout(idu3dD)]] == F      ! vbar_detided      detided 2D V-velocity<br />[[Variables#Aout|Aout(idFsuD)]] == F      ! zeta_detided      detided free-surface<br /><br />[[Variables#Aout|Aout(idTrcD)]] == F F    ! temp_detided, ...  detided temperature and salinity<br /><br />[[Variables#Aout|Aout(idHUav)]] == F      ! Huon              u-volume flux, Huon<br />[[Variables#Aout|Aout(idHVav)]] == F      ! Hvom              v-volume flux, Hvom<br />[[Variables#Aout|Aout(idUUav)]] == F      ! uu                quadratic &lt;u*u&gt; term<br />[[Variables#Aout|Aout(idUVav)]] == F      ! uv                quadratic &lt;u*v&gt; term<br />[[Variables#Aout|Aout(idVVav)]] == F      ! vv                quadratic &lt;v*v&gt; term<br />[[Variables#Aout|Aout(idU2av)]] == F      ! ubar2              quadratic &lt;ubar*ubar&gt; term<br />[[Variables#Aout|Aout(idV2av)]] == F      ! vbar2              quadratic &lt;vbar*vbar&gt; term<br />[[Variables#Aout|Aout(idZZav)]] == F      ! zeta2              quadratic &lt;zeta*zeta&gt; term<br /><br />[[Variables#Aout|Aout(idTTav)]] == F F    ! temp2, ...        quadratic &lt;t*t&gt; tracer terms<br />[[Variables#Aout|Aout(idUTav)]] == F F    ! utemp, ...        quadratic &lt;u*t&gt; tracer terms<br />[[Variables#Aout|Aout(idVTav)]] == F F    ! vtemp, ...        quadratic &lt;v*t&gt; tracer terms<br />[[Variables#Aout|Aout(iHUTav)]] == F F    ! Huontemp, ...      tracer volume flux, &lt;Huon*t&gt;<br />[[Variables#Aout|Aout(iHVTav)]] == F F    ! Hvomtemp, ...      tracer volume flux, &lt;Hvom*t&gt;</div>
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of extra inert passive tracers other than biological and sediment tracers into the time-averaged output file. An inert passive tracer is one that it is only advected and diffused. Other processes are ignored. These tracers include, for example, dyes, pollutants, oil spills, etc. [1:[[NPT]],1:[[Ngrids]]] values are expected. However, these switches can be activated using compact parameter specification.<div class="box">[[Variables#Aout|Aout(inert)]] == T      ! dye_01, ...        inert passive tracers</div>
 
== Time-averaged Diagnostic Output Variables Switches ==
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing time-averaged. 2D momentum (ubar, vbar) diagnostic terms into the diagnostics output file.<div class="box">[[Variables#Dout|Dout(M2rate)]] == T      ! ubar_accel, ...    acceleration<br />[[Variables#Dout|Dout(M2pgrd)]] == T      ! ubar_prsgrd, ...  pressure gradient<br />[[Variables#Dout|Dout(M2fcor)]] == T      ! ubar_cor, ...      Coriolis force<br />[[Variables#Dout|Dout(M2hadv)]] == T      ! ubar_hadv, ...    horizontal total advection<br />[[Variables#Dout|Dout(M2xadv)]] == T      ! ubar_xadv, ...    horizontal XI-advection<br />[[Variables#Dout|Dout(M2yadv)]] == T      ! ubar_yadv, ...    horizontal ETA-advection<br />[[Variables#Dout|Dout(M2hrad)]] == T      ! ubar_hrad, ...    horizontal total radiation stress<br />[[Variables#Dout|Dout(M2hvis)]] == T      ! ubar_hvisc, ...    horizontal total viscosity<br />[[Variables#Dout|Dout(M2xvis)]] == T      ! ubar_xvisc, ...    horizontal XI-viscosity<br />[[Variables#Dout|Dout(M2yvis)]] == T      ! ubar_yvisc, ...    horizontal ETA-viscosity<br />[[Variables#Dout|Dout(M2sstr)]] == T       ! ubar_sstr, ...    surface stress<br />[[Variables#Dout|Dout(M2bstr)]] == T      ! ubar_bstr, ...    bottom stress</div>
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of time-averaged, 3D momentum (u,v) diagnostic terms into the diagnostics output file.                              <div class="box">[[Variables#Dout|Dout(M3rate)]] == T      ! u_accel, ...      acceleration<br />[[Variables#Dout|Dout(M3pgrd)]] == T      ! u_prsgrd, ...      pressure gradient<br />[[Variables#Dout|Dout(M3fcor)]] == T      ! u_cor, ...        Coriolis force<br />[[Variables#Dout|Dout(M3hadv)]] == T      ! u_hadv, ...        horizontal total advection<br />[[Variables#Dout|Dout(M3xadv)]] == T      ! u_xadv, ...        horizontal XI-advection<br />[[Variables#Dout|Dout(M3yadv)]] == T      ! u_yadv, ...        horizontal ETA-advection<br />[[Variables#Dout|Dout(M3vadv)]] == T      ! u_vadv, ...        vertical advection<br />[[Variables#Dout|Dout(M3hrad)]] == T      ! u_hrad, ...        horizontal total radiation stress<br />[[Variables#Dout|Dout(M3vrad)]] == T      ! u_vrad, ...        vertical radiation stress<br />[[Variables#Dout|Dout(M3hvis)]] == T      ! u_hvisc, ...      horizontal total viscosity<br />[[Variables#Dout|Dout(M3xvis)]] == T      ! u_xvisc, ...      horizontal XI-viscosity<br />[[Variables#Dout|Dout(M3yvis)]] == T      ! u_yvisc, ...      horizontal ETA-viscosity<br />[[Variables#Dout|Dout(M3vvis)]] == T      ! u_vvisc, ...      vertical viscosity</div>
 
* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of time-averaged, active (temperature and salinity) and passive (inert) tracer diagnostic terms into the diagnostics output file. [1:[[NAT]]+[[NPT]],1:[[Ngrids]]] values are expected.<div class="box">[[Variables#Dout|Dout(iTrate)]] == T T    ! temp_rate, ...    time rate of change<br />[[Variables#Dout|Dout(iThadv)]] == T T    ! temp_hadv, ...    horizontal total advection<br />[[Variables#Dout|Dout(iTxadv)]] == T T    ! temp_xadv, ...    horizontal XI-advection<br />[[Variables#Dout|Dout(iTyadv)]] == T T    ! temp_yadv, ...    horizontal ETA-advection<br />[[Variables#Dout|Dout(iTvadv)]] == T T    ! temp_vadv, ...    vertical advection<br />[[Variables#Dout|Dout(iThdif)]] == T T    ! temp_hdiff, ...    horizontal total diffusion<br />[[Variables#Dout|Dout(iTxdif)]] == T T    ! temp_xdiff, ...    horizontal XI-diffusion<br />[[Variables#Dout|Dout(iTydif)]] == T T    ! temp_ydiff, ...    horizontal ETA-diffusion<br />[[Variables#Dout|Dout(iTsdif)]] == T T    ! temp_sdiff, ...    horizontal S-diffusion<br />[[Variables#Dout|Dout(iTvdif)]] == T T    ! temp_vdiff, ...    vertical diffusion</div>
 
== Generic User Parameters ==
<section begin=user />
* [[Variables#Nuser|NUSER]] is the number (integer) of user parameters to consider. [[Variables#user|USER]] is a vector containing [[Variables#Nuser|NUSER]] user parameters (real array).<div class="box">      [[Variables#Nuser|NUSER]] =  0<br />        [[Variables#user|USER]] =  0.d0</div>This array is primarily used with the [[Options#SANITY_CHECK|SANITY_CHECK]] to test the correctness of the tangent linear adjoint models. It contains the model variable and grid point to perturb:<div class="box">!                INT([[Variables#user|user]](1)):  tangent state variable to perturb<br>!                INT([[Variables#user|user]](2)):  adjoint state variable to perturb<br>!                              [ [[Variables#isFsur|isFsur]] = 1 ]  free-surface<br>!                              [ [[Variables#isUbar|isUbar]] = 2 ]  2D U-momentum<br>!                              [ [[Variables#isVbar|isVbar]] = 3 ]  2D V-momentum<br>!                              [ [[Variables#isUvel|isUvel]] = 4 ]  3D U-momentum<br>!                              [ [[Variables#isVvel|isVvel]] = 5 ]  3D V-momentum<br>!                              [ [[Variables#isTvar|isTvar]] = 6 ]  First tracer (temperature)<br>!                              [  ...      ]  ...<br>!                              [ [[Variables#isTvar|isTvar]] = ? ]  Last tracer<br>!          <br>!                INT([[Variables#user|user]](3)):  I-index of tangent variable to perturb<br>!                INT([[Variables#user|user]](4)):  I-index of adjoint variable to perturb<br>!                INT([[Variables#user|user]](5)):  J-index of tangent variable to perturb<br>!                INT([[Variables#user|user]](6)):  J-index of adjoint variable to perturb<br>!                INT([[Variables#user|user]](7)):  K-index of tangent variable to perturb, if 3D<br>!                INT([[Variables#user|user]](8)):  K-index of adjoint variable to perturb, if 3D</div>Set tangent and adjoint parameters to the same values if perturbing and reporting the same variable.
 
* This parameter could also be used to adjust constants in analytical functions at run time.
<section end=user />
 
==Parallel I/O (PIO and SCORPIO) Parameters==
<section begin=PIO />
* Choose the input and output NetCDF library to use. For example, the user could choose to use the PIO library for writing but still use the standard library for reading. <span class="twilightBlue">To use this Parallel I/O strategy, the '''PIO''' or '''SCORPIO''' library must be linked to ROMS at compile time and the [[PIO_LIB]] CPP option needs to be activated. It is only available in distributed-memory applications since it uses MPI-IO.</span> <div class="box">!  [1] Standard NetCDF-3 or NetCDF-4 library<br />!  [2] Parallel-IO from PIO or SCORPIO library (MPI, MPI-IO applications)<br /><br />    [[Variables#INP_LIB|INP_LIB]] =  2<br />    [[Variables#OUT_LIB|OUT_LIB]] =  2</div>


* Logical switches ('''TRUE'''/'''FALSE''') to specify the surface tracer forcing variable whose stochastic optimals is required, [1:[[NT]],1:[[Ngrids]]] values are expected.<div class="box">[[Variables#SOstate|SOstate(isTsur)]] == F F                    ! surface tracer flux</div>
* PIO and SCORPIO offer several methods for reading/writing NetCDF files. SCORPIO also offers ADIOS but that is not implemented in ROMS. Depending on the build of the PIO or SCORPIO libraries, not all the I/O types are available. If the NetCDF library does not support parallel I/O, methods 3 and 4 are not available. Currently, NetCDF4/HDF5 data compression is possible with method 3 during serial write.<div class="box">!  [0] parallel read and parallel write of PnetCDF (CDF-5 type files, not recommended because of post-processing)<br />!  [1] parallel read and parallel write of NetCDF3 (64-bit offset)<br />!  [2] serial  read and serial  write of NetCDF3 (64-bit offset)<br />!  [3] parallel read and serial  write of NetCDF4/HDF5<br />!  [4] parallel read and parallel write of NETCDF4/HDF5<br /><br />  [[Variables#PIO_METHOD|PIO_METHOD]] = 2</div>


* Stochastic optimals surface forcing standard deviation for dimensionalization.<div class="box">[[Variables#SO_sdev|SO_sdev(isUstr)]] == 1.0d0                  ! surface u-stress<br />[[Variables#SO_sdev|SO_sdev(isVstr)]] == 1.0d0                  ! surface v-stress<br />[[Variables#SO_sdev|SO_sdev(isTsur)]] == 1.0d0 1.0d0            ! NT surface tracer flux</div>
* Parallel-IO tasks control parameters. Typically, it is advantageous and highly recommended to define the I/O decomposition in smaller number of processes for efficiency and to avoid MPI communications bottlenecks.<div class="box"> [[Variables#PIO_IOTASKS|PIO_IOTASKS]] = 1                 ! number of I/O processes to define<br /> [[Variables#PIO_STRIDE|PIO_STRIDE]] = 1                 ! stride in the MPI-rank between I/O processes<br />   [[Variables#PIO_BASE|PIO_BASE]] = 0                ! offset for the first I/O process<br />  [[Variables#PIO_AGGREG|PIO_AGGREG]] = 1                 ! number of MPI-aggregators to use</div>


== Output Variables Switches ==
* Parallel-IO (PIO or SCORPIO) rearranger methods for moving data between computational and I/O processes. It provides the ability to rearrange data between computational and parallel I/O decompositions. Usually the Box rearrangement is more efficient.<div class="box">!  [1] Box rearrangement<br />!  [2] Subset rearrangement<br /><br />  [[Variables#PIO_REARR|PIO_REARR]] = 1</div>
**In the '''box''' method, data is rearranged from computational to I/O processes in a continuous manner to the data ordering in the file. Since the ordering of data between computational and I/O partitions may be different, the rearrangement will require all-to-all MPI communications. Also, notice that each computing tile may transfer data to one or more I/O processes.
**In the '''subset''' method, each I/O process is associated with a subset of computing processes. The computing tile sends its data to a unique I/O process. The data on I/O processes may be more fragmented to the ordering on disk, which may increase the communications to the storage medium. However, the rearrangement scales better since all-to-all MPI communications are not required.


* Logical switches (TRUE/FALSE) to activate writing of fields into history output file. If CPP option [[AVERAGES]] is defined, these switches will cause the samedata to be averaged and written to the averages file.<div class="box">[[Variables#Hout|Hout(idUvel)]] == T                          ! 3D U-velocity<br />[[Variables#Hout|Hout(idVvel)]] == T                          ! 3D V-velocity<br />[[Variables#Hout|Hout(idWvel)]] == T                          ! 3D W-velocity<br />[[Variables#Hout|Hout(idOvel)]] == T                          ! omega vertical velocity<br />[[Variables#Hout|Hout(idUbar)]] == T                          ! 2D U-velocity<br />[[Variables#Hout|Hout(idVbar)]] == T                          ! 2D V-velocity<br />[[Variables#Hout|Hout(idFsur)]] == T                          ! free-surface<br /><br />[[Variables#Hout|Hout(idTvar)]] == T T                        ! temperature and salinity<br /><br />[[Variables#Hout|Hout(idUsms)]] == F                          ! surface U-stress<br />[[Variables#Hout|Hout(idVsms)]] == F                          ! surface V-stress<br />[[Variables#Hout|Hout(idUbms)]] == F                          ! bottom U-stress<br />[[Variables#Hout|Hout(idVbms)]] == F                          ! bottom V-stress<br />[[Variables#Hout|Hout(idUbrs)]] == F                          ! bottom U-current stress<br />[[Variables#Hout|Hout(idVbrs)]] == F                          ! bottom V-current stress<br />[[Variables#Hout|Hout(idUbws)]] == F                          ! bottom U-wave stress<br />[[Variables#Hout|Hout(idVbws)]] == F                          ! bottom V-wave stress<br />[[Variables#Hout|Hout(idUbcs)]] == F                          ! bottom max wave-current U-stress<br />[[Variables#Hout|Hout(idVbcs)]] == F                          ! bottom max wave-current V-stress<br /><br />[[Variables#Hout|Hout(idUbot)]] == F                          ! bed wave orbital U-velocity<br />[[Variables#Hout|Hout(idVbot)]] == F                          ! bed wave orbital V-velocity<br />[[Variables#Hout|Hout(idUbur)]] == F                          ! bottom U-velocity above bed<br />[[Variables#Hout|Hout(idVbvr)]] == F                          ! bottom V-velocity above bed<br /><br />[[Variables#Hout|Hout(idTsur)]] == F F                        ! surface net heat and salt flux<br />[[Variables#Hout|Hout(idLhea)]] == F                          ! latent heat flux<br />[[Variables#Hout|Hout(idShea)]] == F                          ! sensible heat flux<br />[[Variables#Hout|Hout(idLrad)]] == F                          ! longwave radiation flux<br />[[Variables#Hout|Hout(idSrad)]] == F                          ! shortwave radiation flux<br />[[Variables#Hout|Hout(idevap)]] == F                          ! evaporation rate<br />[[Variables#Hout|Hout(idrain)]] == F                          ! precipitation rate<br /><br />[[Variables#Hout|Hout(idDano)]] == F                          ! density anomaly<br />[[Variables#Hout|Hout(idVvis)]] == F                          ! vertical viscosity<br />[[Variables#Hout|Hout(idTdif)]] == F                          ! vertical T-diffusion<br />[[Variables#Hout|Hout(idSdif)]] == F                          ! vertical Salinity diffusion<br />[[Variables#Hout|Hout(idHsbl)]] == F                          ! depth of surface boundary layer<br />[[Variables#Hout|Hout(idHbbl)]] == F                          ! depth of bottom boundary layer<br />[[Variables#Hout|Hout(idMtke)]] == F                          ! turbulent kinetic energy<br />[[Variables#Hout|Hout(idMtls)]] == F                          ! turbulent length scale</div>
* Parallel-IO (PIO or SCORPIO) rearranger flag for MPI communication between computational and I/O processes. In some systems, the Point-to-Point communications is more efficient. <div class="box">!   [0] Point-to-Point communications<br />!   [1] Collective communications<br /><br />[[Variables#PIO_REARRCOM|PIO_REARRCOM]] = 0</div>


* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of extra inert passive tracers other than biological and sediment tracers. An inert passive tracer is one that it is only advected and diffused. Other processes are ignored. These tracers include, for example, dyes, pollutants, oil spills, etc. [1:[[NPT]],1:[[Ngrids]]] values are expected. However, these switches can be activated using compact parameter specification.<div class="box">[[Variables#Hout|Hout(inert)]] == T                          ! inert passive tracers</div>
* Parallel-IO (PIO or SCORPIO) rearranger flow-control direction flag for MPI communications between computational and I/O processes. The flow algorithm controls the rate and volume of messages sent to any destination MPI process. Optimally, the MPI communications should be designed to send a modest number of messages evenly distributed across a number of processes. An excessive number of messages to a single MPI process can exhaust the buffer space which can affect efficiency or failure due to the slowdown in the retransmitting of dropped messages. It only sends messages (Isend) when the receiver is ready and has sufficient resources.<div class="box">!  [0] Enable computational to I/O processes, and vice versa<br />!  [1] Enable computational to I/O processes only<br />!  [2] Enable I/O to computational processes only<br />!  [3] Disable flow control<br /><br />[[Variables#PIO_REARRDIR|PIO_REARRDIR]] = 0</div>


* Logical switches ('''TRUE'''/'''FALSE''') to activate writing of exposed sediment layer properties into HISTORY output file.  Currently, [[Variables#MBOTP|MBOTP]] properties are expected for the bottom boundary layer and/or sediment models.<div class="box"><span class="twilightBlue">!  [[Variables#Hout|Hout(idBott(isd50))]], [[Variables#isd50|isd50]] = 1        ! mean grain diameter<br />!  [[Variables#Hout|Hout(idBott(idens))]], [[Variables#idens|idens]] = 2        ! mean grain density<br />!   [[Variables#Hout|Hout(idBott(iwsed))]],  [[Variables#iwsed|iwsed]] = 3        ! mean settling velocity<br />!  [[Variables#Hout|Hout(idBott(itauc))]],  [[Variables#itauc|itauc]] = 4        ! critical erosion stress<br />!  [[Variables#Hout|Hout(idBott(irlen))]],  [[Variables#irlen|irlen]] = 5        ! ripple length<br />!  [[Variables#Hout|Hout(idBott(irhgt))]], [[Variables#irhgt|irhgt]] = 6        ! ripple height<br />!   [[Variables#Hout|Hout(idBott(ibwav))]],  [[Variables#ibwav|ibwav]] = 7        ! wave excursion amplitude<br />!  [[Variables#Hout|Hout(idBott(izdef))]],  [[Variables#izdef|izdef]] = 8        ! default bottom roughness<br />!  [[Variables#Hout|Hout(idBott(izapp))]], [[Variables#izapp|izapp]] = 9        ! apparent bottom roughness<br />!  [[Variables#Hout|Hout(idBott(izNik))]],  [[Variables#izNik|izNik]] = 10      ! Nikuradse bottom roughness<br />!  [[Variables#Hout|Hout(idBott(izbio))]],  [[Variables#izbio|izbio]] = 11      ! biological bottom roughness<br />!  [[Variables#Hout|Hout(idBott(izbfm))]],  [[Variables#izbfm|izbfm]] = 12      ! bed form bottom roughness<br />!  [[Variables#Hout|Hout(idBott(izbld))]], [[Variables#izbld|izbld]] = 13      ! bed load bottom roughness<br />!  [[Variables#Hout|Hout(idBott(izwbl))]],  [[Variables#izwbl|izwbl]] = 14      ! wave bottom roughness<br />!  [[Variables#Hout|Hout(idBott(iactv))]],  [[Variables#iactv|iactv]] = 15      ! active layer thickness<br />!  [[Variables#Hout|Hout(idBott(ishgt))]],  [[Variables#ishgt|ishgt]] = 16      ! saltation height<br />!<br />!                                1 1 1 1 1 1 1<br />!              1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6<br /></span><br />[[Variables#Hout|Hout(idBott)]] == T T T T T T T T T F F F F F F F</div>
* Parallel-IO (PIO or SCORPIO) rearranger options for MPI communications from computational to I/O processes (C2I). <div class="box">  [[Variables#PIO_C2I_HS|PIO_C2I_HS]] =  T                ! Enable C2I handshake (T/F)<br />[[Variables#PIO_C2I_Send|PIO_C2I_Send]] =  F                ! Enable C2I Isends (T/F)<br />  [[Variables#PIO_I2C_HS|PIO_I2C_HS]] =  64                ! Maximum pending C2I requests</div>


== User Parameters ==
* Parallel-IO (PIO or SCORPIO) rearranger options for MPI communications from I/O to computational processes (I2C). <div class="box">  [[Variables#PIO_I2C_HS|PIO_I2C_HS]] = F                ! Enable I2C handshake (T/F)<br />[[Variables#PIO_I2C_Send|PIO_I2C_Send]] = T                ! Enable I2C Isends (T/F)<br />[[Variables#PIO_I2C_Preq|PIO_I2C_Preq]] = 65                ! Maximum pending I2C requests</div><section end=PIO />


* Generic User parameters, [1:NUSER] values are expected.<div class="box">       [[Variables#Nuser|NUSER]] =  0<br />       [[Variables#user|USER]] =  0.d0</div>
==NetCDF-4/HDF5 Compression Parameters==
 
* NetCDF-4/HDF5 compression parameters for output files. This capability is used when both [[Options#HDF5|HDF5]] and [[Options#DEFLATE|DEFLATE]] C-preprocessing options are activated. The user needs to compile with the NetCDF-4/HDF5 and MPI libraries. File deflation cannot be used in parallel I/O for writing libraries. File deflation cannot be used in parallel I/O for writing to exactly map the data to the disk location.  For more information, check [http://www.unidata.ucar.edu/software/netcdf NetCDF official website].<div class="box"> [[Variables#shuffle|NC_SHUFFLE]] =  1                ! if non-zero, turn on shuffle filter<br>  [[Variables#deflate|NC_DEFLATE]] =  1                ! if non-zero, turn on deflate filter<br>   [[Variables#dlevel|NC_DLEVEL]] =  1                ! deflate level [0-9]</div>


== Input NetCDF Files ==
== Input NetCDF Files ==


* Input NetCDF file names, [1:Ngrids] values are expected.<div class="box">    [[Variables#GRDname|GRDNAME]] == ocean_grd.nc              ! Grid<br />    [[Variables#INIname|ININAME]] == ocean_ini.nc              ! NLM initial conditions<br />    [[Variables#ITLname|ITLNAME]] == ocean_itl.nc              ! TLM initial conditions<br />    [[Variables#IRPname|IRPNAME]] == ocean_irp.nc              ! RPM initial conditions<br />    [[Variables#IADname|IADNAME]] == ocean_iad.nc              ! ADM initial conditions<br />    [[Variables#CLMname|CLMNAME]] == ocean_clm.nc              ! Climatology<br />    [[Variables#BRYname|BRYNAME]] == ocean_bry.nc              ! Open boundary conditions<br />    [[Variables#FWDname|FWDNAME]] == ocean_fwd.nc              ! Forward trajectory<br />    [[Variables#ADSname|ADSNAME]] == ocean_ads.nc               ! Adjoint sensitivity functionals</div>
{{note}}'''NOTE:''' Starting with '''revision 460''' file names can be up to 256 characters long. Previously only 80 characters were allowed.
 
* Input NetCDF file names, [1:Ngrids] values are expected.<div class="box">    [[Variables#GRD|GRDNAME]] == roms_grd.nc              ! Grid<br />    [[Variables#INI|ININAME]] == roms_ini.nc              ! NLM initial conditions<br />    [[Variables#ITL|ITLNAME]] == roms_itl.nc              ! TLM initial conditions<br />    [[Variables#IRP|IRPNAME]] == roms_irp.nc              ! RPM initial conditions<br />    [[Variables#IAD|IADNAME]] == roms_iad.nc              ! ADM initial conditions<br />    [[Variables#FWD|FWDNAME]] == roms_fwd.nc              ! Forward trajectory<br />    [[Variables#ADS|ADSNAME]] == roms_ads.nc              ! Adjoint sensitivity functionals</div>
 
* Input adjoint forcing NetCDF filenames for computing observations impacts during the analysis-forecast cycle. If the forecast error metric is defined in state-space, then [[Variables#FOIA|FOInameA]] and [[Variables#FOIB|FOInameB]] should be regular adjoint forcing files just like [[Variables#ADS|ADSNAME]]. If the forecast error metric is defined in observation space ([[Options#OBS_SPACE|OBS_SPACE]] is activated) then the forecast is initialized [[Variables#OIFA|OIFnameA]] and [[Variables#OIFB|OIFnameB]] (specified in [[s4dvar.in]] input script) will have the structure of a 4D-Var observation file.<div class="box">  [[Variables#FOIA|FOInameA]] == roms_foi_a.nc<br />  [[Variables#FOIB|FOInameB]] == roms_foi_b.nc</div>
 
* Input NetCDF filenames for the forecasts initialized from the analysis of the current 4D-Var cycle ([[Variables#FCTA|FCTnameA]]) and initialized from the analysis of the previous 4D-Var cycle ([[Variables#FCTB|FCTnameB]]).<div class="box">  [[Variables#FCTA|FCTnameA]] == roms_fct_a.nc<br />  [[Variables#FCTB|FCTnameB]] == roms_fct_b.nc</div>
 
* Nesting grids connectivity data: contact points information. This NetCDF file is special and complex. It is currently generated using the script '''matlab/grid/contact.m''' from the Matlab repository.<div class="box">    [[Variables#NGCname|NGCNAME]] =  roms_ngc.nc</div>
 
* Input lateral boundary conditions and climatology file names.  The '''user''' has the option to split input data time records into several NetCDF files (see the [[Input_Parameter_Files#Important_Notes_on_File_Syntax|File Syntax Notes]]). If so, use a single line per entry with a vertical bar (<span class="red">|</span>) symbol after each entry, except the last one.<div class="box">    [[Variables#BRY|BRYNAME]] == roms_bry.nc              ! Open boundary conditions<br />    [[Variables#CLM|CLMNAME]] == roms_clm.nc              ! Climatology</div>
 
* Input climatology nudging coefficients file name.<div class="box">    [[Variables#NUD|NUDNAME]] == roms_nud.nc</div>


* Input forcing NetCDF file name(s).  The USER has the option to enter several files names per each nested grid.  For example, the '''user''' may have a different files for wind products, heat fluxes, rivers, tides, etc.  The model will scan the file list and will read the needed data from the first file in the list containing the forcing field. Therefore, the order of the file names is very important. If multiple forcing files per grid, enter first all the file names for grid 1, then grid 2, and so on. Use a single line per entry with a continuation (<span class="red">\</span>) symbol at the each entry, except the last one.<div class="box">    [[Variables#nFfiles|NFFILES]] == 1                          ! number of forcing files<br /><br />    [[Variables#FRCname|FRCNAME]] == ocean_frc.nc              ! forcing file 1, grid 1</div>
* Input Sources/Sinks forcing (like river runoff) file name. This file is separated from the regular forcing files to allow manipulations over nested grids. A particular nesting grid may or may not have Sources/Sinks forcing.<div class="box">    [[Variables#SSF|SSFNAME]] == roms_rivers.nc</div>
 
* Input tidal forcing file name.<div class="box">    [[Variables#TIDE|TIDENAME]] == roms_tides.nc</div>
 
* Input forcing NetCDF file name(s).  The '''user''' has the option to enter several files names for each nested grid.  For example, the '''user''' may have a different files for wind products, heat fluxes, tides, etc.  The model will scan the file list and will read the needed data from the first file in the list containing the forcing field. Therefore, the order of the file names is very important. If multiple forcing files per grid, enter first all the file names for grid 1, then grid 2, and so on. It is also possible to split input data time records into several NetCDF files (see the [[Input_Parameter_Files#Important_Notes_on_File_Syntax|File Syntax Notes]]). Use a single line per entry with a continuation ( <span class="red">\</span> ) or vertical bar ( <span class="red">|</span> ) symbol after each entry, except the last one.<div class="box">    [[Variables#nFfiles|NFFILES]] == 1                          ! number of unique forcing files<br /><br />    [[Variables#FRC|FRCNAME]] == roms_frc.nc              ! forcing file 1, grid 1</div>


== Output NetCDF Files ==
== Output NetCDF Files ==


* Output NetCDF file names, [1:[[Ngrids]]] files are expected.<div class="box">    [[Variables#GSTname|GSTNAME]] == ocean_gst.nc              ! GST analysis restart<br />    [[Variables#RSTname|RSTNAME]] == ocean_rst.nc              ! Restart<br />    [[Variables#HISname|HISNAME]] == ocean_his.nc              ! History<br />    [[Variables#TLMname|TLMNAME]] == ocean_tlm.nc              ! TLM history<br />    [[Variables#TLFname|TLFNAME]] == ocean_tlf.nc              ! Impulse TLM forcing<br />    [[Variables#ADJname|ADJNAME]] == ocean_adj.nc              ! ADM history<br />    [[Variables#AVGname|AVGNAME]] == ocean_avg.nc              ! Averages<br />    [[Variables#DIAname|DIANAME]] == ocean_dia.nc              ! Diagnostics<br />    [[Variables#STAname|STANAME]] == ocean_sta.nc              ! Stations<br />    [[Variables#FLTname|FLTNAME]] == ocean_flt.nc              ! Floats</div>
{{note}}'''NOTE:''' Starting with '''revision 460''' file names can be up to 256 characters long. Previously only 80 characters were allowed.
 
* Output NetCDF file names, [1:[[Ngrids]]] files are expected.<div class="box">    [[Variables#DAI|DAINAME]] == roms_dai.nc              ! Data assimilation next cycle initial conditions or restart file<br />    [[Variables#GST|GSTNAME]] == roms_gst.nc              ! GST analysis restart<br />    [[Variables#RST|RSTNAME]] == roms_rst.nc              ! Restart<br />    [[Variables#HIS|HISNAME]] == roms_his.nc              ! History<br />    [[Variables#QCK|QCKNAME]] == roms_qck.nc              ! Quicksave<br />    [[Variables#TLM|TLMNAME]] == roms_tlm.nc              ! TLM history<br />    [[Variables#TLF|TLFNAME]] == roms_tlf.nc              ! Impulse TLM forcing<br />    [[Variables#ADM|ADJNAME]] == roms_adj.nc              ! ADM history<br />    [[Variables#AVG|AVGNAME]] == roms_avg.nc              ! Averages<br />    [[Variables#HAR|HARNAME]] == roms_har.nc              ! least-squares detiding harmonics<br />    [[Variables#DIA|DIANAME]] == roms_dia.nc              ! Diagnostics<br />    [[Variables#STA|STANAME]] == roms_sta.nc              ! Stations<br />    [[Variables#FLT|FLTNAME]] == roms_flt.nc              ! Floats</div>


== Additional Input Scripts ==
== Additional Input Scripts ==


* Input ASCII parameter filenames.<div class="box">    [[Variables#APARnam|APARNAM]] =  ROMS/External/[[s4dvar.in]]<br />    [[Variables#SPOSnam|SPOSNAM]] =  ROMS/External/[[stations.in]]<br />    [[Variables#FPOSnam|FPOSNAM]] =  ROMS/External/[[floats.in]]<br />    [[Variables#BPARnam|BPARNAM]] =  ROMS/External/[[bioFasham.in]]<br />    [[Variables#SPARnam|SPARNAM]] =  ROMS/External/[[sediment.in]]<br />    [[Variables#USRname|USRNAME]] =  ROMS/External/MyFile.dat</div>
{{note}}'''NOTE:''' Starting with '''revision 460''' file names can be up to 256 characters long. Previously only 80 characters were allowed.
 
* Input ASCII parameter filenames.<div class="box">    [[Variables#aparnam|APARNAM]] =  ROMS/External/[[s4dvar.in]]<br />    [[Variables#sposnam|SPOSNAM]] =  ROMS/External/[[stations.in]]<br />    [[Variables#fposnam|FPOSNAM]] =  ROMS/External/[[floats.in]]<br />    [[Variables#bparnam|BPARNAM]] =  ROMS/External/[[biology.in]]<br />    [[Variables#sparnam|SPARNAM]] =  ROMS/External/[[sediment.in]]<br />    [[Variables#USRname|USRNAME]] =  ROMS/External/MyFile.dat</div>

Latest revision as of 02:26, 8 June 2021

Standard Input Script - roms.in

Note Notice: In SVN revision 933 (January 26, 2019), all "ocean_*.in" files were renamed to roms_*.in and all ocean* ROMS executables were renamed to roms* in order to facilitate and clarify model coupling efforts. More information can be found in the ROMS repository Trac ticket #794.


File roms.in is the ROMS standard input file to any model run. This file sets the application spatial dimensions and many of the parameters that are not specified at compile time, including parallel tile decomposition, timestepping, physical coefficients and constants, vertical coordinate set-up, logical switches and flags to control the frequency of output, the names of input and output NetCDF files, and additional input scripts names for data assimilation, stations, floats trajectories, ecosystem models, and sediment model.

This standard input ASCII file is organized in several sections as shown below, with links to more detailed explanation where required.

Note Notice: A detailed information about ROMS input script file syntax can be found here.

Note Notice: A default roms.in input script is provided in the User/External subdirectory. Also there are several standard input scripts in the ROMS/External subdirectory which are used in the distributed test cases. They are usually named roms_app.in where app is the lowercase of the test case cpp option.

Configuration Parameters

  • Application title. This string will be saved in the output NetCDF files.
    TITLE = Wind-Driven Upwelling/Downwelling over a Periodic Channel
  • C-preprocessing Flag to define the specific configuration.
    MyAppCPP = UPWELLING
    Though this is set by ROMS_APPLICATION in the makefile or build Script, ROMS is also compiled with -D$(ROMS_APPLICATION), which allows the use of
    #ifdef UPWELLING
    for instance. The net result of both
    -D$(ROMS_APPLICATION)=UPWELLING -DUPWELLING
    is that ROMS_APPLICATION becomes 1 in the source code. ROMS therefore needs to be told the application name here as well in order to report it to the output file.
  • Input variable information file name. This file needs to be processed first so all information arrays can be initialized properly. Notice that we need an absolute or relative path for input metadata file varinfo.dat. There are many posts in the ROMS Forum of new users that fail to specify the correct location of this file. Expert users usually have the own modified copy of this file for a particular application.
    VARNAME = ROMS/External/varinfo.dat
NoteNOTE: Starting with revision 460 file names can be up to 256 characters long. Previously only 80 characters were allowed.
  • Number of nested grids.
    Ngrids = 1
  • Number of grid nesting layers. This parameter is used to allow refinement and composite grid combinations.
  • Grid dimension parameters. These are used to dynamically allocate all model state variables upon execution.
    Lm == 41  ! Number of I-direction INTERIOR RHO-points
    Mm == 80  ! Number of J-direction INTERIOR RHO-points
    N == 16  ! Number of vertical levels

    Nbed = 0  ! Number of sediment bed layers

    NAT = 2  ! Number of active tracers (usually, 2)
    NPT = 0  ! Number of inactive passive tracers
    NCS = 0  ! Number of cohesive (mud) sediment tracers
    NNS = 0  ! Number of non-cohesive (sand) sediment tracers
  • Domain decomposition parameters for serial, distributed-memory or shared-memory configurations used to determine tile horizontal range indices (Istr,Iend) and (Jstr,Jend), [1:Ngrids] values are expected.
    NtileI == 1  ! I-direction partition
    NtileJ == 1  ! J-direction partition

Tracer Advection Schemes

Set horizontal and vertical advection schemes for active and inert tracers. A different advection scheme is allowed for each tracer. For example, a positive-definite (monotonic) algorithm can be activated for salinity and inert tracers, while a different one is set for temperature.

It is more advantageous to set the horizontal and vertical advection schemes for each tracer with switches instead of a single CPP flag for all of them. Positive-definite and monotonic algorithms (i.e., MPDATA and HSIMT) are appropriate and useful for positive fields like salinity, inert, biological, and sediment tracers. However, since the temperature has a dynamic range with negative and positive values in the ocean, other advection schemes are more appropriate.

Currently, the following tracer advection schemes are available and are activated using the associated Keyword:

Keyword Advection Algorithm

A4 4th-order Akima (horizontal/vertical)
C2 2nd-order centered differences (horizontal/vertical)
C4 4th-order centered differences (horizontal/vertical)
HSIMT 3th-order HSIMT with TVD limiter (horizontal/vertical)
MPDATA recursive flux corrected MPDATA (horizontal/vertical)
SPLINES parabolic splines reconstruction (only vertical)
SU3 split third-order upstream (horizontal/vertical)
U3 3rd-order upstresm-bias (only horizontal)

The user has the option of specifying the full Keyword or the first two letters, regardless if using uppercase or lowercase.

If using either HSIMT (Wu and Zhu, 2010) or MPDATA (Smolarkiewicz and Margolin, 1998) options, the user needs to set the same scheme for both horizontal and vertical advection to preserve monotonicity.

  • Horizontal and vertical advection for each active (temperature and salinity) and inert tracer, [1:NAT+NPT,Ngrids] values are expected.
    Hadvection == U3 \  ! temperature
    U3 \  ! salinity
    HSIMT \  ! dye_01, inert(1)
    HSIMT  ! dy2_02, inert(2)

    Vadvection == C4 \  ! temperature
    C4 \  ! salinity
    HSIMT \  ! dye_01, inert(1)
    HSIMT  ! dy2_02, inert(2)
  • Horizontal and vertical advection for each active (temperature and salinity) and inert tracer for adjoint-based algorithms can have different horizontal schemes, [1:NAT+NPT,Ngrids] values are expected.
    ad_Hadvection == U3 \  ! temperature
    U3 \  ! salinity
    HSIMT \  ! dye_01, inert(1)
    HSIMT  ! dy2_02, inert(2)

    ad_Vadvection == C4 \  ! temperature
    C4 \  ! salinity
    HSIMT \  ! dye_01, inert(1)
    HSIMT  ! dy2_02, inert(2)


Lateral Open Boundary Conditions Parameters

  • The lateral boundary conditions are now specified with logical switches instead of CPP flags to allow nested grid configurations. Their values are loaded into the structured array:
    LBC(1:4, nLBCvar, Ngrids)
    where 1:4 are the numbered boundary edges, nLBCvar are the number LBC state variables, and Ngrids is the number of nested grids. For example, to apply gradient boundary conditions for free-surface we use:
    LBC(iwest, isFsur, ng) % gradient
    LBC(ieast, ... , ng) % gradient
    LBC(isouth, ... , ng) % gradient
    LBC(inorth, ... , ng) % gradient
    The lateral boundary conditions are entered with a keyword. A value is expected for each boundary segment per nested grid for each state variable. Each tracer variable requires [1:4,1:NAT+NPT,Ngrids] values. [1:4,1:Ngrids] values are expected for other variables. The boundary order is: 1=west, 2=south, 3=east, and 4=north. That is, anticlockwise starting at the western boundary.

    The keyword is case insensitive and usually has three characters. However, it is possible to have compound keywords, if applicable. For example, the keyword RadNud implies radiation boundary condition with nudging. This combination is usually used in active/passive radiation conditions.
    ! Keyword Lateral Boundary Condition Type
    !
    ! Cha Chapman
    ! Cla Clamped
    ! Clo Closed
    ! Fla Flather _____N_____ j=Mm
    ! Gra Gradient | 4 |
    ! Nes Nested | |
    ! Nud Nudging 1 W E 3
    ! Per Periodic | |
    ! Rad Radiation |_____S_____|
    ! Red Reduced Physics 2 j=1
    ! i=1 i=Lm
    ! W S E N
    ! e o a o
    ! s u s r
    ! t t t t
    ! h h
    !
    ! 1 2 3 4


    LBC(isFsur) == Per Clo Per Clo  ! free-surface
    LBC(isUbar) == Per Clo Per Clo  ! 2D U-momentum
    LBC(isVbar) == Per Clo Per Clo  ! 2D V-momentum
    LBC(isUvel) == Per Clo Per Clo  ! 3D U-momentum
    LBC(isVvel) == Per Clo Per Clo  ! 3D V-momentum
    LBC(isMtke) == Per Clo Per Clo  ! mixing TKE

    LBC(isTvar) == Per Clo Per Clo \  ! temperature
    Per Clo Per Clo  ! salinity
  • Lateral open boundary edge volume conservation switch for nonlinear model and adjoint-based algorithm. This is usually activated with radiation boundary conditions to enforce global mass conservation. Notice that these switches should not be activated if tidal forcing, [1:Ngrids] values are expected.
    VolCons(west) == F  ! western boundary
    VolCons(east) == F  ! eastern boundary
    VolCons(south) == F  ! southern boundary
    VolCons(north) == F  ! northern boundary

    ad_VolCons(west) == F  ! western boundary
    ad_VolCons(east) == F  ! eastern boundary
    ad_VolCons(south) == F  ! southern boundary
    ad_VolCons(north) == F  ! northern boundary

Timestepping and Iterations Parameters

  • Timestepping parameters.
    NTIMES = 1440  ! Number of timesteps
    DT == 300.0d0  ! Timestep size (seconds)
    NDTFAST == 30  ! Number of barotropic steps
  • Total number of timesteps for computing observations impacts interval during the analysis (NTIMES_ANA) or forecast (NTIMES_FCT) cycle.
    NTIMES_ANA = 1440  ! analysis interval
    NTIMES_FCT = 1440  ! forecast interval
  • Model iteration loops parameters.
    ERstr = 1  ! Starting perturbation or iteration
    ERend = 1  ! Ending perturbation or iteration
    Nouter = 1  ! Maximum number of 4DVar outer loop iterations
    Ninner = 1  ! Maximum number of 4DVar inner loop iterations
    Nintervals = 1  ! Number of stochastic optimals interval divisions
  • Number of eigenvalues (NEV) and eigenvectors (NCV) to compute for the Lanczos/Arnoldi problem in the Generalized Stability Theory (GST) analysis. NCV must be greater than NEV.
    NEV = 2  ! Number of eigenvalues
    NCV = 10  ! Number of eigenvectors
    Note Notice: At present, there is no apriori analysis to guide the selection of NCV relative to NEV. The only formal requirement is that NCV > NEV. However in optimal perturbations, it is recommended to have NCV ≥ 2*NEV. In Finite Time Eigenmodes (FTE) and Adjoint Finite Time Eigenmodes (AFTE) the requirement is to have NCV ≥ 2*NEV+1. The efficiency of calculations depends critically on the combination of NEV and NCV. If NEV is large (greater than 10 say), you can use NCV=2*NEV+1 but for NEV small (less than 6) it will be inefficient to use NCV=2*NEV+1. In complicated applications, you can start with NEV=2 and NCV=10. Otherwise, it will iterate for very long time.

Output Frequency Parameters

  • Flags controlling the frequency of output.
    NRREC = 0  ! Model restart flag
    LcycleRST == T  ! Switch to recycle restart time records
    NRST == 288  ! Number of timesteps between writing restart records
    NSTA == 1  ! Number of timesteps between stations records
    NFLT == 1  ! Number of timesteps between floats records
    NINFO == 1  ! Number of timesteps between printing information diagnostics
  • Output history, average, diagnostic files parameters.
    LDEFOUT == T  ! File creation/append switch
    NHIS == 72  ! Number of timesteps between writing history records
    NDEFHIS == 0  ! Number of timesteps between creation of new history file
    NQCK == 0  ! Number of timesteps between writing quicksave records
    NDEFQCK == 0  ! Number of timesteps between creation of new quicksave file
    NTSAVG == 1  ! Starting averages timestep
    NAVG == 72  ! Number of timesteps between writing averages records
    NDEFAVG == 0  ! Number of timesteps between creation of new averages file
    NTSDIA == 1  ! Starting diagnostics timestep
    NDIA == 72  ! Number of timesteps between writing diagnostics records
    NDEFDIA == 0  ! Number of timesteps between creation of new diagnostics file
  • Output tangent linear and adjoint models parameters.
    LcycleTLM == F  ! Switch to recycle TLM time records
    NTLM == 72  ! Number of timesteps writing between TLM records
    NDEFTLM == 0  ! Number of timesteps between creation of new TLM file
    LcycleADJ == F  ! Switch to recycle ADM time records
    NADJ == 72  ! Number of timesteps between writing ADM records
    NDEFADJ == 0  ! Number of timesteps between creation of new ADM file
    NSFF == 72  ! Number of timesteps between 4DVAR adjustment of
     ! surface forcing fluxes
    NOBC == 72  ! Number of timesteps between 4DVAR adjustment of
     ! open boundary fields
  • Output check pointing GST restart parameters.
    LmultiGST = F  ! one eigenvector per history file
    LrstGST = F  ! GST restart switch
    MaxIterGST = 500  ! maximum number of iterations
    NGST = 10  ! check pointing interval

Physical and Numerical Parameters

  • Relative accuracy of the Ritz values computed in the GST analysis.
    Ritz_tol = 1.0d-15
  • Harmonic/biharmonic horizontal diffusion of all active and passive (dye) tracers for the nonlinear model and adjoint-based algorithms: [1:NAT+NPT,Ngrids] values are expected. Diffusion coefficients for biology and sediment tracers are set in their respective input scripts.
    TNU2 == 0.0d0 0.0d0  ! m2/s
    TNU4 == 2*0.0d0  ! m4/s

    ad_TNU2 == 0.0d0 0.0d0  ! m2/s
    ad_TNU4 == 0.0d0 0.0d0  ! m4/s
  • Harmonic/biharmonic, horizontal viscosity coefficient for the nonlinear model and adjoint-based algorithms: [1:Ngrids values are expected. Only used if the appropriate CPP options are defined.
    VISC2 == 0.0d0  ! m2/s
    VISC4 == 0.0d0  ! m4/s

    ad_VISC2 == 0.0d0  ! m2/s
    ad_VISC4 == 0.0d0  ! m4/s
  • Logical switches (TRUE/FALSE) to increase/decrease horizontal viscosity and/or diffusivity in specific areas of the application domain (like sponge areas) for the desired application grid.
    LuvSponge == F  ! horizontal momentum
    LtracerSponge == F F  ! temperature, salinity, inert
  • Background vertical mixing coefficients for active (NAT) and inert (NPT) tracers for the nonlinear model and basic state scale factor in adjoint-based algorithms: [1:NAT+NPT,Ngrids] values are expected.
    AKT_BAK == 1.0d-6 1.0d-6  ! m2/s

    ad_AKT_fac == 1.0d0 1.0d0 !nondimensional
  • Background vertical mixing coefficient for momentum for the nonlinear model and basic state scale factor in the adjoint-based algorithms: [1:Ngrids] values are expected.
    AKV_BAK == 1.0d-5  ! m2/s

    ad_AKV_fac == 1.0d0 !nondimensional
  • Upper threshold values to limit vertical mixing coefficients computed from vertical mixing parameterizations. Although this is an engineering fix, the vertical mixing values inferred from ocean observations are rarely higher than this upper limit value.
    AKT_LIMIT == 1.0d-3 1.0d-3  ! m2/s

    AKV_LIMIT == 1.0d-3  ! m2/s
  • Turbulent closures parameters.
    AKK_BAK == 5.0d-6  ! m2/s
    AKP_BAK == 5.0d-6  ! m2/s
    TKENU2 == 0.0d0  ! m2/s
    TKENU4 == 0.0d0  ! m4/s
  • Generic length-scale turbulence closure parameters. These parameters are used when GLS_MIXING is activated.
    GLS_P == 3.0d0  ! K-epsilon
    GLS_M == 1.5d0  ! Turbulent kinetic energy exponent
    GLS_N == -1.0d0  ! Turbulent length scale exponent
    GLS_Kmin == 7.6d-6  ! Minimum value of specific turbulent energy
    GLS_Pmin == 1.0d-12  ! Minimum Value of dissipation

    ! Closure independent constraint parameters:

    GLS_CMU0 == 0.5477d0  ! Stability coefficient
    GLS_C1 == 1.44d0  ! Shear production coefficient
    GLS_C2 == 1.92d0  ! Dissipation coefficient
    GLS_C3M == -0.4d0  ! Buoyancy production coefficient (minus)
    GLS_C3P == 1.0d0  ! Buoyancy production coefficient (plus)
    GLS_SIGK == 1.0d0  ! Constant Schmidt number for turbulent
     ! kinetic energy diffusivity
    GLS_SIGP == 1.30d0  ! Constant Schmidt number for turbulent
     ! generic statistical field, "psi"
  • Constants used in surface turbulent kinetic energy flux computation.
    CHARNOK_ALPHA == 1400.0d0  ! Charnok surface roughness
    ZOS_HSIG_ALPHA == 0.5d0  ! Roughness from wave amplitude
    SZ_ALPHA == 0.25d0  ! roughness from wave dissipation
    CRGBAN_CW == 100.0d0  ! Craig and Banner wave breaking
  • Constants used in momentum stress computation.
    RDRG == 3.0d-04  ! m/s
    RDRG2 == 3.0d-03  ! nondimensional
    Zob == 0.02d0  ! m
    Zos == 0.02d0  ! m
  • Height (m) of atmospheric measurements for Bulk fluxes parameterization.
    BLK_ZQ == 10.0d0  ! air humidity
    BLK_ZT == 10.0d0  ! air temperature
    BLK_ZW == 10.0d0  ! winds
  • Minimum depth for wetting and drying.
    DCRIT == 0.10d0  ! m
  • Jerlov water type used to set vertical depth scale for shortwave radiation absorption.
    WTYPE == 1
  • Mean Density and Brunt-Vaisala frequency.
    RHO0 = 1025.0d0  ! kg/m3
    BVF_BAK = 1.0d-4  ! 1/s2
  • Timestamp assigned for model initialization, reference time origin for tidal forcing, and model reference time for output NetCDF units attribute.
    DSTART = 0.0d0  ! days
    TIDE_START = 0.0d0  ! days
    TIME_REF = 0.0d0  ! yyyymmdd.dd
  • Nudging/relaxation time scales, inverse scales will be computed internally, [1:Ngrids] values are expected. These values are used for two purposes.
  1. When climatology nudging is active throughout the domain because the logical flags LtracerCLM, Lm3CLM, Lm2CLM etc. are TRUE, these values are the default nudging time scales set in Functionals/ana_nudgcoef.h. Since the user can choose to customize ana_nudgcoef.h, or provide 3-D climatology nudging time scales in an external file, these parameters might not be used
  2. When nudging is applied in the lateral open boundary conditions because the LBC logical flags are set to "RadNud" the values here set the nudging time scale when the Orlanski radiation scheme detects outflow conditions. When the Orlanski scheme detects inflow conditions, the nudging time scale is TNUDG/OBCFAC (see OBCFAC below).
TNUDG == 2*0.0d0  ! days
ZNUDG == 0.0d0  ! days
M2NUDG == 0.0d0  ! days
M3NUDG == 0.0d0  ! days
  • Factor between passive (outflow) and active (inflow) (in the Orlanksi radiation sense) open boundary condition nudging time scales, [1:Ngrids]. If OBCFAC > 1, nudging on inflow is stronger than on outflow (recommended) because the inflow time scale TNUDG/OBCFAC is less than the outflow timescale TNUDG (see above). The passive/active radiation conditions in ROMS follow the method proposed by Marchesiello et al. (2001):
    with
    where represents the external boundary data and is the nudging time scale with for outflow, for inflow, and . At outflow, a weak nudging is used to prevent a numerical drift in the solution while avoiding over-specification of the boundary data. During inflow, a strong nudging is applied to avoid data-shock in the solution. The nudging time scales provided above are for the outflow (passive) conditions, , in days. The inflow nudging factor in the above equation is .
    OBCFAC == 10.0d0  ! nondimensional
  • Linear equation of State parameters, [1:Ngrids] values are expected.
    R0 == 1027.0d0  ! kg/m3
    T0 == 10.0d0  ! Celsius
    S0 == 35.0d0  ! nondimensional
    TCOEF == 1.7d-4  ! 1/Celsius
    SCOEF == 7.6d-4  ! 1/nondimensional
  • Slipperiness parameter: 1.0 (free slip) or -1.0 (no slip).
    GAMMA2 = 1.0d0
  • Logical switches (TRUE/FALSE) to activate horizontal momentum transport point Sources/Sinks (like river runoff) and mass point Sources/Sinks (like volume vertical influx): [1:Ngrids] values are expected. These switches replace obsolete CPP options UV_PSOURCE and Q_PSOURCE, respectively. In nesting, a particular grid may or may not have Sources/Sinks forcing.
    LuvSrc == F  ! horizontal momentum transport
    LwSrc == F  ! volume vertical influx
  • Logical switches (TRUE/FALSE) to activate tracers point Sources/Sinks (like river runoff) and to specify which tracer variables to consider: [1:NAT+NPT,Ngrids] values are expected. Other biological and sediment tracer switches are activated in their respective input scripts. This switch replaces obsolete CPP option TS_PSOURCE. In nesting, a particular grid may or may not have tracers Sources/Sinks forcing.
    LtracerSrc == F F  ! temperature, salinity, inert
  • Logical switches (TRUE/FALSE) to read and process climatology fields.
    LsshCLM == F  ! sea-surface height
    Lm2CLM == F  ! 2D momentum
    Lm3CLM == F  ! 3D momentum

    LtracerCLM == F F  ! temperature, salinity, inert
  • Logical switches (TRUE/FALSE) to nudge the desired climatology field(s). If not analytical climatology fields, users need to turn ON the logical switches above to process the fields from the climatology NetCDF file that are needed for nudging.
    LnudgeM2CLM == F  ! 2D momentum
    LnudgeM3CLM == F  ! 3D momentum

    LnudgeTCLM == F F  ! temperature, salinity, inert

Vertical Coordinates Parameters

  • Set vertical, terrain-following coordinates transformation equation and stretching function (see Vertical S-coordinate for more details).
    Vtransform == 2  ! transformation equation
    Vstretching == 4  ! stretching function
  • S-coordinate surface control parameter, [1:Ngrids] values are expected. The range of optimal values depends on the vertical stretching function.
    THETA_S == 3.0d0  ! surface stretching parameter
  • S-coordinate bottom control parameter, [1:Ngrids] values are expected. The range of optimal values depends on the vertical stretching function.
    THETA_B == 0.0d0  ! bottom stretching parameter
  • Critical depth (hc) in meters (positive) controlling the stretching. It can be interpreted as the width of surface or bottom boundary layer in which higher vertical resolution (levels) is required during stretching.
    TCLINE == 25.0d0  ! critical depth (m)

Adjoint Sensitivity Parameters

  • Starting (DstrS) and ending (DendS) day for adjoint sensitivity forcing. DstrS must be less or equal to DendS. If both values are zero, their values are reset internally to the full range of the adjoint integration.
    DstrS == 0.0d0  ! starting day
    DendS == 0.0d0  ! ending day
  • Starting and ending vertical levels of the 3D adjoint state variables whose sensitivity is required.
    KstrS == 1  ! starting level
    KendS == 1  ! ending level
  • Logical switches (TRUE/FALSE) to specify the adjoint state tracer variables whose sensitivity is required, [1:NT,1:Ngrids] values are expected.
    Lstate(isTvar) == F F  ! NT tracers

Stochastic Optimals Parameters

  • Stochastic optimals time decorrelation scale (days) assumed for red noise processes.
    SO_decay == 2.0d0  ! days

History Output Variables Switches

  • Logical switches (TRUE/FALSE) to activate writing of extra inert passive tracers other than biological and sediment tracers. An inert passive tracer is one that it is only advected and diffused. Other processes are ignored. These tracers include, for example, dyes, pollutants, oil spills, etc. [1:NPT] values are expected. However, these switches can be activated using compact parameter specification.
    Hout(inert) == T  ! dye_01, ... inert passive tracers


Quicksave Output Variables Switches

  • Logical switches (TRUE/FALSE) to activate writing of extra inert passive tracers other than biological and sediment tracers into the quicksave output file. An inert passive tracer is one that it is only advected and diffused. Other processes are ignored. These tracers include, for example, dyes, pollutants, oil spills, etc. [1:NPT] values are expected. However, these switches can be activated using compact parameter specification.
    Qout(inert) == F  ! dye_01, ... inert passive tracers
    Qout(Snert) == F  ! dye_01, ... surface inert passive tracers


Time-averaged Output Variables Switches

  • Logical switches (TRUE/FALSE) to activate writing of extra inert passive tracers other than biological and sediment tracers into the time-averaged output file. An inert passive tracer is one that it is only advected and diffused. Other processes are ignored. These tracers include, for example, dyes, pollutants, oil spills, etc. [1:NPT,1:Ngrids] values are expected. However, these switches can be activated using compact parameter specification.
    Aout(inert) == T  ! dye_01, ... inert passive tracers

Time-averaged Diagnostic Output Variables Switches

  • Logical switches (TRUE/FALSE) to activate writing time-averaged. 2D momentum (ubar, vbar) diagnostic terms into the diagnostics output file.
    Dout(M2rate) == T  ! ubar_accel, ... acceleration
    Dout(M2pgrd) == T  ! ubar_prsgrd, ... pressure gradient
    Dout(M2fcor) == T  ! ubar_cor, ... Coriolis force
    Dout(M2hadv) == T  ! ubar_hadv, ... horizontal total advection
    Dout(M2xadv) == T  ! ubar_xadv, ... horizontal XI-advection
    Dout(M2yadv) == T  ! ubar_yadv, ... horizontal ETA-advection
    Dout(M2hrad) == T  ! ubar_hrad, ... horizontal total radiation stress
    Dout(M2hvis) == T  ! ubar_hvisc, ... horizontal total viscosity
    Dout(M2xvis) == T  ! ubar_xvisc, ... horizontal XI-viscosity
    Dout(M2yvis) == T  ! ubar_yvisc, ... horizontal ETA-viscosity
    Dout(M2sstr) == T  ! ubar_sstr, ... surface stress
    Dout(M2bstr) == T  ! ubar_bstr, ... bottom stress
  • Logical switches (TRUE/FALSE) to activate writing of time-averaged, 3D momentum (u,v) diagnostic terms into the diagnostics output file.
    Dout(M3rate) == T  ! u_accel, ... acceleration
    Dout(M3pgrd) == T  ! u_prsgrd, ... pressure gradient
    Dout(M3fcor) == T  ! u_cor, ... Coriolis force
    Dout(M3hadv) == T  ! u_hadv, ... horizontal total advection
    Dout(M3xadv) == T  ! u_xadv, ... horizontal XI-advection
    Dout(M3yadv) == T  ! u_yadv, ... horizontal ETA-advection
    Dout(M3vadv) == T  ! u_vadv, ... vertical advection
    Dout(M3hrad) == T  ! u_hrad, ... horizontal total radiation stress
    Dout(M3vrad) == T  ! u_vrad, ... vertical radiation stress
    Dout(M3hvis) == T  ! u_hvisc, ... horizontal total viscosity
    Dout(M3xvis) == T  ! u_xvisc, ... horizontal XI-viscosity
    Dout(M3yvis) == T  ! u_yvisc, ... horizontal ETA-viscosity
    Dout(M3vvis) == T  ! u_vvisc, ... vertical viscosity
  • Logical switches (TRUE/FALSE) to activate writing of time-averaged, active (temperature and salinity) and passive (inert) tracer diagnostic terms into the diagnostics output file. [1:NAT+NPT,1:Ngrids] values are expected.
    Dout(iTrate) == T T  ! temp_rate, ... time rate of change
    Dout(iThadv) == T T  ! temp_hadv, ... horizontal total advection
    Dout(iTxadv) == T T  ! temp_xadv, ... horizontal XI-advection
    Dout(iTyadv) == T T  ! temp_yadv, ... horizontal ETA-advection
    Dout(iTvadv) == T T  ! temp_vadv, ... vertical advection
    Dout(iThdif) == T T  ! temp_hdiff, ... horizontal total diffusion
    Dout(iTxdif) == T T  ! temp_xdiff, ... horizontal XI-diffusion
    Dout(iTydif) == T T  ! temp_ydiff, ... horizontal ETA-diffusion
    Dout(iTsdif) == T T  ! temp_sdiff, ... horizontal S-diffusion
    Dout(iTvdif) == T T  ! temp_vdiff, ... vertical diffusion

Generic User Parameters

  • NUSER is the number (integer) of user parameters to consider. USER is a vector containing NUSER user parameters (real array).
    NUSER = 0
    USER = 0.d0
    This array is primarily used with the SANITY_CHECK to test the correctness of the tangent linear adjoint models. It contains the model variable and grid point to perturb:
    ! INT(user(1)): tangent state variable to perturb
    ! INT(user(2)): adjoint state variable to perturb
    ! [ isFsur = 1 ] free-surface
    ! [ isUbar = 2 ] 2D U-momentum
    ! [ isVbar = 3 ] 2D V-momentum
    ! [ isUvel = 4 ] 3D U-momentum
    ! [ isVvel = 5 ] 3D V-momentum
    ! [ isTvar = 6 ] First tracer (temperature)
    ! [ ... ] ...
    ! [ isTvar = ? ] Last tracer
    !
    ! INT(user(3)): I-index of tangent variable to perturb
    ! INT(user(4)): I-index of adjoint variable to perturb
    ! INT(user(5)): J-index of tangent variable to perturb
    ! INT(user(6)): J-index of adjoint variable to perturb
    ! INT(user(7)): K-index of tangent variable to perturb, if 3D
    ! INT(user(8)): K-index of adjoint variable to perturb, if 3D
    Set tangent and adjoint parameters to the same values if perturbing and reporting the same variable.
  • This parameter could also be used to adjust constants in analytical functions at run time.


Parallel I/O (PIO and SCORPIO) Parameters

  • Choose the input and output NetCDF library to use. For example, the user could choose to use the PIO library for writing but still use the standard library for reading. To use this Parallel I/O strategy, the PIO or SCORPIO library must be linked to ROMS at compile time and the PIO_LIB CPP option needs to be activated. It is only available in distributed-memory applications since it uses MPI-IO.
    ! [1] Standard NetCDF-3 or NetCDF-4 library
    ! [2] Parallel-IO from PIO or SCORPIO library (MPI, MPI-IO applications)

    INP_LIB = 2
    OUT_LIB = 2
  • PIO and SCORPIO offer several methods for reading/writing NetCDF files. SCORPIO also offers ADIOS but that is not implemented in ROMS. Depending on the build of the PIO or SCORPIO libraries, not all the I/O types are available. If the NetCDF library does not support parallel I/O, methods 3 and 4 are not available. Currently, NetCDF4/HDF5 data compression is possible with method 3 during serial write.
    ! [0] parallel read and parallel write of PnetCDF (CDF-5 type files, not recommended because of post-processing)
    ! [1] parallel read and parallel write of NetCDF3 (64-bit offset)
    ! [2] serial read and serial write of NetCDF3 (64-bit offset)
    ! [3] parallel read and serial write of NetCDF4/HDF5
    ! [4] parallel read and parallel write of NETCDF4/HDF5

    PIO_METHOD = 2
  • Parallel-IO tasks control parameters. Typically, it is advantageous and highly recommended to define the I/O decomposition in smaller number of processes for efficiency and to avoid MPI communications bottlenecks.
    PIO_IOTASKS = 1  ! number of I/O processes to define
    PIO_STRIDE = 1  ! stride in the MPI-rank between I/O processes
    PIO_BASE = 0  ! offset for the first I/O process
    PIO_AGGREG = 1  ! number of MPI-aggregators to use
  • Parallel-IO (PIO or SCORPIO) rearranger methods for moving data between computational and I/O processes. It provides the ability to rearrange data between computational and parallel I/O decompositions. Usually the Box rearrangement is more efficient.
    ! [1] Box rearrangement
    ! [2] Subset rearrangement

    PIO_REARR = 1
    • In the box method, data is rearranged from computational to I/O processes in a continuous manner to the data ordering in the file. Since the ordering of data between computational and I/O partitions may be different, the rearrangement will require all-to-all MPI communications. Also, notice that each computing tile may transfer data to one or more I/O processes.
    • In the subset method, each I/O process is associated with a subset of computing processes. The computing tile sends its data to a unique I/O process. The data on I/O processes may be more fragmented to the ordering on disk, which may increase the communications to the storage medium. However, the rearrangement scales better since all-to-all MPI communications are not required.
  • Parallel-IO (PIO or SCORPIO) rearranger flag for MPI communication between computational and I/O processes. In some systems, the Point-to-Point communications is more efficient.
    ! [0] Point-to-Point communications
    ! [1] Collective communications

    PIO_REARRCOM = 0
  • Parallel-IO (PIO or SCORPIO) rearranger flow-control direction flag for MPI communications between computational and I/O processes. The flow algorithm controls the rate and volume of messages sent to any destination MPI process. Optimally, the MPI communications should be designed to send a modest number of messages evenly distributed across a number of processes. An excessive number of messages to a single MPI process can exhaust the buffer space which can affect efficiency or failure due to the slowdown in the retransmitting of dropped messages. It only sends messages (Isend) when the receiver is ready and has sufficient resources.
    ! [0] Enable computational to I/O processes, and vice versa
    ! [1] Enable computational to I/O processes only
    ! [2] Enable I/O to computational processes only
    ! [3] Disable flow control

    PIO_REARRDIR = 0
  • Parallel-IO (PIO or SCORPIO) rearranger options for MPI communications from computational to I/O processes (C2I).
    PIO_C2I_HS = T  ! Enable C2I handshake (T/F)
    PIO_C2I_Send = F  ! Enable C2I Isends (T/F)
    PIO_I2C_HS = 64  ! Maximum pending C2I requests
  • Parallel-IO (PIO or SCORPIO) rearranger options for MPI communications from I/O to computational processes (I2C).
    PIO_I2C_HS = F  ! Enable I2C handshake (T/F)
    PIO_I2C_Send = T  ! Enable I2C Isends (T/F)
    PIO_I2C_Preq = 65  ! Maximum pending I2C requests

NetCDF-4/HDF5 Compression Parameters

  • NetCDF-4/HDF5 compression parameters for output files. This capability is used when both HDF5 and DEFLATE C-preprocessing options are activated. The user needs to compile with the NetCDF-4/HDF5 and MPI libraries. File deflation cannot be used in parallel I/O for writing libraries. File deflation cannot be used in parallel I/O for writing to exactly map the data to the disk location. For more information, check NetCDF official website.
    NC_SHUFFLE = 1  ! if non-zero, turn on shuffle filter
    NC_DEFLATE = 1  ! if non-zero, turn on deflate filter
    NC_DLEVEL = 1  ! deflate level [0-9]

Input NetCDF Files

NoteNOTE: Starting with revision 460 file names can be up to 256 characters long. Previously only 80 characters were allowed.

  • Input NetCDF file names, [1:Ngrids] values are expected.
    GRDNAME == roms_grd.nc  ! Grid
    ININAME == roms_ini.nc  ! NLM initial conditions
    ITLNAME == roms_itl.nc  ! TLM initial conditions
    IRPNAME == roms_irp.nc  ! RPM initial conditions
    IADNAME == roms_iad.nc  ! ADM initial conditions
    FWDNAME == roms_fwd.nc  ! Forward trajectory
    ADSNAME == roms_ads.nc  ! Adjoint sensitivity functionals
  • Input adjoint forcing NetCDF filenames for computing observations impacts during the analysis-forecast cycle. If the forecast error metric is defined in state-space, then FOInameA and FOInameB should be regular adjoint forcing files just like ADSNAME. If the forecast error metric is defined in observation space (OBS_SPACE is activated) then the forecast is initialized OIFnameA and OIFnameB (specified in s4dvar.in input script) will have the structure of a 4D-Var observation file.
    FOInameA == roms_foi_a.nc
    FOInameB == roms_foi_b.nc
  • Input NetCDF filenames for the forecasts initialized from the analysis of the current 4D-Var cycle (FCTnameA) and initialized from the analysis of the previous 4D-Var cycle (FCTnameB).
    FCTnameA == roms_fct_a.nc
    FCTnameB == roms_fct_b.nc
  • Nesting grids connectivity data: contact points information. This NetCDF file is special and complex. It is currently generated using the script matlab/grid/contact.m from the Matlab repository.
    NGCNAME = roms_ngc.nc
  • Input lateral boundary conditions and climatology file names. The user has the option to split input data time records into several NetCDF files (see the File Syntax Notes). If so, use a single line per entry with a vertical bar (|) symbol after each entry, except the last one.
    BRYNAME == roms_bry.nc  ! Open boundary conditions
    CLMNAME == roms_clm.nc  ! Climatology
  • Input climatology nudging coefficients file name.
    NUDNAME == roms_nud.nc
  • Input Sources/Sinks forcing (like river runoff) file name. This file is separated from the regular forcing files to allow manipulations over nested grids. A particular nesting grid may or may not have Sources/Sinks forcing.
    SSFNAME == roms_rivers.nc
  • Input tidal forcing file name.
    TIDENAME == roms_tides.nc
  • Input forcing NetCDF file name(s). The user has the option to enter several files names for each nested grid. For example, the user may have a different files for wind products, heat fluxes, tides, etc. The model will scan the file list and will read the needed data from the first file in the list containing the forcing field. Therefore, the order of the file names is very important. If multiple forcing files per grid, enter first all the file names for grid 1, then grid 2, and so on. It is also possible to split input data time records into several NetCDF files (see the File Syntax Notes). Use a single line per entry with a continuation ( \ ) or vertical bar ( | ) symbol after each entry, except the last one.
    NFFILES == 1  ! number of unique forcing files

    FRCNAME == roms_frc.nc  ! forcing file 1, grid 1

Output NetCDF Files

NoteNOTE: Starting with revision 460 file names can be up to 256 characters long. Previously only 80 characters were allowed.

  • Output NetCDF file names, [1:Ngrids] files are expected.
    DAINAME == roms_dai.nc  ! Data assimilation next cycle initial conditions or restart file
    GSTNAME == roms_gst.nc  ! GST analysis restart
    RSTNAME == roms_rst.nc  ! Restart
    HISNAME == roms_his.nc  ! History
    QCKNAME == roms_qck.nc  ! Quicksave
    TLMNAME == roms_tlm.nc  ! TLM history
    TLFNAME == roms_tlf.nc  ! Impulse TLM forcing
    ADJNAME == roms_adj.nc  ! ADM history
    AVGNAME == roms_avg.nc  ! Averages
    HARNAME == roms_har.nc  ! least-squares detiding harmonics
    DIANAME == roms_dia.nc  ! Diagnostics
    STANAME == roms_sta.nc  ! Stations
    FLTNAME == roms_flt.nc  ! Floats

Additional Input Scripts

NoteNOTE: Starting with revision 460 file names can be up to 256 characters long. Previously only 80 characters were allowed.