!
!  ROMS/TOMS Standard Input parameters.
!
!svn $Id$
!========================================================= Hernan G. Arango ===
!  Copyright (c) 2002-2016 The ROMS/TOMS Group                                !
!    Licensed under a MIT/X style license                                     !
!    See License_ROMS.txt                                                     !
!==============================================================================
!                                                                             !
! Input parameters can be entered in ANY order, provided that the parameter   !
! KEYWORD (usually, upper case) is typed correctly followed by "="  or "=="   !
! symbols. Any comment lines are allowed and must begin with an exclamation   !
! mark (!) in column one.  Comments may  appear to the right of a parameter   !
! specification to improve documentation.  Comments will be ignored  during   !
! reading.  Blank lines are also allowed and ignored. Continuation lines in   !
! a parameter specification are allowed and must be preceded by a backslash   !
! (\).  In some instances, more than one value is required for a parameter.   !
! If fewer values are provided, the  last value  is assigned for the entire   !
! parameter array.  The multiplication symbol (*),  without blank spaces in   !
! between, is allowed for a parameter specification.  For example, in a two   !
! grids nested application:                                                   !
!                                                                             !
!    AKT_BAK == 2*1.0d-6  2*5.0d-6              ! m2/s                        !
!                                                                             !
! indicates that the first two entries of array AKT_BAK,  in fortran column-  !
! major order, will have the same value of "1.0d-6" for grid 1,  whereas the  !
! next two entries will have the same value of "5.0d-6" for grid 2.           !
!                                                                             !
! In multiple levels of nesting and/or multiple connected domains  step-ups,  !
! "Ngrids" entries are expected for some of these parameters.  In such case,  !
! the order of the entries for a parameter is extremely important.  It  must  !
! follow the same order (1:Ngrids) as in the state variable declaration. The  !
! USER may follow the above guidelines for specifying his/her values.  These  !
! parameters are marked by "==" plural symbol after the KEYWORD.              !
!                                                                             !
! Multiple NetCDF files are allowed for input field(s).  This is useful when  !
! splitting input data (climatology,  boundary,  forcing)  time records into  !
! several files (say monthly, annual, etc). In this case, each multiple file  !
! entry line needs to be ended by the vertical bar (|) symbol. For example:   !
!                                                                             !
!    NFFILES == 7                          ! number of forcing files          !
!                                                                             !
!    FRCNAME == my_tides.nc       \                                           !
!               my_lwrad_year1.nc |                                           !
!               my_lwrad_year2.nc \                                           !
!               my_swrad_year1.nc |                                           !
!               my_swrad_year2.nc \                                           !
!               my_winds_year1.nc |                                           !
!               my_winds_year2.nc \                                           !
!               my_Pair_year1.nc  |                                           !
!               my_Pair_year2.nc  \                                           !
!               my_Qair_year1.nc  |                                           !
!               my_Qair_year2.nc  \                                           !
!               my_Tair_year1.nc  |                                           !
!               my_Tair_year2.nc                                              !
!                                                                             !
! Notice that NFFILES is 7 and not 13. There are 7 uniquely different fields  !
! in the file list,  we  DO NOT  count file entries followed by the vertical  !
! bar symbol.  This is because  multiple file  entries are processed in ROMS  !
! with derived type structures.                                               !
!                                                                             !
!==============================================================================
!
! Application title.

       TITLE = Idealised Ice Shelf Application

! C-preprocessing Flag.

    MyAppCPP = ISOMIP_PLUS

! Input variable information file name.  This file needs to be processed
! first so all information arrays can be initialized properly.

!     VARNAME = /short/gh8/lmj581/ROMSMISOMIP/ROMS/External/varinfo.dat
     VARNAME = ROMS/External/varinfo.dat
!     VARNAME = /home/elmeruser/Source/ROMSIceShelf_devel_MISOMIP/ROMS/External/varinfo.dat

! Number of nested grids.

      Ngrids =  1

! Number of grid nesting layers.  This parameter is used to allow refinement
! and composite grid combinations.

  NestLayers =  1

! Number of grids in each nesting layer [1:NestLayers].

GridsInLayer =  1

! Grid dimension parameters. See notes below in the Glossary for how to set
! these parameters correctly.

          Lm == 14            ! 38 Number of I-direction INTERIOR RHO-points
          Mm == 94           ! Number of J-direction INTERIOR RHO-points
           N == 21           ! 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].

      NtileI == 4                               ! I-direction partition
      NtileJ == 24                               ! J-direction partition

! Set lateral boundary conditions keyword. Notice that 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. Otherwise,
! [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_implicit (free-surface)
!   Che        Chapman_explicit (free-surface)
!   Cla        Clamped
!   Clo        Closed
!   Fla        Flather (2D momentum)                  _____N_____     j=Mm
!   Gra        Gradient                              |     4     |
!   Nes        Nested (refinement)                   |           |
!   Nud        Nudging                             1 W           E 3
!   Per        Periodic                              |           |
!   Rad        Radiation                             |_____S_____|
!   Red        Reduced Physics (2D momentum)               2          j=1
!   Shc        Shchepetkin (2D momentum)            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) ==   Clo     Clo     Clo     Clo         ! free-surface
   LBC(isUbar) ==   Clo     Clo     Clo     Clo         ! 2D U-momentum
   LBC(isVbar) ==   Clo     Clo     Clo     Clo         ! 2D V-momentum
   LBC(isUvel) ==   Clo     Clo     Clo     Clo         ! 3D U-momentum
   LBC(isVvel) ==   Clo     Clo     Clo     Clo         ! 3D V-momentum
   LBC(isMtke) ==   Clo     Clo     Clo     Clo         ! mixing TKE

   LBC(isTvar) ==   Clo     Clo     Clo     Clo \       ! temperature
                    Clo     Clo     Clo     Clo         ! salinity


! Adjoint-based algorithms can have different lateral boundary
! conditions keywords.

ad_LBC(isFsur) ==   Clo     Clo     Clo     Clo         ! free-surface
ad_LBC(isUbar) ==   Clo     Clo     Clo     Clo         ! 2D U-momentum
ad_LBC(isVbar) ==   Clo     Clo     Clo     Clo         ! 2D U-momentum
ad_LBC(isUvel) ==   Clo     Clo     Clo     Clo         ! 3D U-momentum
ad_LBC(isVvel) ==   Clo     Clo     Clo     Clo         ! 3D V-momentum
ad_LBC(isMtke) ==   Clo     Clo     Clo     Clo         ! mixing TKE

ad_LBC(isTvar) ==   Clo     Clo     Clo     Clo \       ! temperature
                    Clo     Clo     Clo     Clo         ! salinity

! Set lateral open boundary edge volume conservation switch for
! nonlinear model and adjoint-based algorithms. Usually activated
! with radiation boundary conditions to enforce global mass
! conservation, except if tidal forcing is enabled. [1:Ngrids].

   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

! Time-Stepping parameters.

      NTIMES == 124416000
          DT == 50d0 ! 3.33 min
     NDTFAST == 30

! Model iteration loops parameters.

       ERstr =  1
       ERend =  1
      Nouter =  1
      Ninner =  1
  Nintervals =  1

! 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 (see documentation below).

         NEV =  2                               ! Number of eigenvalues
         NCV =  10                              ! Number of eigenvectors

! Input/Output parameters.

       NRREC == 0
   LcycleRST == T
        NRST == 25920 !25920 !12960 ! 15 days 12960
        NSTA == 1
        NFLT == 1
       NINFO == 1

! Output history, average, diagnostic files parameters.

     LDEFOUT == T
        NHIS == 51840 !51840  !25920   ! 30 days
     NDEFHIS == 622080 !622080 !311040  ! 360 day 
      NTSAVG == 1
        NAVG == 864
     NDEFAVG == 0
      NTSDIA == 1
        NDIA == 864
     NDEFDIA == 0

! Output tangent linear and adjoint models parameters.

   LcycleTLM == F
        NTLM == 864
     NDEFTLM == 0
   LcycleADJ == F
        NADJ == 864
     NDEFADJ == 0
        NSFF == 864
        NOBC == 864

! GST output and check pointing restart parameters.

   LmultiGST =  F                               ! one eigenvector per file
     LrstGST =  F                               ! GST restart switch
  MaxIterGST =  500                             ! maximum number of iterations
        NGST =  10                              ! check pointing interval

! Relative accuracy of the Ritz values computed in the GST analysis.

    Ritz_tol =  1.0d-15

! Harmonic/biharmonic horizontal diffusion of tracer for nonlinear model
! and adjoint-based algorithms: [1:NAT+NPT,Ngrids].

        TNU2 ==  10.0d0  10.0d0                    ! m2/s
        TNU4 ==  0.0d0  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 nonlinear model
! and adjoint-based algorithms: [Ngrids].

       VISC2 ==  600.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

! Vertical mixing coefficients for tracers in nonlinear model and
! basic state scale factor in adjoint-based algorithms: [1:NAT+NPT,Ngrids]

     AKT_BAK == 5.0d-5 5.0d-5                   ! m2/s

  ad_AKT_fac == 1.0d0  1.0d0                    ! nondimensional

! Vertical mixing coefficient for momentum for nonlinear model and
! basic state scale factor in adjoint-based algorithms: [Ngrids].

     AKV_BAK == 1.0d-3                          ! m2/s

  ad_AKV_fac == 1.0d0                           ! nondimensional

! Turbulent closure 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.

       GLS_P == 3.0d0                           ! K-epsilon
       GLS_M == 1.5d0
       GLS_N == -1.0d0
    GLS_Kmin == 7.6d-6
    GLS_Pmin == 1.0d-12

    GLS_CMU0 == 0.5477d0
      GLS_C1 == 1.44d0
      GLS_C2 == 1.92d0
     GLS_C3M == -0.4d0
     GLS_C3P == 1.0d0
    GLS_SIGK == 1.0d0
    GLS_SIGP == 1.30d0

! 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 == 2.5d-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 == 20.0d0                     ! m

! Various parameters.

       WTYPE == 1
     LEVSFRC == 15
     LEVBFRC == 1

! Set vertical, terrain-following coordinates transformation equation and
! stretching function (see below for details), [1:Ngrids].

  Vtransform == 2                          ! transformation equation
  Vstretching == 4                          ! stretching function

! Vertical S-coordinates parameters (see below for details), [1:Ngrids].

     THETA_S == 1.0d0                      ! surface stretching parameter
     THETA_B == 1.0d0                      ! bottom  stretching parameter
     TCLINE == 20.0d0                      ! critical depth (m)

! Mean Density and Brunt-Vaisala frequency.

        RHO0 =  1028.0d0                   ! kg/m3
     BVF_BAK =  1.0d-5                     ! 1/s2

! Time-stamp 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].

       TNUDG == 2*0.0d0                    ! days
       ZNUDG == 0.0d0                      ! days
      M2NUDG == 0.0d0                      ! days
      M3NUDG == 0.0d0                      ! days

! Factor between passive (outflow) and active (inflow) open boundary
! conditions, [1:Ngrids]. If OBCFAC > 1, nudging on inflow is stronger
! than on outflow (recommended).

      OBCFAC == 0.0d0                      ! nondimensional

! Linear equation of State parameters:

          R0 == 1027.51d0 !1027.83699d0               ! kg/m3
          T0 == -1.0d0 !-0.2775d0                  ! Celsius
          S0 == 34.2d0 !34.6489d0                  ! nondimensional
       TCOEF == 3.733d-5 !1.7d-4                     ! 1/Celsius
       SCOEF == 7.843d-4 !7.6d-4                     ! 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 transport) and mass point
! Sources/Sinks (like volume vertical influx), [1:Ngrids].

      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].  See glossary below for details.

  LtracerSrc == F F                        ! temperature, salinity, inert

! Logical switches (TRUE/FALSE) to read and process climatology fields.
! See glossary below for details.

     LsshCLM == F                          ! sea-surface height
      Lm2CLM == F                          ! 2D momentum
      Lm3CLM == F                          ! 3D momentum

  LtracerCLM == T T                        ! 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. See glossary below for details.

 LnudgeM2CLM == F                          ! 2D momentum
 LnudgeM3CLM == F                          ! 3D momentum

  LnudgeTCLM == T T                        ! temperature, salinity, inert

! 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 variables
! whose sensitivity is required.

Lstate(isFsur) == F                        ! free-surface
Lstate(isUbar) == F                        ! 2D U-momentum
Lstate(isVbar) == F                        ! 2D V-momentum
Lstate(isUvel) == F                        ! 3D U-momentum
Lstate(isVvel) == F                        ! 3D V-momentum

Lstate(isTvar) == F F                      ! NT tracers

! Logical switches (TRUE/FALSE) to specify the state variables for
! which Forcing Singular Vectors or Stochastic Optimals is required.

Fstate(isFsur) == F                        ! free-surface
Fstate(isUbar) == F                        ! 2D U-momentum
Fstate(isVbar) == F                        ! 2D V-momentum
Fstate(isUvel) == F                        ! 3D U-momentum
Fstate(isVvel) == F                        ! 3D V-momentum
Fstate(isTvar) == F F                      ! NT tracers

Fstate(isUstr) == T                        ! surface U-stress
Fstate(isVstr) == T                        ! surface V-stress
Fstate(isTsur) == F F                      ! NT surface tracers flux

! Stochastic Optimals time decorrelation scale (days) assumed for
! red noise processes.

      SO_decay == 2.0d0                    ! days

! Stochastic Optimals surface forcing standard deviation for
! dimensionalization.

SO_sdev(isFsur) == 1.0d0                   ! free-surface
SO_sdev(isUbar) == 1.0d0                   ! 2D U-momentum
SO_sdev(isVbar) == 1.0d0                   ! 2D V-momentum
SO_sdev(isUvel) == 1.0d0                   ! 3D U-momentum
SO_sdev(isVvel) == 1.0d0                   ! 3D V-momentum
SO_sdev(isTvar) == 1.0d0 1.0d0             ! NT tracers

SO_sdev(isUstr) == 1.0d0                   ! surface U-stress
SO_sdev(isVstr) == 1.0d0                   ! surface V-stress
SO_sdev(isTsur) == 1.0d0 1.0d0             ! NT surface tracers flux

! Logical switches (TRUE/FALSE) to activate writing of fields into
! HISTORY output file.

Hout(idUvel) == T       ! u                  3D U-velocity
Hout(idVvel) == T       ! v                  3D V-velocity
Hout(idu3dE) == F       ! u_eastward         3D U-eastward  at RHO-points
Hout(idv3dN) == F       ! v_northward        3D V-northward at RHO-points
Hout(idWvel) == T       ! w                  3D W-velocity
Hout(idOvel) == T       ! omega              omega vertical velocity
Hout(idUbar) == T       ! ubar               2D U-velocity
Hout(idVbar) == T       ! vbar               2D V-velocity
Hout(idu2dE) == F       ! ubar_eastward      2D U-eastward  at RHO-points
Hout(idv2dN) == F       ! vbar_northward     2D V-northward at RHO-points
Hout(idFsur) == T       ! zeta               free-surface
Hout(idDraft) == T      ! draft              time-dependent iceshelf draft
Hout(idSice) == T       ! sice               time-dependent iceshelf upper surface
Hout(idDddt) == T       ! dddt               time-dependent iceshelf draft change rate
Hout(idDsdt) == T       ! dsdt               time-dependent iceshelf surface change rate
Hout(idBath) == F       ! bath               time-dependent bathymetry
Hout(idismr) == T       ! ismr               ice-shelf melt rate
Hout(idisTb) == T       ! isTb               temperature at ice-shelf base
Hout(idisSb) == T       ! isSb               salinity at ice-shelf base

Hout(idTvar) == T T     ! temp, salt         temperature and salinity

Hout(idUsms) == T       ! sustr              surface U-stress
Hout(idVsms) == T       ! svstr              surface V-stress
Hout(idUbms) == F       ! bustr              bottom U-stress
Hout(idVbms) == F       ! bvstr              bottom V-stress

Hout(idUbrs) == F       ! bustrc             bottom U-current stress
Hout(idVbrs) == F       ! bvstrc             bottom V-current stress
Hout(idUbws) == F       ! bustrw             bottom U-wave stress
Hout(idVbws) == F       ! bvstrw             bottom V-wave stress
Hout(idUbcs) == F       ! bustrcwmax         bottom max wave-current U-stress
Hout(idVbcs) == F       ! bvstrcwmax         bottom max wave-current V-stress

Hout(idUbot) == F       ! Ubot               bed wave orbital U-velocity
Hout(idVbot) == F       ! Vbot               bed wave orbital V-velocity
Hout(idUbur) == F       ! Ur                 bottom U-velocity above bed
Hout(idVbvr) == F       ! Vr                 bottom V-velocity above bed

Hout(idW2xx) == F       ! Sxx_bar            2D radiation stress, Sxx component
Hout(idW2xy) == F       ! Sxy_bar            2D radiation stress, Sxy component
Hout(idW2yy) == F       ! Syy_bar            2D radiation stress, Syy component
Hout(idU2rs) == F       ! Ubar_Rstress       2D radiation U-stress
Hout(idV2rs) == F       ! Vbar_Rstress       2D radiation V-stress
Hout(idU2Sd) == F       ! ubar_stokes        2D U-Stokes velocity
Hout(idV2Sd) == F       ! vbar_stokes        2D V-Stokes velocity

Hout(idW3xx) == F       ! Sxx                3D radiation stress, Sxx component
Hout(idW3xy) == F       ! Sxy                3D radiation stress, Sxy component
Hout(idW3yy) == F       ! Syy                3D radiation stress, Syy component
Hout(idW3zx) == F       ! Szx                3D radiation stress, Szx component
Hout(idW3zy) == F       ! Szy                3D radiation stress, Szy component
Hout(idU3rs) == F       ! u_Rstress          3D U-radiation stress
Hout(idV3rs) == F       ! v_Rstress          3D V-radiation stress
Hout(idU3Sd) == F       ! u_stokes           3D U-Stokes velocity
Hout(idV3Sd) == F       ! v_stokes           3D V-Stokes velocity

Hout(idWamp) == F       ! Hwave              wave height
Hout(idWlen) == F       ! Lwave              wave length
Hout(idWdir) == F       ! Dwave              wave direction
Hout(idWptp) == F       ! Pwave_top          wave surface period
Hout(idWpbt) == F       ! Pwave_bot          wave bottom period
Hout(idWorb) == F       ! Ub_swan            wave bottom orbital velocity
Hout(idWdis) == F       ! Wave_dissip        wave dissipation

Hout(idPair) == T       ! Pair               surface air pressure
Hout(idUair) == F       ! Uair               surface U-wind component
Hout(idVair) == F       ! Vair               surface V-wind component

Hout(idTsur) == T T     ! shflux, ssflux     surface net heat and salt flux
Hout(idLhea) == T       ! latent             latent heat flux
Hout(idShea) == F       ! sensible           sensible heat flux
Hout(idLrad) == F       ! lwrad              longwave radiation flux
Hout(idSrad) == F       ! swrad              shortwave radiation flux
Hout(idEmPf) == F       ! EminusP            E-P flux
Hout(idevap) == F       ! evaporation        evaporation rate
Hout(idrain) == F       ! rain               precipitation rate

Hout(idDano) == T       ! rho                density anomaly
Hout(idVvis) == T       ! AKv                vertical viscosity
Hout(idTdif) == T       ! AKt                vertical T-diffusion
Hout(idSdif) == T       ! AKs                vertical Salinity diffusion
Hout(idHsbl) == F       ! Hsbl               depth of surface boundary layer
Hout(idHbbl) == F       ! Hbbl               depth of bottom boundary layer
Hout(idMtke) == F       ! tke                turbulent kinetic energy
Hout(idMtls) == F       ! gls                turbulent length scale



! 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.
! NPT values are expected. However, these switches can be activated using
! compact parameter specification.

 Hout(inert) == T       ! dye_01, ...        inert passive tracers

! Logical switches (TRUE/FALSE) to activate writing of exposed sediment
! layer properties into HISTORY output file.  Currently, MBOTP properties
! are expected for the bottom boundary layer and/or sediment models:
!
! idBott( 1=isd50)   grain_diameter          mean grain diameter
! idBott( 2=idens)   grain_density           mean grain density
! idBott( 3=iwsed)   settling_vel            mean settling velocity
! idBott( 4=itauc)   erosion_stress          critical erosion stress
! idBott( 5=irlen)   ripple_length           ripple length
! idBott( 6=irhgt)   ripple_height           ripple height
! idBott( 7=ibwav)   bed_wave_amp            wave excursion amplitude
! idBott( 8=izdef)   Zo_def                  default bottom roughness
! idBott( 9=izapp)   Zo_app                  apparent bottom roughness
! idBott(10=izNik)   Zo_Nik                  Nikuradse bottom roughness
! idBott(11=izbio)   Zo_bio                  biological bottom roughness
! idBott(12=izbfm)   Zo_bedform              bed form bottom roughness
! idBott(13=izbld)   Zo_bedload              bed load bottom roughness
! idBott(14=izwbl)   Zo_wbl                  wave bottom roughness
! idBott(15=iactv)   active_layer_thickness  active layer thickness
! idBott(16=ishgt)   saltation               saltation height
!
!                                 1 1 1 1 1 1 1
!               1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6

Hout(idBott) == T T T T T T T T T F F F F F F F

! Logical switches (TRUE/FALSE) to activate writing of time-averaged
! fields into AVERAGE output file.

Aout(idUvel) == T       ! u                  3D U-velocity
Aout(idVvel) == T       ! v                  3D V-velocity
Aout(idu3dE) == F       ! u_eastward         3D U-eastward  at RHO-points
Aout(idv3dN) == F       ! v_northward        3D V-northward at RHO-points
Aout(idWvel) == T       ! w                  3D W-velocity
Aout(idOvel) == T       ! omega              omega vertical velocity
Aout(idUbar) == T       ! ubar               2D U-velocity
Aout(idVbar) == T       ! vbar               2D V-velocity
Aout(idu2dE) == F       ! ubar_eastward      2D U-eastward  at RHO-points
Aout(idv2dN) == F       ! vbar_northward     2D V-northward at RHO-points
Aout(idFsur) == T       ! zeta               free-surface
Aout(idismr) == T       ! meltRate           basal melt rate

Aout(idTvar) == T T     ! temp, salt         temperature and salinity

Aout(idUsms) == F       ! sustr              surface U-stress
Aout(idVsms) == F       ! svstr              surface V-stress
Aout(idUbms) == F       ! bustr              bottom U-stress
Aout(idVbms) == F       ! bvstr              bottom V-stress

Aout(idW2xx) == F       ! Sxx_bar            2D radiation stress, Sxx component
Aout(idW2xy) == F       ! Sxy_bar            2D radiation stress, Sxy component
Aout(idW2yy) == F       ! Syy_bar            2D radiation stress, Syy component
Aout(idU2rs) == F       ! Ubar_Rstress       2D radiation U-stress
Aout(idV2rs) == F       ! Vbar_Rstress       2D radiation V-stress
Aout(idU2Sd) == F       ! ubar_stokes        2D U-Stokes velocity
Aout(idV2Sd) == F       ! vbar_stokes        2D V-Stokes velocity

Aout(idW3xx) == F       ! Sxx                3D radiation stress, Sxx component
Aout(idW3xy) == F       ! Sxy                3D radiation stress, Sxy component
Aout(idW3yy) == F       ! Syy                3D radiation stress, Syy component
Aout(idW3zx) == F       ! Szx                3D radiation stress, Szx component
Aout(idW3zy) == F       ! Szy                3D radiation stress, Szy component
Aout(idU3rs) == F       ! u_Rstress          3D U-radiation stress
Aout(idV3rs) == F       ! v_Rstress          3D V-radiation stress
Aout(idU3Sd) == F       ! u_stokes           3D U-Stokes velocity
Aout(idV3Sd) == F       ! v_stokes           3D V-Stokes velocity

Aout(idPair) == F       ! Pair               surface air pressure
Aout(idUair) == F       ! Uair               surface U-wind component
Aout(idVair) == F       ! Vair               surface V-wind component

Aout(idTsur) == F F     ! shflux, ssflux     surface net heat and salt flux
Aout(idLhea) == F       ! latent             latent heat flux
Aout(idShea) == F       ! sensible           sensible heat flux
Aout(idLrad) == F       ! lwrad              longwave radiation flux
Aout(idSrad) == F       ! swrad              shortwave radiation flux
Aout(idevap) == F       ! evaporation        evaporation rate
Aout(idrain) == F       ! rain               precipitation rate

Aout(idDano) == F       ! rho                density anomaly
Aout(idVvis) == F       ! AKv                vertical viscosity
Aout(idTdif) == F       ! AKt                vertical T-diffusion
Aout(idSdif) == F       ! AKs                vertical Salinity diffusion
Aout(idHsbl) == F       ! Hsbl               depth of surface boundary layer
Aout(idHbbl) == F       ! Hbbl               depth of bottom boundary layer

Aout(id2dRV) == F       ! pvorticity_bar     2D relative vorticity
Aout(id3dRV) == F       ! pvorticity         3D relative vorticity
Aout(id2dPV) == F       ! rvorticity_bar     2D potential vorticity
Aout(id3dPV) == F       ! rvorticity         3D potential vorticity

Aout(idu3dD) == F       ! u_detided          detided 3D U-velocity
Aout(idv3dD) == F       ! v_detided          detided 3D V-velocity
Aout(idu2dD) == F       ! ubar_detided       detided 2D U-velocity
Aout(idv2dD) == F       ! vbar_detided       detided 2D V-velocity
Aout(idFsuD) == F       ! zeta_detided       detided free-surface

Aout(idTrcD) == F F     ! temp_detided, ...  detided temperature and salinity

Aout(idHUav) == F       ! Huon               u-volume flux, Huon
Aout(idHVav) == F       ! Hvom               v-volume flux, Hvom
Aout(idUUav) == F       ! uu                 quadratic <u*u> term
Aout(idUVav) == F       ! uv                 quadratic <u*v> term
Aout(idVVav) == F       ! vv                 quadratic <v*v> term
Aout(idU2av) == F       ! ubar2              quadratic <ubar*ubar> term
Aout(idV2av) == F       ! vbar2              quadratic <vbar*vbar> term
Aout(idZZav) == F       ! zeta2              quadratic <zeta*zeta> term

Aout(idTTav) == F F     ! temp_2, ...        quadratic <t*t> tracer terms
Aout(idUTav) == F F     ! u_temp, ...        quadratic <u*t> tracer terms
Aout(idVTav) == F F     ! v_temp, ...        quadratic <v*t> tracer terms
Aout(iHUTav) == F F     ! Huon_temp, ...     tracer volume flux, <Huon*t>
Aout(iHVTav) == F F     ! Hvom_temp, ...     tracer volume flux, <Hvom*t>

! Logical switches (TRUE/FALSE) to activate writing of extra inert passive
! tracers other than biological and sediment tracers into the AVERAGE file.

 Aout(inert) == T       ! dye_01, ...        inert passive tracers

! Logical switches (TRUE/FALSE) to activate writing of time-averaged,
! 2D momentum (ubar,vbar) diagnostic terms into DIAGNOSTIC 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 DIAGNOSTIC 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 DIAGNOSTIC output file: [1:NAT+NPT,Ngrids].

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, [1:NUSER].

       NUSER =  0
        USER =  0.d0

! NetCDF-4/HDF5 compression parameters for output files.

  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 file names, [1:Ngrids].


     GRDNAME == /g/data/gi0/jz6791/ROMS/ROMSIceShelf_devel_CTRL_5km/isomip_plus_ocean3_5km.nc
     !ININAME == /g/data/gi0/jz6791/ROMS/ROMSIceShelf_devel_CTRL/ocean_rst_0016.nc
     ININAME == ocean_ini.nc
     ITLNAME == ocean_itl.nc
     IRPNAME == ocean_irp.nc
     IADNAME == ocean_iad.nc
     FWDNAME == ocean_fwd.nc
     ADSNAME == ocean_ads.nc

! Nesting grids connectivity data: contact points information. This
! NetCDF file is special and complex. It is currently generated using
! script "matlab/grid/contact.m" from the Matlab repository.

     NGCNAME =  ocean_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 prologue instructions above). If so, use a single
! line per entry with a vertical bar (|) symbol after each entry,
! except the last one.

     BRYNAME == ocean_bry.nc
     CLMNAME == ocean_clm.nc

! Input climatology nudging coefficients file name.

     NUDNAME == ocean_nud.nc

! Input Sources/Sinks forcing (like river runoff) file name.

     SSFNAME == ocean_rivers.nc

! Input forcing NetCDF file name(s).  The USER has the option to enter
! several file names for each nested grid.  For example, the USER may
! have 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 using multiple forcing
! files per grid, first enter 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 prologue instructions above). 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 == ocean_frc.nc               ! forcing file 1, grid 1

! Output NetCDF file names, [1:Ngrids].

     GSTNAME == ocean_gst.nc
     RSTNAME == ocean_rst.nc
     HISNAME == ocean_his.nc
     TLMNAME == ocean_tlm.nc
     TLFNAME == ocean_tlf.nc
     ADJNAME == ocean_adj.nc
     AVGNAME == ocean_avg.nc
     DIANAME == ocean_dia.nc
     STANAME == ocean_sta.nc
     FLTNAME == ocean_flt.nc

! Input ASCII parameter filenames.

     APARNAM =  ROMS/External/s4dvar.in
     SPOSNAM =  ROMS/External/stations.in
     FPOSNAM =  ROMS/External/floats.in
     BPARNAM =  ROMS/External/bio_Fennel.in
     SPARNAM =  ROMS/External/sediment.in
     USRNAME =  ROMS/External/MyFile.dat

!
!  GLOSSARY:
!  =========
!
!------------------------------------------------------------------------------
! Application title (string with a maximum of eighty characters) and
! C-preprocessing flag.
!------------------------------------------------------------------------------
!
! TITLE        Application title.
!
! MyAppCPP     Application C-preprocessing option.
!
!------------------------------------------------------------------------------
! Variable information file name (string with a maximum of 256 characters).
!------------------------------------------------------------------------------
!
! VARNAME      Input/Output variable information file name.  This file needs to
!                be processed first so all information arrays and indices can
!                be initialized properly in "mod_ncparam.F".
!
!------------------------------------------------------------------------------
! Nested grid parameters (processing order of these parameters is important).
!------------------------------------------------------------------------------
!
! Ngrids       Number of nested grids. It needs to be read before all other
!                parameters in order to allocate all model variables.
!
! NestLayers   Number of grid nesting layers. It is used to allow applications
!                with both composite and refinement grid combinations, as shown
!                in WikiROMS diagrams for the Refinement and Partial Boundary
!                Composite Sub-Classes. See,
!
!                https://www.myroms.org/wiki/index.php/Nested_Grids
!
!                In non-nesting applications, set NestLayers = 1.
!
! GridsInLayer Number of grids in each nested layer, a vector of size
!                [1:NestLayers]. Notice that,
!
!                SUM(GridsInLayer)    = Ngrids
!                LENGHT(GridsInLayer) = NestLayers
!
!                The order of grids and nesting layers is extremely important.
!                It determines the order of the sequential solution at every
!                sub-time step.  See WikiROMS nesting Sub-Classes diagrams.
!
!                In non-nesting applications, set GridsInLayer = 1.
!
!                NOTE:  In main3d, we use these parameters to determine which
!                ====   grid index, ng, to solve when calling the routines of
!                       the computational kernel:
!
!                  NEST_LAYER : DO nl=1,NestLayers
!                    ...
!                    STEP_LOOP : DO istep=1,Nsteps
!                      ...
!                      DO ig=1,GridsInLayer(nl)
!                        ng=GridNumber(ig,nl)
!                        ...
!                      END DO
!                      ...
!                    END DO STEP_LOOP
!                  END DO NEST_LAYER
!
!                Here, the grid order "ng" for the computations is determined
!                from array "GridNumber", which is computed at initialization
!                in "read_phypar.F". It can be computed on the fly as:
!
!                  ng=Ngrids+1
!                  DO j=NestLayers,nl,-1
!                    DO i=GridsInLayer(j),1,-1
!                      ng=ng-1
!                      IF ((j.eq.nl).and.(i.eq.ig)) EXIT
!                    END DO
!                  END DO
!
!                but it is too inefficient. This information is provided here
!                to help you configure the order of nested grids.
!
!------------------------------------------------------------------------------
! Grid dimension parameters.
!------------------------------------------------------------------------------
!
! These parameters are very important since they determine the grid of the
! application to solve. They need to be read first in order to dynamically
! allocate all model variables.
!
! WARNING: It is trivial and possible to change these dimension parameters in
! -------  idealized applications via analytical expressions.  However, in
! realistic applications any change to these parameters requires redoing all
! input NetCDF files.
!
! Lm           Number of INTERIOR grid RHO-points in the XI-direction for
!                each nested grid, [1:Ngrids]. If using NetCDF files as
!                input, Lm=xi_rho-2 where "xi_rho" is the NetCDF file
!                dimension of RHO-points. Recall that all RHO-point
!                variables have a computational I-range of [0:Lm+1].
!
! Mm           Number of INTERIOR grid RHO-points in the ETA-direction for
!                each nested grid, [1:Ngrids]. If using NetCDF files as
!                input, Mm=eta_rho-2 where "eta_rho" is the NetCDF file
!                dimension of RHO-points. Recall that all RHO-point
!                variables have a computational J-range of [0:Mm+1].
!
! N            Number of vertical terrain-following levels at RHO-points,
!                [1:Ngrids].
!
! Nbed         Number of sediment bed layers, [1:Ngrids]. This parameter
!                is only relevant if CPP option SEDIMENT is activated.
!
!                Mm+1  ___________________                _______  Kw = N
!                     |                   |              |       |
!                  Mm |   _____________   |              |       | Kr = N
!                     |  |             |  |              |_______|
!                     |  |             |  |              |       |
!                  Jr |  |             |  |              |       |
!                     |  |             |  |              |_______|
!                     |  |             |  |              |       |
!                   1 |  |_____________|  |              |       |
!                     |                   |              |_______|
!                   0 |___________________|              |       |
!                              Ir                        |       | 1
!                     0  1            Lm  Lm+1    h(i,j) |_______|
!                                                        ::::::::: 0
!                                                        :::::::::
!                                                        ::::::::: Nbed-1
!                                                        ::::::::: Nbed
!
! NAT          Number of active tracer type variables. Usually, NAT=2 for
!                potential temperature and salinity.
!
! NPT          Number of inert (dyes, age, etc) passive tracer type variables
!                to advect and diffuse only. This parameter is only relevant
!                if CPP option T_PASSIVE is activated.
!
! NCS          Number of cohesive (mud) sediment tracer type variables. This
!                parameter is only relevant if CPP option SEDIMENT is
!                activated.
!
! NNS          Number of non-cohesive (sand) sediment tracer type variables.
!                This parameter is only relevant if CPP option SEDIMENT is
!                activated.
!
!              The total number of sediment tracers is NST=NCS+NNS.  Notice
!              that NST must be greater than zero (NST>0).
!
!------------------------------------------------------------------------------
! Domain tile partition parameters.
!------------------------------------------------------------------------------
!
! Model tile decomposition parameters for serial and parallel configurations
! which are used to determine tile horizontal range indices (Istr,Iend and
! Jstr,Jend). In some computers, it is advantageous to have tile partitions
! in serial applications.
!
! NtileI       Number of domain partitions in the I-direction (XI-coordinate).
!                It must be equal to or greater than one.
!
! NtileJ       Number of domain partitions in the J-direction (ETA-coordinate).
!                It must be equal to or greater than one.
!
! WARNING:     In shared-memory (OpenMP), the product of NtileI and NtileJ must
!              be a MULTIPLE of the number of parallel threads specified with
!              the OpenMP environmental variable OMP_NUM_THREADS.
!
!              In distributed-memory (MPI), the product of NtileI and NtileJ
!              must be EQUAL to the number of parallel nodes specified during
!              execution with the "mprun" or "mpirun" command.
!
!------------------------------------------------------------------------------
! Lateral 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 structured array:
!
!    LBC(1:4, nLBCvar, Ngrids)
!
! where 1:4 are the number of boundary edges, nLBCvar are the number of LBC
! state variables, and Ngrids is the number of nested grids. For Example, to
! apply gradient boundary conditions 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. This 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_implicit (free-surface only)
!   Che        Chapman_explicit (free-surface only)
!   Cla        Clamped
!   Clo        Closed
!   Fla        Flather (2D momentum only)             _____N_____     j=Mm
!   Gra        Gradient                              |     4     |
!   Nes        Nested (refinement only)              |           |
!   Nud        Nudging                             1 W           E 3
!   Per        Periodic                              |           |
!   Rad        Radiation                             |_____S_____|
!   Red        Reduced Physics (2D momentum only)          2          j=1
!   Shc        Shchepetkin (2D momentum only)       i=1         i=Lm
!
! LBC(isFsur) Free-surface,  [1:4, Ngrids] values are expected.
! LBC(isUbar) 2D U-momentum, [1:4, Ngrids] values are expected.
! LBC(isVbar) 2D V-momentum, [1:4, Ngrids] values are expected.
! LBC(isUvel) 3D U-momentum, [1:4, Ngrids] values are expected.
! LBC(isVvel) 3D V-momentum, [1:4, Ngrids] values are expected.
! LBC(isMtke) Mixing TKE,    [1:4, Ngrids] values are expected.
! LBC(isTvar) Tracers,       [1:4, 1:NAT+NPT, Ngrids] values are expected.
!
! Similarly, the adjoint-based algorithms (ADM, TLM, RPM) can have different
! lateral boundary conditions keywords:
!
! ad_LBC(isFsur) Free-surface,  [1:4, Ngrids] values are expected.
! ad_LBC(isUbar) 2D U-momentum, [1:4, Ngrids] values are expected.
! ad_LBC(isVbar) 2D V-momentum, [1:4, Ngrids] values are expected.
! ad_LBC(isUvel) 3D U-momentum, [1:4, Ngrids] values are expected.
! ad_LBC(isVvel) 3D V-momentum, [1:4, Ngrids] values are expected.
! ad_LBC(isMtke) Mixing TKE,    [1:4, Ngrids] values are expected.
! ad_LBC(isTvar) Tracers,       [1:4, 1:NAT+NPT, Ngrids] values are expected.
!
! Lateral open boundary edge volume conservation switch for nonlinear model
! and adjoint-based algorithm. Usually activated with radiation boundary
! conditions to enforce global mass conservation. Notice that these switches
! should not be activated if tidal forcing is enabled, [1:Ngrids] values are
! expected.
!
! VolCons(west)       Western  boundary volume conservation switch.
! VolCons(east)       Eastern  boundary volume conservation switch.
! VolCons(south)      Southern boundary volume conservation switch.
! VolCons(north)      Northern boundary volume conservation switch.
!
! ad_VolCons(west)    Western  boundary volume conservation switch.
! ad_VolCons(east)    Eastern  boundary volume conservation switch.
! ad_VolCons(south)   Southern boundary volume conservation switch.
! ad_VolCons(north)   Northern boundary volume conservation switch.
!
!------------------------------------------------------------------------------
! Time-Stepping parameters.
!------------------------------------------------------------------------------
!
! NTIMES       Total number time-steps in current run.  If 3D configuration,
!                NTIMES is the total of baroclinic time-steps.  If only 2D
!                configuration, NTIMES is the total of barotropic time-steps.
!
! DT           Time-Step size in seconds.  If 3D configuration, DT is the
!                size of the baroclinic time-step.  If only 2D configuration,
!                DT is the size of the barotropic time-step.
!
! NDTFAST      Number of barotropic time-steps between each baroclinic time
!                step. If only 2D configuration, NDTFAST should be unity since
!                there is no need to split time-stepping.
!
!------------------------------------------------------------------------------
! Model iteration loops parameters.
!------------------------------------------------------------------------------
!
! ERstr        Starting ensemble run (perturbation or iteration) number.
!
! ERend        Ending   ensemble run (perturbation or iteration) number.
!
! Nouter       Maximum number of 4DVAR outer loop iterations.
!
! Ninner       Maximum number of 4DVAR inner loop iterations.
!
! Nintervals   Number of time interval divisions for Stochastic Optimals
!                computations. It must be a multiple of NTIMES. The tangent
!                linear model (TLM) and the adjoint model (ADM) are integrated
!                forward and backward at different intervals.  For example,
!                if Nintervals=3,
!
!              1               NTIMES/3         2*NTIMES/3           NTIMES
!              +..................+..................+..................+
!              <========================================================> (1)
!                                 <=====================================> (2)
!                                                    <==================> (3)
!
!              In the first iteration (1), the TLM is integrated forward from
!              1 to NTIMES and the ADM is integrated backward from NTIMES to 1.
!              In the second iteration (2), the TLM is integrated forward from
!              NTIMES/3 to NTIMES and the ADM is integrated backward from
!              NTIMES to NTIMES/3. And so on.
!
!------------------------------------------------------------------------------
! Eigenproblem parameters.
!------------------------------------------------------------------------------
!
! NEV          Number of eigenvalues to compute for the Lanczos/Arnoldi
!                problem.  Notice that the model memory requirement increases
!                substantially as NEV increases.  The GST requires NEV+1
!                copies of the model state vector.  The memory requirements
!                are decreased in distributed-memory applications.
!
! NCV          Number of eigenvectors to compute for the Lanczos/Arnoldi
!                problem. NCV must be greater than NEV.
!
!  At present, there is no a-priori 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 greater than or
!  equal to 2*NEV. In Finite Time Eigenmodes (FTE) and Adjoint Finite Time
!  Eigenmodes (AFTE) the requirement is to have NCV greater than or equal to
!  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 a very long time.
!
!------------------------------------------------------------------------------
! Input/Output parameters.
!------------------------------------------------------------------------------
!
! NRREC        Switch to indicate re-start from a previous solution.  Use
!                NRREC=0 for new solutions. In a re-start solution, NRREC
!                is the time index of the re-start NetCDF file assigned for
!                initialization.  If NRREC is negative (say NRREC=-1), the
!                model will re-start from the most recent time record. That
!                is, the initialization record is assigned internally.
!                Notice that it is also possible to re-start from a history
!                or time-averaged NetCDF file.  If a history file is used
!                for re-start, it must contains all the necessary primitive
!                variables at all levels.
!
! LcycleRST    Logical switch (T/F) used to recycle time records in output
!                re-start file.  If TRUE,  only the latest two re-start time
!                records are maintained.  If FALSE, all re-start fields are
!                saved every NRST time-steps without recycling.  The re-start
!                fields are written at all levels in double precision.
!
! NRST         Number of time-steps between writing of re-start fields.
!
! NSTA         Number of time-steps between writing data into stations file.
!                Station data is written at all levels.
!
! NFLT         Number of time-steps between writing data into floats file.
!
! NINFO        Number of time-steps between print of single line information
!                to standard output.  It also determines the interval between
!                computation of global energy diagnostics.
!
!------------------------------------------------------------------------------
!  Output history and average files parameters.
!------------------------------------------------------------------------------
!
! LDEFOUT      Logical switch (T/F) used to create new output files when
!                initializing from a re-start file, abs(NRREC) > 0.  If TRUE
!                and applicable, a new history, average, diagnostic and
!                station files are created during the initialization stage.
!                If FALSE and applicable, data is appended to existing
!                history, average, diagnostic and station files.  See also
!                parameters NDEFHIS, NDEFAVG and NDEFDIA below.
!
! NHIS         Number of time-steps between writing fields into history file.
!
! NDEFHIS      Number of time-steps between the creation of new history file.
!                If NDEFHIS=0, the model will only process one history file.
!                This feature is useful for long simulations when history files
!                get too large; it creates a new file every NDEFHIS time-steps.
!
! NTSAVG       Starting time-step for the accumulation of output time-averaged
!                data.
!
! NAVG         Number of time-steps between writing time-averaged data
!                into averages file.  Averaged date is written for all fields.
!
! NDEFAVG      Number of time-steps between the creation of new average
!                file.  If NDEFAVG=0, the model will only process one average
!                file.  This feature is useful for long simulations when
!                average files get too large; it creates a new file every
!                NDEFAVG time-steps.
!
! NTSDIA       Starting time-step for the accumulation of output time-averaged
!                diagnostics data.
!
! NDIA         Number of time-steps between writing time-averaged diagnostics
!                data into diagnostics file.  Averaged date is written for all
!                fields.
!
! NDEFDIA      Number of time-steps between the creation of new time-averaged
!                diagnostics file.  If NDEFDIA=0, the model will only process
!                one diagnostics file.  This feature is useful for long
!                simulations when diagnostics files get too large; it creates
!                a new file every NDEFDIA time-steps.
!
!------------------------------------------------------------------------------
!  Output tangent linear and adjoint model parameters.
!------------------------------------------------------------------------------
!
! LcycleTLM    Logical switch (T/F) used to recycle time records in output
!                tangent linear file.  If TRUE, only the latest two time
!                records are maintained.  If FALSE, all tangent linear fields
!                are saved every NTLM time-steps without recycling.
!
! NTLM         Number of time-steps between writing fields into tangent linear
!                model file.
!
! NDEFTLM      Number of time-steps between the creation of new tangent linear
!                file. If NDEFTLM=0, the model will only process one tangent
!                linear file. This feature is useful for long simulations when
!                output NetCDF files get too large; it creates a new file every
!                NDEFTLM time-steps.
!
! LcycleADJ    Logical switch (T/F) used to recycle time records in output
!                adjoint file.  If TRUE, only the latest two time records are
!                maintained.  If FALSE, all tangent linear fields re saved
!                every NADJ time-steps without recycling.
!
! NADJ         Number of time-steps between writing fields into adjoint model
!                file.
!
! NDEFADJ      Number of time-steps between the creation of new adjoint file.
!                If NDEFADJ=0, the model will only process one adjoint file.
!                This feature is useful for long simulations when output NetCDF
!                files get too large; it creates a new file every NDEFADJ
!                time-steps.
!
! NSFF         Number of time-steps between 4DVAR adjustment of surface forcing
!                fluxes. In strong constraint 4DVAR, it is possible to adjust
!                surface forcing at other time intervals in addition to initial
!                time.  This parameter is used to store the appropriate number
!                of surface forcing records in the output history NetCDF files:
!                1+NTIMES/NSFF records. NSFF must be a factor of NTIMES or
!                greater than NTIMES. If NSFF > NTIMES, only one record is
!                stored in the NetCDF files and the adjustment is for constant
!                forcing with constant correction. This parameter is only
!                relevant in 4DVAR when activating either ADJUST_STFLUX or
!                ADJUST_WSTRESS.
!
! NOBC         Number of time-steps between 4DVAR adjustment of open boundary
!                fields. In strong constraint 4DVAR, it is possible to adjust
!                open boundaries at other time intervals in addition to initial
!                time.  This parameter is used to store the appropriate number
!                of open boundary records in the output history NetCDF files:
!                1+NTIMES/NOBC records. NOBC must be a factor of NTIMES or
!                greater than NTIMES. If NOBC > NTIMES, only one record is
!                stored in the NetCDF files and the adjustment is for constant
!                forcing with constant correction. This parameter is only
!                relevant in 4DVAR when activating ADJUST_BOUNDARY.
!
!------------------------------------------------------------------------------
!  Generalized Stability Theory (GST) analysis parameters.
!------------------------------------------------------------------------------
!
! LmultiGST    Logical switch (TRUE/FALSE) to write out one GST analysis
!                eigenvector per history file.
!
! LrstGST      Logical switch (TRUE/FALSE) to restart GST analysis. If TRUE,
!                the check pointing data is read in from the GST restart NetCDF
!                file.  If FALSE and applicable, the check pointing GST data is
!                saved and overwritten every NGST iterations of the algorithm.
!
! MaxIterGST   Maximum number of GST algorithm iterations.
!
! NGST         Number of GST iterations between storing of check pointing
!                data into NetCDF file. The restart data is always saved if
!                MaxIterGST is reached without convergence. It is also saved
!                when convergence is achieved. It is always a good idea to
!                save the check pointing data at regular intervals so there
!                is a mechanism to recover from an unexpected interruption
!                in this very expensive computation. The check pointing data
!                can be used also to recompute the Ritz vectors by changing
!                some of the parameters, like convergence criteria (Ritz_tol)
!                and number of Arnoldi iterations (iparam(3)).
!
! Ritz_tol     Relative accuracy of the Ritz values computed in the GST
!                analysis.
!
!------------------------------------------------------------------------------
! Harmonic/Biharmonic horizontal diffusion for active tracers and viscosity
! for momentum.
!------------------------------------------------------------------------------
!
! TNU2         Nonlinear model lateral, harmonic, constant, mixing
!                coefficient (m2/s) for active (NAT) and inert (NPT) tracer
!                variables. If variable horizontal diffusion is activated,
!                TNU2 is the mixing coefficient for the largest grid-cell
!                in the domain.
!
! TNU4         Nonlinear model lateral, biharmonic, constant, mixing
!                coefficient (m4/s) for active (NAT) and inert (NPT) tracer
!                variables. If variable horizontal diffusion is activated,
!                TNU4 is the mixing coefficient for the largest grid-cell
!                in the domain.
!
! ad_TNU2      Adjoint-based algorithms lateral, harmonic, constant, mixing
!                coefficient (m2/s) for active (NAT) and inert
