cppdefs.h
Internal header file containing all the C-preprocessing options that defines a particular application. It is included at the top of every ROMS source file. The application CPP option is specified in the makefile definition ROMS_APPLICATION. The application header file is determined during compilation as the lowercase value of ROMS_APPLICATION with the .h extension and loaded into the ROMS_HEADER definition. Then, during C-preprocessing the application header file is included in cppdefs.h using the following directive:
#if defined ROMS_HEADER
# include ROMS_HEADER
#else
CPPDEFS - Choose an appropriate ROMS application.
#endif
Options associated with momentum equations
- The default horizontal advection is 3rd-order upstream bias for 3D momentum and 4th-order centered for 2D momentum. The default vertical advection is 4th-order centered for 3D momentum. If this is the case, no flags for momentum advection need to be activated.
- The 3rd-order upstream split advection (UV_U3ADV_SPLIT) can be used to correct for the spurious mixing of the advection operator in terrain-following coordinates. If this is the case, the advection operator is split in advective and viscosity components and several internal flags are activated in "globaldefs.h". Notice that horizontal and vertical advection of momentum is 4th-order centered plus biharmonic viscosity to correct for spurious mixing. The total time-dependent horizontal mixing coefficient are computed in hmixing.F.
Warning: Use the splines vertical advection option (UV_SADVECTION) only in idealized, high vertical resolution applications.
|
UV_ADV
|
use to activate advection terms
|
UV_COR
|
use to activate Coriolis term
|
UV_U3ADV_SPLIT
|
use if 3rd-order upstream split momentum advection
|
UV_C2ADVECTION
|
use to activate 2nd-order centered advection
|
UV_C4ADVECTION
|
use to activate 4th-order centered advection
|
UV_SADVECTION
|
use to activate splines vertical advection
|
UV_VIS2
|
use to activate harmonic horizontal mixing
|
UV_VIS4
|
use to activate biharmonic horizontal mixing
|
UV_SMAGORINSKY
|
use to turn ON or OFF Smagorinsky-like viscosity
|
UV_DRAG_GRID
|
use if spatially varying bottom friction parameters
|
UV_LOGDRAG
|
use to activate logarithmic bottom friction
|
UV_LDRAG
|
use to activate linear bottom friction
|
UV_QDRAG
|
use to activate quadratic bottom friction
|
SPLINES_VVISC
|
use if splines reconstruction of vertical viscosity
|
Option to limit bottom stress
- Do not allow the bottom stress components to change the direction of bottom momentum (change sign of velocity components).
Options associated with tracers equations
- The default horizontal and vertical advection is 4th-order centered. Use the splines vertical advection option is shallow, high vertical resolution applications.
|
TS_DIF2
|
use to turn ON or OFF harmonic horizontal mixing
|
TS_DIF4
|
use to turn ON or OFF biharmonic horizontal mixing
|
TS_SMAGORINSKY
|
use to turn ON or OFF Smagorinsky-like diffusion
|
TS_FIXED
|
use if diagnostic run, no evolution of tracers
|
T_PASSIVE
|
use if inert passive tracers (dyes, etc)
|
AGE_MEAN
|
use if computing Mean Age of inert passive tracers
|
NONLIN_EOS
|
use if using nonlinear equation of state
|
QCORRECTION
|
use if net heat flux correction
|
SALINITY
|
use if having salinity
|
SCORRECTION
|
use if freshwater flux correction
|
SOLAR_SOURCE
|
use if solar radiation source term
|
SPLINES_VDIFF
|
use if splines reconstruction of vertical diffusion
|
SRELAXATION
|
use if salinity relaxation as a freshwater flux
|
WTYPE_GRID
|
use to turn ON spatially varying Jerlov water type
|
Option to suppress further surface cooling
- Use this option to suppress further surface cooling if the SST is at freezing point or below and the net surface heat flux is cooling:
Option for MPDATA 3D Advection
- Hadvection(itrc,ng)%MPDATA and Vadvection(itrc,ng)%MPDATA switches.
Options for pressure gradient algorithm
- If no option is selected, the pressure gradient term is computed using standard density Jacobian algorithm. Notice that there are two quartic pressure Jacobian options. They differ on how the WENO reconciliation step is done and in the monotonicity constraining algorithms.
|
DJ_GRADPS
|
use if splines density Jacobian (Shchepetkin, 2000)
|
PJ_GRADP
|
use if finite volume Pressure Jacobian (Lin,1997)
|
PJ_GRADPQ2
|
use if quartic 2 Pressure Jacobian (Shchepetkin,2000)
|
PJ_GRADPQ4
|
use if quartic 4 Pressure Jacobian (Shchepetkin,2000)
|
WJ_GRADP
|
use if weighted density Jacobian (Song,1998)
|
|
|
ATM_PRESS
|
use to impose atmospheric pressure onto sea surface
|
PRESS_COMPENSATE
|
use to compensate for boundary without ATM pressure
|
Options for atmospheric boundary layer surface fluxes
- It is possible to compute surface wind stress and surface net heat and freshwater fluxes form atmospheric fields using the bulk flux parameterization of Fairall et al. (1996). There are three ways to provide longwave radiation in the atmospheric boundary layer: (i) compute the net longwave radiation internally using the Berliand (1952) equation (LONGWAVE) as function of air temperature, sea surface temperature, relative humidity, and cloud fraction; (ii) provide (read) longwave downwelling radiation only and then add outgoing longwave radiation (LONGWAVE_OUT) as a function of the model sea surface temperature; and (iii) provide net longwave radiation (default).
Options for wave roughness formulation in bulk fluxes
Options for shortwave radiation
- The shortwave radiation can be computed using the global albedo equation with a cloud correction. Alternatively, input shortwave radiation data computed from averaged data (with snapshots greater or equal than 24 hours) can be modulated by the local diurnal cycle which is a function longitude, latitude and year day.
|
ALBEDO
|
use if albedo equation for shortwave radiation
|
DIURNAL_SRFLUX
|
use to impose shortwave radiation local diurnal cycle
|
Options for model configuration
Options for Lagrangian drifters
|
FLOATS
|
use to activate simulated Lagrangian drifters
|
FLOAT_OYSTER
|
use to activate oyster model behavior in floats
|
FLOAT_STICKY
|
ues to reflect/stick floats that hit surface/bottom
|
FLOAT_VWALK
|
use if vertical random walk
|
VWALK_FORWARD
|
use if forward time stepping vertical random walk
|
Options for analytical fields configuration
- The model may be configured, initialized, and forced with analytical expressions. These analytical expressions are coded in several header files which are included in analytical.F. The analytical header files in the ROMS/Functionals sub-directory correspond to all the distributed idealized test cases. Another set of analytical header files templates are provided in the User/Functionals sub-directory.
|
ANA_BIOLOGY
|
use if analytical biology initial conditions
|
ANA_BPFLUX
|
use if analytical bottom passive tracers fluxes
|
ANA_BSFLUX
|
use if analytical bottom salinity flux
|
ANA_BTFLUX
|
use if analytical bottom temperature flux
|
ANA_CLOUD
|
use if analytical cloud fraction
|
ANA_DIAG
|
use if customized diagnostics
|
ANA_DQDSST
|
use if analytical surface heat flux sensitivity to SST
|
ANA_DRAG
|
use if analytical spatially varying drag parameters
|
ANA_FSOBC
|
use if analytical free-surface boundary conditions
|
ANA_GRID
|
use if analytical model grid set-up
|
ANA_HUMIDITY
|
use if analytical surface air humidity
|
ANA_INITIAL
|
use if analytical initial conditions
|
ANA_M2CLIMA
|
use if analytical 2D momentum climatology
|
ANA_M2OBC
|
use if analytical 2D momentum boundary conditions
|
ANA_M3CLIMA
|
use if analytical 3D momentum climatology
|
ANA_M3OBC
|
use if analytical 3D momentum boundary conditions
|
ANA_MASK
|
use if analytical Land/Sea masking
|
ANA_NUDGCOEF
|
use if analytical climatology nudging coefficients
|
ANA_PAIR
|
use if analytical surface air pressure
|
ANA_PASSIVE
|
use if analytical initial conditions for inert tracers
|
ANA_PERTURB
|
use if analytical perturbation of initial conditions
|
ANA_PSOURCE
|
use if analytical point Sources/Sinks
|
ANA_RAIN
|
use if analytical rain fall rate
|
ANA_SEDIMENT
|
use if analytical sediment initial fields
|
ANA_SMFLUX
|
use if analytical surface momentum stress
|
ANA_SPFLUX
|
use if analytical surface passive tracers fluxes
|
ANA_SPINNING
|
use if analytical time-varying rotation force
|
ANA_SPONGE
|
use if analytical enhanced viscosity/diffusion sponge
|
ANA_SRFLUX
|
use if analytical surface shortwave radiation flux
|
ANA_SSFLUX
|
use if analytical surface salinity flux
|
ANA_SSH
|
use if analytical sea surface height
|
ANA_SSS
|
use if analytical sea surface salinity
|
ANA_SST
|
use if analytical SST and dQdSST
|
ANA_STFLUX
|
use if analytical surface temperature flux
|
ANA_TAIR
|
use if analytical surface air temperature
|
ANA_TCLIMA
|
use if analytical tracers climatology
|
ANA_TOBC
|
use if analytical tracers boundary conditions
|
ANA_VMIX
|
use if analytical vertical mixing coefficients
|
ANA_WINDS
|
use if analytical surface winds
|
ANA_WWAVE
|
use if analytical wind induced waves
|
Options for horizontal mixing of momentum
|
VISC_GRID
|
use to scale viscosity coefficient by grid size
|
MIX_S_UV
|
use if mixing along constant S-surfaces
|
MIX_GEO_UV
|
use if mixing along geopotential (constant Z) surfaces
|
Options for horizontal mixing of tracers
|
DIFF_GRID
|
use to scale diffusion coefficients by grid size
|
MIX_S_TS
|
use if mixing along constant S-surfaces
|
MIX_GEO_TS
|
use if mixing along geopotential (constant depth) surfaces
|
MIX_ISO_TS
|
use if mixing along epineutral (constant density) surfaces
|
TS_MIX_CLIMA
|
use if diffusion of tracer perturbation (t-tclm)
|
TS_MIX_MAX_SLOPE
|
use if maximum slope in epineutral diffusion
|
TS_MIX_MIN_STRAT
|
use if minimum stratification in epineutral diffusion
|
TS_MIX_STABILITY
|
use if weighting diffusion between two time levels
|
Options for vertical mixing of momentum and tracers
- There are several vertical mixing parameterizations in ROMS. Activate only one closure.
Options for the Generic Length-Scale closure
- The Generic Length Scale (GLS) uses two prognostic equations for turbulent kinetic energy (TKE) and length scale (ψ) variables. The GLS may be configured as k-kl, k-ε k-ω by tuning several parameters in roms.in, see Warner et al., 2005 for more details. The default horizontal advection is third-order upstream bias. The default vertical advection is 4th-order centered advection.
|
CANUTO_A
|
use if Canuto A-stability function formulation
|
CANUTO_B
|
use if Canuto B-stability function formulation
|
CHARNOK
|
use if Charnok surface roughness from wind stress
|
CRAIG_BANNER
|
use if Craig and Banner wave breaking surface flux
|
KANTHA_CLAYSON
|
use if Kantha and Clayson stability function
|
K_C2ADVECTION
|
use if 2nd-order centered advection
|
K_C4ADVECTION
|
use if 4th-order centered advection
|
N2S2_HORAVG
|
use if horizontal smoothing of buoyancy/shear
|
RI_SPLINES
|
use if splines reconstruction for vertical sheer
|
ZOS_HSIG
|
use if surface roughness from wave amplitude
|
TKE_WAVEDISS
|
use if wave breaking surface flux from wave amplitude
|
Options for the Mellor/Yamada level 2.5 closure
- This is the original closure proposed by Mellor and Yamda (1982) and latter modified by Galperin et al. (1994). The default horizontal advection is third-order upstream bias. The default vertical advection is 4th-order centered advection.
Options for K-profile vertical mixing parameterization
|
LMD_BKPP
|
use if bottom boundary layer KPP mixing
|
LMD_CONVEC
|
use to add convective mixing due to shear instability
|
LMD_DDMIX
|
use to add double-diffusive mixing
|
LMD_NONLOCAL
|
use if nonlocal transport
|
LMD_RIMIX
|
use to add diffusivity due to shear instability
|
LMD_SHAPIRO
|
use if Shapiro filtering boundary layer depth
|
LMD_SKPP
|
use if surface boundary layer KPP mixing
|
RI_SPLINES
|
use if splines reconstruction for vertical sheer
|
Options for Richardson number smoothing
- Mostly all vertical mixing parameterization are based on the Richardson Number (buoyancy/shear ratio). This computation is usually noisy and requires some smoothing. Use the options below if RI_SPLINES is not activated.
|
RI_HORAVG
|
use if horizontal Richardson number smoothing
|
RI_VERAVG
|
use if vertical Richardson number smoothing
|
Options for Meinte Blass bottom boundary layer closure
- The Options MB_Z0BL and MB_Z0RIP should be activated concurrently.
|
MB_BBL
|
use if Meinte Blaas BBL closure
|
MB_CALC_ZNOT
|
use if computing bottom roughness internally
|
MB_CALC_UB
|
use if computing bottom orbital velocity internally
|
MB_Z0BIO
|
use if biogenic bedform roughness for ripples
|
MB_Z0BL
|
use if bedload roughness for ripples
|
MB_Z0RIP
|
use if bedform roughness for ripples
|
Options for Styles and Glenn (2000) bottom boundary layer closure
|
SG_BBL
|
use if Styles and Glenn (2000) BBL closure
|
SG_CALC_ZNOT
|
use if computing bottom roughness internally
|
SG_CALC_UB
|
use if computing bottom orbital velocity internally
|
SG_LOGINT
|
use if logarithmic interpolation of (Ur,Vr)
|
Options for the Sherwood/Signell/Warner bottom boundary layer closure
|
SSW_BBL
|
use if Sherwood et al. BBL closure
|
SSW_CALC_ZNOT
|
use if computing bottom roughness internally
|
SSW_LOGINT
|
use if logarithmic interpolation of (Ur,Vr)
|
SSW_CALC_UB
|
use if computing bottom orbital velocity internally
|
SSW_FORM_DRAG_COR
|
use to activate form drag coefficient
|
SSW_Z0BIO
|
use if biogenic bedform roughness from ripples
|
SSW_Z0BL
|
use if bedload roughness for ripples
|
SSW_Z0RIP
|
use if bedform roughness from ripples
|
Options for lateral boundary conditions
Options for tidal forcing at open boundaries
- The tidal data is processed in terms of tidal components, classified by period. The tidal forcing is computed for the full horizontal grid. If requested, the tidal forcing is added to the processed open boundary data. Both tidal elevation and tidal currents are required to force the model properly. However, if only the tidal elevation is available, the tidal currents at the open boundary can be estimated using reduced physics equations. Only the pressure gradient, Coriolis, and surface and bottom stresses terms are considered at the open boundary. See u2dbc_im.F or v2dbc_im.F for details. Notice that there is an additional option (FSOBC_REDUCED) for the computation of the pressure gradient term in both Flather or reduced physics conditions (*_M2FLATHER, *_M2REDUCED).
|
SSH_TIDES
|
use if imposing tidal elevation
|
UV_TIDES
|
use if imposing tidal currents
|
RAMP_TIDES
|
use if ramping (over one day) tidal forcing
|
FSOBC_REDUCED
|
use if SSH data and reduced physics conditions
|
ADD_FSOBC
|
use to add tidal elevation to processed open boundary conditions data
|
ADD_M2OBC
|
use to add tidal currents to processed open boundary conditions data
|
Options for ROMS/TOMS driver
- Choose only one option.
Options associated with tangent linear, representer and adjoint models
|
AD_IMPULSE
|
use to force adjoint model with intermittent impulses
|
ADJUST_BOUNDARY
|
use if including boundary conditions in 4DVar state
|
ADJUST_STFLUX
|
use if including surface tracer flux in 4DVar state
|
ADJUST_WSTRESS
|
use if including wind-stress in 4DVar state
|
ARRAY_MODES_SPLIT
|
use to separate analysis due to IC, forcing, and OBC
|
BALANCE_OPERATOR
|
use if error covariance multivariate balance term
|
BEOFS_ONLY
|
use if computing EOFs of background error covariance
|
BGQC
|
use if background quality control of observations
|
BNORM
|
use if Background norm Hessian singular vectors
|
CELERITY_WRITE
|
use if writing radiation celerity in forward file
|
CLIPPING_SPLIT
|
use to separate analysis due to IC, forcing, and OBC
|
DATALESS_LOOPS
|
use if testing convergence of Picard iterations
|
ENKF_RESTART
|
use if writting restart fields for EnKF
|
FORWARD_MIXING
|
use if processing forward vertical mixing coefficient
|
FORWARD_WRITE
|
use if writing out forward solution, basic state
|
FORWARD_READ
|
use if reading in forward solution, basic state
|
FORWARD_RHS
|
use if processing forward right-hand-side terms
|
FULL_GRID
|
use to consider both interior and boundary points
|
GEOPOTENTIAL_HCONV
|
use if horizontal convolutions along geopotentials
|
IMPACT_INNER
|
use to write observations impacts for each inner loop
|
IMPLICIT_VCONV
|
use if implicit vertical convolution algorithm
|
IMPULSE
|
use if processing adjoint impulse forcing
|
MINRES
|
use if Minimal Residual Method for 4DVar minimization
|
MULTIPLE_TLM
|
use if multiple TLM history files in 4DVAR
|
NLM_OUTER
|
use if nonlinear model as basic state in outer loop
|
OBS_IMPACT
|
use if observation impact to 4DVAR data assimilation
|
OBS_IMPACT_SPLIT
|
use to separate impact due to IC, forcing, and OBC
|
POSTERIOR_EOFS
|
use if posterior analysis error covariance EOFS
|
POSTERIOR_ERROR_F
|
use if final posterior analysis error covariance
|
POSTERIOR_ERROR_I
|
use if initial posterior analysis error covariance
|
RECOMPUTE_4DVAR
|
use if recomputing 4DVar in analysis algorithms
|
RPCG
|
use if Restricted B-preconditioned Lanczos solver
|
RPM_RELAXATION
|
use if Picard iterations, Diffusive Relaxation of RPM
|
SKIP_NLM
|
use to skip running NLM, reading NLM trajectory
|
SO_SEMI_WHITE
|
use to activate SO semi norm white/red noise processes
|
STOCH_OPT_WHITE
|
use to activate SO white/red noise processes
|
SPLINES_VCONV
|
use to activate implicit splines vertical convolution
|
TIME_CONV
|
use if weak-constraint 4D-Var time convolutions
|
VCONVOLUTION
|
use to add vertical correlation to 3D convolution
|
VERIFICATION
|
use if writing out solution at observation locations
|
WEAK_NOINTERP
|
use if not time interpolation in weak 4D-Var forcing
|
ZETA_ELLIPTIC
|
use if SSH elliptic Equation in balance operator
|
Options for Hypoxia ecosystem model
Options for NPZD biological model
|
NPZD_FRANKS
|
use if NPZD Biology model, Franks et al. (1986)
|
NPZD_IRON
|
use if NPZD Biology model with iron limitation
|
NPZD_POWELL
|
use if NPZD Biology model, Powell et al. (2006)
|
IRON_LIMIT
|
use if Fe limitation on phytoplankton growth
|
IRON_RELAX
|
use if nudging Fe over the shelf, h <= FeHmin
|
Options for bio-optical EcoSim model
|
ECOSIM
|
use if bio-optical EcoSim model
|
BIO_OPTICAL
|
use to compute underwater spectral light properties
|
Options for Nemuro lower trophic level ecosystem model
- Need to choose a zooplankton grazing option (HOLLING_GRAZING or IVLEV_EXPLICIT). The default implicit IVLEV algorithm does not work yet.
Options for red tide biological model
Options for sediment transport model
|
SEDIMENT
|
use to activate sediment transport model
|
BEDLOAD_MPM
|
use to activate Meyer-Peter-Mueller bed load
|
BEDLOAD_SOULSBY
|
use to activate Soulsby wave/current bed load
|
SED_DENS
|
use to activate sediment to affect equation of state
|
SED_MORPH
|
use to allow bottom model elevation to evolve
|
SUSPLOAD
|
use to activate suspended load transport
|
Options for grid nesting
Options for two-way coupling to other models
- These options are for coupling to other Earth System Models (ESM) via the Earth Modeling Framework (ESMF) or Modeling Coupling Toolkit (MCT) libraries. If coupling with ESMF library, it uses the National Unified Operational Prediction Capability (NUOPC) layer "cap" files to facilitate exchanges with other ESM components.
Options for nearshore stresses and shallow water configurations
Options for MPI communications
- The routines mp_assemble (used in nesting), mp_collect (used in NetCDF I/O and 4D-Var), and mp_reduce (used in global reductions) are coded in distribution.F by either using low-level (mpi_isend and mpi_irecv) or high-level (mpi_allgather and mpi_allreduce) MPI calls. The default is to use the low-level MPI calls. The options for routine mp_boundary (used to process lateral open boundary conditions is either mpi_allgather or mpi_allreduce (default).
- The user needs to be aware that the choice of these MPI communication routines it will affect performance issue. In some computers, the low-level are either slower or faster than the high-level MPI library calls. It depends on the computer (cluster) set-up. Some vendors provide native MPI libraries fine-tuned for the computer architecture. The user needs to find which function option performs better by carrying on benchmarks. We provides the following choices:
Options for NetCDF input and output
- The CPP option INLINE_2DIO is used to process 3D data by levels (2D slabs) to reduce memory needs in distributed-memory configurations. This option is convenient for large problems on nodes with limited memory.
- The CPP option DEUGGING is use to avoid writing current date and CPP options to NetCDF file headers. This is used to compare serial and parallel solutions where the UNIX command "diff" is used between NetCDF files. It will only tell us that the binary files are different or not. Finding the parallel bug is completely different story.
|
DEBUGGING
|
use to activate parallel debugging switch
|
DEFLATE
|
use to set compression NetCDF-4/HDF5 format files
|
HDF5
|
to create NetCDF-4/HDF5 format files
|
INLINE_2DIO
|
use if processing 3D IO level by level
|
NO_LBC_ATT
|
use to not check NLM_LBC global attribute on restart
|
NO_READ_GHOST
|
use to not include ghost points during read/scatter
|
NO_WRITE_GRID
|
use if not writing grid arrays
|
PARALLEL_IO
|
if parallel I/O via HDF5 or pnetcdf libraries
|
PERFECT_RESTART
|
use to include perfect restart variables
|
PNETCDF
|
use if parallel I/O with pnetcdf (classic format)
|
POSITIVE_ZERO
|
use to impose positive zero in ouput data
|
READ_WATER
|
use if only reading water points data
|
WRITE_WATER
|
use if only writing water points data
|
RST_SINGLE
|
use if writing single precision restart fields
|
OUT_DOUBLE
|
use if writing double precision output fields
|
Option for debugging
Options for idealized test problems
- These tests are defined using analytical expressions. Choose only one configuration.
Options for climatological applications
|
DAMEE_4
|
North Atlantic DAMEE Application, 3/4 degree
|
Options for selected realistic applications
|
ADRIA02
|
Adriatic Sea Application
|
NJ_BIGHT
|
New Jersey Bight Application
|
WC13
|
California Current System, 1/3 degree resolution
|