Ticket #805: cppdefs.h

File cppdefs.h, 54.0 KB (added by m.hadfield, 5 years ago)
Line 
1/*
2** Include file "cppdefs.h"
3**
4** svn $Id$
5********************************************************** Hernan G. Arango ***
6** Copyright (c) 2002-2019 The ROMS/TOMS Group **
7** Licensed under a MIT/X style license **
8** See License_ROMS.txt **
9*******************************************************************************
10** **
11** The following is short description of all available CPP options. **
12** **
13** OPTIONS associated with momentum equations: **
14** **
15** The default horizontal advection is 3rd-order upstream bias for **
16** 3D momentum and 4th-order centered for 2D momentum. The default **
17** vertical advection is 4th-order centered for 3D momentum. If this **
18** is the case, no flags for momentum advection need to be activated. **
19** **
20** The 3rd-order upstream split advection (UV_U3ADV_SPLIT) can be used **
21** to correct for the spurious mixing of the advection operator in **
22** terrain-following coordinates. If this is the case, the advection **
23** operator is split in advective and viscosity components and several **
24** internal flags are activated in "globaldefs.h". Notice that **
25** horizontal and vertical advection of momentum is 4th-order centered **
26** plus biharmonic viscosity to correct for spurious mixing. The total **
27** time-dependent horizontal mixing coefficient are computed in **
28** "hmixing.F". **
29** **
30** WARNING: Use the splines vertical advection option (UV_SADVECTION) **
31** only in idealized, high vertical resolution applications. **
32** **
33** UV_ADV use to turn ON or OFF advection terms **
34** UV_COR use to turn ON or OFF Coriolis term **
35** UV_U3ADV_SPLIT use if 3rd-order upstream split momentum advection **
36** UV_C2ADVECTION use to turn ON or OFF 2nd-order centered advection **
37** UV_C4ADVECTION use to turn ON or OFF 4th-order centered advection **
38** UV_SADVECTION use to turn ON or OFF splines vertical advection **
39** UV_VIS2 use to turn ON or OFF harmonic horizontal mixing **
40** UV_VIS4 use to turn ON or OFF biharmonic horizontal mixing **
41** UV_SMAGORINSKY use to turn ON or OFF Smagorinsky-like viscosity **
42** UV_DRAG_GRID use if spatially varying bottom friction parameters **
43** UV_LOGDRAG use to turn ON or OFF logarithmic bottom friction **
44** UV_LDRAG use to turn ON or OFF linear bottom friction **
45** UV_QDRAG use to turn ON or OFF quadratic bottom friction **
46** SPLINES_VVISC use if splines reconstruction of vertical viscosity **
47** **
48** OPTION to not allow the bottom stress components to change the direction **
49** of bottom momentum (change sign of velocity components. **
50** **
51** LIMIT_BSTRESS use to limit the magnitude of bottom stress **
52** **
53** OPTIONS associated with tracers equations: **
54** **
55** The default horizontal and vertical advection is 4th-order centered. **
56** **
57** The 3rd-order upstream split advection (TS_U3ADV_SPLIT) can be used **
58** to correct for the spurious diapycnal diffusion of the advection **
59** operator in terrain-following coordinates. If this is the case, the **
60** advection operator is split in advective and diffusive components **
61** and several internal flags are activated in "globaldefs.h". Notice **
62** that horizontal and vertical advection of tracer is 4th-order centered **
63** plus biharmonic diffusion to correct for spurious diapycnal mixing. **
64** The total time-dependent horizontal mixing coefficient are computed **
65** in "hmixing.F". It is also recommended to use the rotated mixing **
66** tensor along geopotentials (MIX_GEO_TS) for the biharmonic operator. **
67** **
68** WARNING: Use the splines vertical advection option (TS_SVADVECTION) **
69** only in idealized, high vertical resolution applications. **
70** **
71** TS_U3ADV_SPLIT use if 3rd-order upstream split tracer advection **
72** TS_A4HADVECTION use if 4th-order Akima horizontal advection **
73** TS_C2HADVECTION use if 2nd-order centered horizontal advection **
74** TS_C4HADVECTION use if 4th-order centered horizontal advection **
75** TS_MPDATA use if recursive MPDATA 3D advection **
76** TS_U3HADVECTION use if 3rd-order upstream horiz. advection **
77** TS_A4VADVECTION use if 4th-order Akima vertical advection **
78** TS_C2VADVECTION use if 2nd-order centered vertical advection **
79** TS_C4VADVECTION use if 4th-order centered vertical advection **
80** TS_SVADVECTION use if splines vertical advection **
81** TS_DIF2 use to turn ON or OFF harmonic horizontal mixing **
82** TS_DIF4 use to turn ON or OFF biharmonic horizontal mixing **
83** TS_SMAGORINSKY use to turn ON or OFF Smagorinsky-like diffusion **
84** TS_FIXED use if diagnostic run, no evolution of tracers **
85** T_PASSIVE use if inert passive tracers (dyes, etc) **
86** AGE_MEAN use if computing Mean Age of inert passive tracers **
87** NONLIN_EOS use if using nonlinear equation of state **
88** QCORRECTION use if net heat flux correction **
89** SALINITY use if having salinity **
90** SCORRECTION use if freshwater flux correction **
91** SOLAR_SOURCE use if solar radiation source term **
92** SPLINES_VDIFF use if splines reconstruction of vertical diffusion **
93** SRELAXATION use if salinity relaxation as a freshwater flux **
94** WTYPE_GRID use to turn ON spatially varying Jerlov water type **
95** **
96** OPTION to suppress further surface cooling if the SST is at freezing **
97** point or below and the net surface heat flux is cooling: **
98** **
99** LIMIT_STFLX_COOLING use to suppress SST cooling below freezing point **
100** **
101** OPTIONS for MPDATA 3D Advection: **
102** **
103** TS_MPDATA_LIMIT use to limit upwind corrector fluxes for stability **
104** **
105** Tracer advection OPTIONS for adjoint-based algorithms: **
106** **
107** Some of the tracer advection algorithms are highly nonlinear and **
108** may become unstable when running the tangent linear, representer, **
109** and adjoint models. This may affect the convergence of the 4DVar **
110** data assimilation algorithms. Therefore, it is possible to choose **
111** a simpler (less nonlinear) horizontal and vertical tracer advection **
112** scheme, if so desired, for the tangent linear, representer and **
113** adjoint models. Notice that this strategy still allows us to use **
114** highly nonlinear tracer advection schemes in the basic state upon **
115** which the tangent linear and adjoint models are linearized. Also, **
116** it allows us to use those schemes that have not been adjointed yet, **
117** for example, TS_MPDATA. Recall that basic state trajectory is **
118** computed by running the nonlinear model. **
119** **
120** The flags below are optional. By default, the same options chosen **
121** for the nonlinear model are selected for the tangent linear, **
122** representer, and adjoint models. **
123** **
124** TS_A4HADVECTION_TL use if 4th-order Akima horizontal advection **
125** TS_C2HADVECTION_TL use if 2nd-order centered horizontal advection **
126** TS_C4HADVECTION_TL use if 4th-order centered horizontal advection **
127** TS_U3HADVECTION_TL use if 3rd-order upstream horiz. advection **
128** **
129** TS_A4VADVECTION_TL use if 4th-order Akima vertical advection **
130** TS_C2VADVECTION_TL use if 2nd-order centered vertical advection **
131** TS_C4VADVECTION_TL use if 4th-order centered vertical advection **
132** TS_SVADVECTION_TL use if splines vertical advection **
133** **
134** Pressure gradient algorithm OPTIONS: **
135** **
136** If no option is selected, the pressure gradient term is computed using **
137** standard density Jacobian algorithm. Notice that there are two quartic **
138** pressure Jacobian options. They differ on how the WENO reconciliation **
139** step is done and in the monotonicity constraining algorithms. **
140** **
141** DJ_GRADPS use if splines density Jacobian (Shchepetkin, 2000) **
142** PJ_GRADP use if finite volume Pressure Jacobian (Lin,1997) **
143** PJ_GRADPQ2 use if quartic 2 Pressure Jacobian (Shchepetkin,2000) **
144** PJ_GRADPQ4 use if quartic 4 Pressure Jacobian (Shchepetkin,2000) **
145** WJ_GRADP use if weighted density Jacobian (Song,1998) **
146** **
147** ATM_PRESS use to impose atmospheric pressure onto sea surface **
148** PRESS_COMPENSATE use to compensate for boundary without atm. pressure **
149** **
150** OPTIONS for surface fluxes formulation using atmospheric boundary layer **
151** (Fairall et al, 1996): **
152** **
153** There are three ways to provide longwave radiation in the atmospheric **
154** boundary layer: (1) Compute the net longwave radiation internally using **
155** the Berliand (1952) equation (LONGWAVE) as function of air temperature, **
156** sea surface temperature, relative humidity, and cloud fraction; **
157** (2) provide (read) longwave downwelling radiation only and then add **
158** outgoing longwave radiation (LONGWAVE_OUT) as a function of the model **
159** sea surface temperature; (3) provide net longwave radiation (default). **
160** **
161** BULK_FLUXES use if bulk fluxes computation **
162** NL_BULK_FLUXES use bulk fluxes computed by nonlinear model **
163** COOL_SKIN use if cool skin correction **
164** LONGWAVE use if computing net longwave radiation **
165** LONGWAVE_OUT use if computing outgoing longwave radiation **
166** EMINUSP use if computing E-P **
167** WIND_MINUS_CURRENT use if compute effective wind by removing current **
168** **
169** OPTIONS for wave roughness formulation in bulk fluxes: **
170** **
171** COARE_TAYLOR_YELLAND use Taylor and Yelland (2001) relation **
172** COARE_OOST use Oost et al (2002) relation **
173** DEEPWATER_WAVES use Deep water waves approximation **
174** **
175** OPTIONS for shortwave radiation: **
176** **
177** The shortwave radiation can be computed using the global albedo **
178** equation with a cloud correction. Alternatively, input shortwave **
179** radiation data computed from averaged data (with snapshots greater **
180** or equal than 24 hours) can be modulated by the local diurnal cycle **
181** which is a function longitude, latitude and day-of-year. **
182** **
183** ALBEDO use if albedo equation for shortwave radiation **
184** DIURNAL_SRFLUX use to impose shortwave radiation local diurnal cycle **
185** **
186** Model configuration OPTIONS: **
187** **
188** SOLVE3D use if solving 3D primitive equations **
189** CURVGRID use if curvilinear coordinates grid **
190** MASKING use if land/sea masking **
191** BODYFORCE use if applying stresses as bodyforces **
192** PROFILE use if time profiling **
193** AVERAGES use if writing out NLM time-averaged data **
194** AVERAGES_DETIDE use if writing out NLM time-averaged detided fields **
195** AD_AVERAGES use if writing out ADM time-averaged data **
196** RP_AVERAGES use if writing out TLM time-averaged data **
197** TL_AVERAGES use if writing out ADM time-averaged data **
198** DIAGNOSTICS_BIO use if writing out biological diagnostics **
199** DIAGNOSTICS_UV use if writing out momentum diagnostics **
200** DIAGNOSTICS_TS use if writing out tracer diagnostics **
201** ICESHELF use if including ice shelf cavities **
202** SINGLE_PRECISION use if single precision arithmetic numerical kernel **
203** SPHERICAL use if analytical spherical grid **
204** STATIONS use if writing out station data **
205** STATIONS_CGRID use if extracting data at native C-grid **
206** **
207** OPTIONS for Lagrangian drifters: **
208** **
209** FLOATS use to activate simulated Lagrangian drifters **
210** FLOAT_OYSTER use to activate oyster model behavior in floats **
211** FLOAT_STICKY use to reflect/stick floats that hit surface/bottom **
212** FLOAT_VWALK use if vertical random walk **
213** VWALK_FORWARD use if forward time stepping vertical random walk **
214** **
215** OPTIONS for analytical fields configuration: **
216** **
217** Any of the analytical expressions are coded in "analytical.F". **
218** **
219** ANA_BIOLOGY use if analytical biology initial conditions **
220** ANA_BPFLUX use if analytical bottom passive tracers fluxes **
221** ANA_BSFLUX use if analytical bottom salinity flux **
222** ANA_BTFLUX use if analytical bottom temperature flux **
223** ANA_CLOUD use if analytical cloud fraction **
224** ANA_DIAG use if customized diagnostics **
225** ANA_DQDSST use if analytical surface heat flux sensitivity to SST**
226** ANA_DRAG use if analytical spatially varying drag parameters **
227** ANA_FSOBC use if analytical free-surface boundary conditions **
228** ANA_GRID use if analytical model grid set-up **
229** ANA_HUMIDITY use if analytical surface air humidity **
230** ANA_INITIAL use if analytical initial conditions **
231** ANA_M2CLIMA use if analytical 2D momentum climatology **
232** ANA_M2OBC use if analytical 2D momentum boundary conditions **
233** ANA_M3CLIMA use if analytical 3D momentum climatology **
234** ANA_M3OBC use if analytical 3D momentum boundary conditions **
235** ANA_MASK use if analytical Land/Sea masking **
236** ANA_NUDGCOEF use if analytical climatology nudging coefficients **
237** ANA_PAIR use if analytical surface air pressure **
238** ANA_PASSIVE use if analytical inert tracers initial conditions **
239** ANA_PERTURB use if analytical perturbation of initial conditions **
240** ANA_PSOURCE use if analytical point Sources/Sinks **
241** ANA_RAIN use if analytical rain fall rate **
242** ANA_SEDIMENT use if analytical sediment initial fields **
243** ANA_SMFLUX use if analytical surface momentum stress **
244** ANA_SPFLUX use if analytical surface passive tracers fluxes **
245** ANA_SPINNING use if analytical time-varying rotation force **
246** ANA_SPONGE use if analytical enhanced viscosity/diffusion sponge **
247** ANA_SRFLUX use if analytical surface shortwave radiation flux **
248** ANA_SSFLUX use if analytical surface salinity flux **
249** ANA_SSH use if analytical sea surface height **
250** ANA_SSS use if analytical sea surface salinity **
251** ANA_SST use if analytical sea surface temperature, SST **
252** ANA_STFLUX use if analytical surface net heat flux **
253** ANA_TAIR use if analytical surface air temperature **
254** ANA_TCLIMA use if analytical tracers climatology **
255** ANA_TOBC use if analytical tracers boundary conditions **
256** ANA_VMIX use if analytical vertical mixing coefficients **
257** ANA_WINDS use if analytical surface winds **
258** ANA_WWAVE use if analytical wind induced waves **
259** **
260** OPTIONS for horizontal mixing of momentum: **
261** **
262** VISC_GRID use to scale viscosity coefficient by grid size **
263** MIX_S_UV use if mixing along constant S-surfaces **
264** MIX_GEO_UV use if mixing on geopotential (constant Z) surfaces **
265** **
266** OPTIONS for horizontal mixing of tracers: **
267** **
268** DIFF_GRID use to scale diffusion coefficients by grid size **
269** MIX_S_TS use if mixing along constant S-surfaces **
270** MIX_GEO_TS use if mixing on geopotential (constant Z) surfaces **
271** MIX_ISO_TS use if mixing on epineutral (constant RHO) surfaces **
272** TS_MIX_CLIMA use if diffusion of tracer perturbation (t-tclm) **
273** TS_MIX_MAX_SLOPE use if maximum slope in epineutral diffusion **
274** TS_MIX_MIN_STRAT use if minimum stratification in epineutral diffusion **
275** TS_MIX_STABILITY use if weighting diffusion between two time levels **
276** **
277** OPTIONS for vertical turbulent mixing scheme of momentum and tracers **
278** (activate only one closure): **
279** **
280** BVF_MIXING use if Brunt-Vaisala frequency mixing **
281** GLS_MIXING use if Generic Length-Scale mixing closure **
282** MY25_MIXING use if Mellor/Yamada Level-2.5 closure **
283** LMD_MIXING use if Large et al. (1994) interior closure **
284** **
285** LIMIT_VDIFF use to impose an upper limit on vertical diffusion **
286** LIMIT_VVISC use to impose an upper limit on vertical viscosity **
287** **
288** OPTIONS for the Generic Length-Scale closure (Warner et al., 2005): **
289** **
290** The default horizontal advection is third-order upstream bias. The **
291** default vertical advection is 4th-order centered advection. **
292** **
293** CANUTO_A use if Canuto A-stability function formulation **
294** CANUTO_B use if Canuto B-stability function formulation **
295** CHARNOK use if Charnok surface roughness from wind stress **
296** CRAIG_BANNER use if Craig and Banner wave breaking surface flux **
297** KANTHA_CLAYSON use if Kantha and Clayson stability function **
298** K_C2ADVECTION use if 2nd-order centered advection **
299** K_C4ADVECTION use if 4th-order centered advection **
300** N2S2_HORAVG use if horizontal smoothing of buoyancy/shear **
301** RI_SPLINES use if splines reconstruction for vertical sheer **
302** ZOS_HSIG use if surface roughness from wave amplitude **
303** TKE_WAVEDISS use if wave breaking surface flux from wave amplitude **
304** **
305** OPTIONS for the Mellor/Yamada level 2.5 closure: **
306** **
307** The default horizontal advection is third-order upstream bias. The **
308** default vertical advection is 4th-order centered advection. **
309** **
310** N2S2_HORAVG use if horizontal smoothing of buoyancy/shear **
311** KANTHA_CLAYSON use if Kantha and Clayson stability function **
312** K_C2ADVECTION use if 2nd-order centered advection **
313** K_C4ADVECTION use if 4th-order centered advection **
314** RI_SPLINES use if splines reconstruction for vertical sheer **
315** **
316** OPTIONS for the Large et al. (1994) K-profile parameterization mixing: **
317** mixing: **
318** **
319** LMD_BKPP use if bottom boundary layer KPP mixing **
320** LMD_CONVEC use to add convective mixing due to shear instability **
321** LMD_DDMIX use to add double-diffusive mixing **
322** LMD_NONLOCAL use if nonlocal transport **
323** LMD_RIMIX use to add diffusivity due to shear instability **
324** LMD_SHAPIRO use if Shapiro filtering boundary layer depth **
325** LMD_SKPP use if surface boundary layer KPP mixing **
326** RI_SPLINES use if splines reconstruction for Richardson Number **
327** **
328** OPTIONS in the K-profile parameterization to activate smoothing of **
329** Richardson number, if RI_SPLINES is not activated: **
330** **
331** RI_HORAVG use if horizontal Richardson number smoothing **
332** RI_VERAVG use if vertical Richardson number smoothing **
333** **
334** OPTIONS for Meinte Blass bottom boundary layer closure: **
335** **
336** The Options MB_Z0BL and MB_Z0RIP should be activated concurrently. **
337** **
338** MB_BBL use if Meinte Blaas BBL closure **
339** MB_CALC_ZNOT use if computing bottom roughness internally **
340** MB_CALC_UB use if computing bottom orbital velocity internally **
341** MB_Z0BIO use if biogenic bedform roughness for ripples **
342** MB_Z0BL use if bedload roughness for ripples **
343** MB_Z0RIP use if bedform roughness for ripples **
344** **
345** OPTIONS for Styles and Glenn (2000) bottom boundary layer closure: **
346** **
347** SG_BBL use if Styles and Glenn (2000) BBL closure **
348** SG_CALC_ZNOT use if computing bottom roughness internally **
349** SG_CALC_UB use if computing bottom orbital velocity internally **
350** SG_LOGINT use if logarithmic interpolation of (Ur,Vr) **
351** **
352** OPTIONS for the Sherwood/Signell/Warner bottom boundary layer closure: **
353** **
354** SSW_BBL use if Sherwood et al. BBL closure **
355** SSW_CALC_ZNOT use if computing bottom roughness internally **
356** SSW_LOGINT use if logarithmic interpolation of (Ur,Vr) **
357** SSW_CALC_UB use if computing bottom orbital velocity internally **
358** SSW_FORM_DRAG_COR use to activate form drag coefficient **
359** SSW_ZOBIO use if biogenic bedform roughness from ripples **
360** SSW_ZOBL use if bedload roughness for ripples **
361** SSW_ZORIP use if bedform roughness from ripples **
362** **
363** Lateral boundary conditions OPTIONS: **
364** **
365** IMPLICIT_NUDGING use if implicit nudging term in momentum radiation **
366** RADIATION_2D use if tangential phase speed in radiation conditions **
367** **
368** OPTIONS for tidal forcing at open boundaries: **
369** **
370** The tidal data is processed in terms of tidal components, classified by **
371** period. The tidal forcing is computed for the full horizontal grid. If **
372** requested, the tidal forcing is added to the processed open boundary **
373** data. **
374** **
375** Both tidal elevation and tidal currents are required to force the model **
376** properly. However, if only the tidal elevation is available, the tidal **
377** currents at the open boundary can be estimated by reduced physics. Only **
378** the pressure gradient, Coriolis, and surface and bottom stresses terms **
379** are considered at the open boundary. See "u2dbc_im.F" or "v2dbc_im.F" **
380** for details. Notice that there is an additional option (FSOBC_REDUCED) **
381** for the computation of the pressure gradient term in both Flather or **
382** reduced physics conditions (*_M2FLATHER, *_M2REDUCED). **
383** **
384** SSH_TIDES use if imposing tidal elevation **
385** UV_TIDES use if imposing tidal currents **
386** RAMP_TIDES use if ramping (over one day) tidal forcing **
387** FSOBC_REDUCED use if SSH data and reduced physics conditions **
388** ADD_FSOBC use to add tidal elevation to processed OBC data **
389** ADD_M2OBC use to add tidal currents to processed OBC data **
390** **
391** ROMS/TOMS driver OPTIONS: **
392** **
393** ADM_DRIVER use if generic adjoint model driver **
394** AD_SENSITIVITY use if adjoint sensitivity driver **
395** AFT_EIGENMODES use if adjoint finite time eingenmodes driver **
396** ARRAY_MODES use if W4DVAR representer matrix array modes **
397** BEOFS_ONLY use to compute EOFs of background error covariance **
398** BGQC use if background quality control of observations **
399** BNORM use if Background norm for Hessian singular vectors **
400** CLIPPING use if W4DVAR representer matrix clipping analysis **
401** CORRELATION use if background-error correlation model driver **
402** ENSEMBLE use if ensemble prediction driver **
403** EVOLVED_LCZ use to Compute 4DVar evolved Hessian singular vectors **
404** FORCING_SV use if forcing singular vectors driver **
405** FT_EIGENMODES use if finite time eingenmodes driver: normal modes **
406** GEOPOTENTIAL_HCONV use if horizontal convolutions along geopotentials **
407** HESSIAN_FSV use if Hessian forcing singular vectors **
408** HESSIAN_SO use if Hessian stochastic optimals **
409** HESSIAN_SV use if Hessian singular vectors **
410** INNER_PRODUCT use if tangent linear and adjoint inner product check **
411** IS4DVAR use if incremental 4DVar data assimilation **
412** IS4DVAR_SENSITIVITY use if I4DVar observations sensitivity driver **
413** LCZ_FINAL use to compute 4DVar Hessian singular vectors **
414** OPT_OBSERVATIONS use if optimal observations driver **
415** OPT_PERTURBATION use if optimal perturbations driver, singular vectors **
416** PICARD_TEST use if representer tangent linear model test **
417** PSEUDOSPECTRA use if pseudospectra of tangent linear resolvant **
418** R_SYMMETRY use if representer matrix symmetry test **
419** RPCG use if Restricted B-preconditioned Lanczos solver **
420** RPM_DRIVER use if generic representers model driver **
421** SANITY_CHECK use if tangent linear and adjoint codes sanity check **
422** SO_SEMI use if stochastic optimals driver, semi-norm **
423** SO_TRACE use if stochastic optimals, randomized trace **
424** STOCHASTIC_OPT use if stochastic optimals **
425** TIME_CONV use if weak-constraint 4DVar time convolutions **
426** TLM_CHECK use if tangent linear model linearization check **
427** TLM_DRIVER use if generic tangent linear model driver **
428** W4DPSAS use if weak constraint 4DPSAS data assimilation **
429** W4DPSAS_SENSITIVITY use if weak constraint 4DPSAS observation sensitivity **
430** W4DVAR use if Weak constraint 4DVar data assimilation **
431** W4DVAR_SENSITIVITY use if Weak constraint 4DVar observation sensitivity **
432** **
433** OPTIONS associated with tangent linear, representer and adjoint models: **
434** **
435** AD_IMPULSE use to force adjoint model with intermittent impulses **
436** ADJUST_BOUNDARY use if including boundary conditions in 4DVar state **
437** ADJUST_STFLUX use if including surface tracer flux in 4DVar state **
438** ADJUST_WSTRESS use if including wind-stress in 4DVar state **
439** ARRAY_MODES_SPLIT use to separate analysis due to IC, forcing, and OBC **
440** BALANCE_OPERATOR use if error covariance multivariate balance term **
441** CELERITY_WRITE use if writing radiation celerity in forward file **
442** CLIPPING_SPLIT use to separate analysis due to IC, forcing, and OBC **
443** DATALESS_LOOPS use if testing convergence of Picard iterations **
444** ENKF_RESTART use if writting restart fields for EnKF **
445** FORWARD_MIXING use if processing forward vertical mixing coefficient **
446** FORWARD_WRITE use if writing out forward solution, basic state **
447** FORWARD_READ use if reading in forward solution, basic state **
448** FORWARD_RHS use if processing forward right-hand-side terms **
449** IMPACT_INNER use to write observations impacts for each inner loop **
450** IMPLICIT_VCONV use if implicit vertical convolution algorithm **
451** IMPULSE use if processing adjoint impulse forcing **
452** MINRES use if Minimal Residual Method for 4DVar minimization **
453** MULTIPLE_TLM use if multiple TLM history files in 4DVAR **
454** NLM_OUTER use if nonlinear model as basic state in outer loop **
455** OBS_IMPACT use if observation impact to 4DVAR data assimilation **
456** OBS_IMPACT_SPLIT use to separate impact due to IC, forcing, and OBC **
457** POSTERIOR_EOFS use if posterior analysis error covariance EOFS **
458** POSTERIOR_ERROR_F use if final posterior analysis error covariance **
459** POSTERIOR_ERROR_I use if initial posterior analysis error covariance **
460** RECOMPUTE_4DVAR use if recomputing 4DVar in analysis algorithms **
461** RPM_RELAXATION use if Picard iterations, Diffusive Relaxation of RPM **
462** SKIP_NLM use to skip running NLM, reading NLM trajectory **
463** SO_SEMI_WHITE use to activate SO semi norm white/red noise processes**
464** STOCH_OPT_WHITE use to activate SO white/red noise processes **
465** SPLINES_VCONV use to activate implicit splines vertical convolution **
466** VCONVOLUTION use to add vertical correlation to 3D convolution **
467** VERIFICATION use if writing out solution at observation locations **
468** ZETA_ELLIPTIC use if SSH elliptic Equation in balance operator **
469** **
470** OPTION for processing the full grid range (interior and boundary points) **
471** of the state vector in variational data assimilation and generalized **
472** stability theory analysis. Otherwise, only interior points are processed. **
473** **
474** FULL_GRID use to consider both interior and boundary points **
475** **
476** Fennel et al. (2006) biology model OPTIONS: **
477** **
478** BIO_FENNEL use if Fennel et al. (2006) nitrogen-based model **
479** BIO_SEDIMENT use to restore fallen material to the nutrient pool **
480** CARBON use to add carbon constituents **
481** DENITRIFICATION use to add denitrification processes **
482** OXYGEN use to add oxygen dynamics **
483** OCMIP_OXYGEN_SC use if Schmidt number from Keeling et al. (1998) **
484** TALK_NONCONSERV use if nonconservative computation of alkalinity **
485** **
486** Hypoxia ecosysten model OPTIONS: **
487** **
488** HYPOXIA_SRM use if Hypoxia Simple Respiration Model **
489** **
490** NPZD biology model OPTIONS: **
491** **
492** NPZD_FRANKS use if NPZD Biology model, Franks et al. (1986) **
493** NPZD_IRON use if NPZD Biology model with iron limitation **
494** NPZD_POWELL use if NPZD Biology model, Powell et al. (2006) **
495** IRON_LIMIT use if Fe limitation on phytoplankton growth **
496** IRON_RELAX use if nudging Fe over the shelf, h <= FeHmin **
497** **
498** Bio-optical EcoSim model OPTIONS: **
499** **
500** ECOSIM use if bio-optical EcoSim model **
501** **
502** Nemuro lower trophic level ecosystem model OPTIONS: **
503** **
504** Need to choose a zooplankton grazing option (HOLLING_GRAZING or **
505** IVLEV_EXPLICIT). The default implicit IVLEV algorithm does not **
506** work yet. **
507** **
508** NEMURO use if Nemuro ecosystem model. **
509** BIO_SEDIMENT use to restore fallen material to the nutrient pool **
510** HOLLING_GRAZING use Holling-type s-shaped curve grazing (implicit) **
511** IVLEV_EXPLICIT use Ivlev explicit grazing algorithm **
512** **
513** Red tide biological model OPTIONS: **
514** **
515** RED_TIDE use if red tide biological model. **
516** **
517** Sediment transport model OPTIONS: **
518** **
519** SEDIMENT use to activate sediment transport model **
520** BEDLOAD_MPM use to activate Meyer-Peter-Mueller bed load **
521** BEDLOAD_SOULSBY use to activate Soulsby wave/current bed load **
522** SED_DENS use to activate sediment to affect equation of state **
523** SED_MORPH use to allow bottom model elevation to evolve **
524** SUSPLOAD use to activate suspended load transport **
525** **
526** OPTIONS for grid nesting: **
527** **
528** NESTING use to activate grid nesting: composite/refinement **
529** NESTING_DEBUG use to check mass fluxes conservation in refinement **
530** NO_CORRECT_TRACER use to avoid two-way correction of boundary tracer **
531** ONE_WAY use if one-way nesting in refinement grids **
532** TIME_INTERP_FLUX time interpolate coarse mass flux instead of persist **
533** **
534** OPTIONS for coupling to other Earth System Models (ESM) via the Earth **
535** Modeling Framework (ESMF) or Modeling Coupling Toolkit (MCT) libraries. **
536** If coupling with ESMF library, it uses the National Unified Operational **
537** Prediction Capability (NUOPC) layer "cap" files to facilitate exchanges **
538** with other ESM components. **
539** **
540** ESMF_LIB use if coupling with the ESMF/NUOPC library **
541** MCT_LIB use if Coupling with the MCT library **
542** **
543** CICE_COUPLING use if coupling to CICE sea ice model **
544** COAMPS_COUPLING use if coupling to COAMPS atmospheric model **
545** DATA_COUPLING use if coupling to DATA model **
546** EXCLUDE_SPONGE use if excluding sponge point in export fields **
547** FRC_COUPLING use if forcing from Atmopheric or Data model **
548** REFDIF_COUPLING use if coupling to REFDIT wave model **
549** REGCM_COUPLING use if coupling to RegCM atmospheric model **
550** SWAN_COUPLING use if coupling to SWAN wave model **
551** TIME_INTERP use if importing snapshots for time interpolation **
552** WAM_COUPLING use if coupling to WAM wave model **
553** WRF_COUPLING use if coupling to WRF atmospheric model **
554** WRF_TIMEAVG use if time-averaged fields over coupling interval **
555** **
556** Nearshore and shallow water model OPTIONS: **
557** **
558** WET_DRY use to activate wetting and drying **
559** NEARSHORE_MELLOR05 use to activate radiation stress terms (Mellor 2005). **
560** NEARSHORE_MELLOR08 use to activate radiation stress terms (Mellor 2008). **
561** **
562** MPI communication OPTIONS: The routines "mp_assemble" (used in nesting), **
563** "mp_collect" (used in NetCDF I/O and 4D-Var), **
564** and "mp_reduce" (used in global reductions) are coded in "distribution.F" **
565** by either using low-level ("mpi_isend" and "mpi_irecv") or high-level **
566** ("mpi_allgather" and "mpi_allreduce") MPI calls. The default is to use **
567** the low-level MPI calls. The options for routine "mp_boundary" (used to **
568** process lateral open boundary conditions is either "mpi_allgather" or **
569** "mpi_allreduce" (default). **
570** **
571** The user needs to be aware that the choice of these MPI communication **
572** routines it will affect performance issue. In some computers, the **
573** low-level are either slower or faster than the high-level MPI library **
574** calls. It depends on the computer (cluster) set-up. Some vendors provide **
575** native MPI libraries fine-tuned for the computer architecture. The **
576** user needs to find which function option performs better by carrying on **
577** benchmarks. We provides the following choices: **
578** **
579** ASSEMBLE_ALLGATHER use "mpi_allgather" in "mp_assemble" **
580** ASSEMBLE_ALLREDUCE use "mpi_allreduce" in "mp_assemble" **
581** **
582** BOUNDARY_ALLGATHER use "mpi_allgather" in "mp_boundary" **
583** **
584** COLLECT_ALLGATHER use "mpi_allgather" in "mp_collect" **
585** COLLECT_ALLREDUCE use "mpi_allreduce" in "mp_collect" **
586** **
587** REDUCE_ALLGATHER use "mpi_allgather" in "mp_reduce" **
588** REDUCE_ALLREDUCE use "mpi_allreduce" in "mp_reduce" **
589** **
590** NetCDF input/output OPTIONS: **
591** **
592** DEFLATE use to set compression NetCDF-4/HDF5 format files **
593** HDF5 use to create NetCDF-4/HDF5 format files **
594** NO_LBC_ATT use to not check NLM_LBC global attribute on restart **
595** NO_READ_GHOST use to not include ghost points during read/scatter **
596** NO_WRITE_GRID use if not writing grid arrays **
597** PARALLEL_IO use if parallel I/O via HDF5 or pnetcdf libraries **
598** PERFECT_RESTART use to include perfect restart variables **
599** PNETCDF use if parallel I/O with pnetcdf (classic format) **
600** POSITIVE_ZERO use to impose positive zero in ouput data **
601** READ_WATER use if only reading water points data **
602** WRITE_WATER use if only writing water points data **
603** RST_SINGLE use if writing single precision restart fields **
604** OUT_DOUBLE use if writing double precision output fields **
605** **
606** OPTION to process 3D data by levels (2D slabs) to reduce memory needs in **
607** distributed-memory configurations. This option is convenient for large **
608** problems on nodes with limited memory. **
609** **
610** INLINE_2DIO use if processing 3D IO level by level **
611** **
612** OPTION to avoid writing current date and CPP options to NetCDF file **
613** headers. This is used to compare serial and parallel solutions where **
614** the UNIX command "diff" is used between NetCDF files. It will only **
615** tell us that the binary files are different or not. Finding the **
616** parallel bug is complete different story. **
617** **
618** DEBUGGING use to activate parallel debugging switch **
619** **
620*******************************************************************************
621*******************************************************************************
622*******************************************************************************
623** **
624** Idealized Test Problems: **
625** **
626** BASIN Big Bad Basin Example **
627** BENCHMARK Benchmark Tests (small, Medium, big grids) **
628** BIO_TOY One-dimension (vertical) Biology Toy **
629** BL_TEST Boundary Layers Test **
630** CHANNEL Periodic channel, Optimal Perturbations Test **
631** CANYON Coastal form stress Canyon Test **
632** CHANNEL_NECK Channel with a Constriction **
633** COUPLING_TEST Two-way Atmosphere-Ocean Coupling Test **
634** DOGBONE Idealize nesting grids (Composite and Refinement) Test**
635** DOUBLE_GYRE Idealized Double-gyre Example **
636** ESTUARY_TEST Test Estuary for Sediment **
637** FLT_TEST Float Tracking Example **
638** GRAV_ADJ Gravitational Adjustment Example **
639** INLET_TEST Test Inlet Application **
640** KELVIN Kelvin wave test **
641** LAB_CANYON Lab Canyon, Polar Coordinates Example **
642** LAKE_JERSEY Lake Jersey Nesting Test Case **
643** LAKE_SIGNELL Lake Signell Sediment Test Case **
644** LMD_TEST Test for LMD and KPP **
645** OVERFLOW Gravitational/Overflow Example **
646** RIVERPLUME1 River Plume Example 1 **
647** RIVERPLUME2 River plume Example 2 (Hyatt and Signell) **
648** SEAMOUNT Seamount Example **
649** SED_TEST1 Suspended Sediment Test in a Channel **
650** SED_TOY One-dimension (vertical) Sediment Toy **
651** SHOREFACE Shore Face Planar Beach Test Case **
652** SOLITON Equatorial Rossby Wave Example **
653** TEST_CHAN Sediment Test Channel Case **
654** TEST_HEAD Sediment Test Headland Case **
655** UPWELLING Upwelling Example (default) **
656** WEDDELL Idealized Weddell Sea Shelf Application **
657** WINDBASIN Linear Wind-driven Constant Coriolis Basin **
658** **
659** Climatological Applications: (See www.myroms.org/Datasets) **
660** **
661** DAMEE_4 North Atlantic DAMEE Application, 3/4 degree **
662** **
663** Selected Realistic Applications: **
664** **
665** ADRIA02 Adriatic Sea Application **
666** NJ_BIGHT New Jersey Bight Application **
667** WC13 California Current System, 1/3 degree resolution **
668** **
669*******************************************************************************
670*******************************************************************************
671*******************************************************************************
672** **
673** The user needs to choose either a pre-defined application or his/her **
674** own application. The application CPP flag to run is activated in the **
675** makefile. For example, to activate the upwelling example (UPWELLING) **
676** set: **
677** **
678** ROMS_APPLICATION ?= UPWELLING **
679** **
680** in the makefile. ROMS will include the associated header file located **
681** in the ROMS/Include directory. The application header file name is the **
682** lowercase value of ROMS_APPLICATION with the .h extension and passed **
683** as ROMS_HEADER definition during C-preprocessing. For example, the **
684** upwelling test problem includes the "upwelling.h" header file: **
685** **
686** ROMS_HEADER="upwelling.h" **
687** **
688** If building a new application, choose an unique CPP flag for it and **
689** create its associated include file (*.h) to specify the appropriate **
690** configuration options. **
691** **
692*******************************************************************************
693*/
694
695#if defined ROMS_HEADER
696# include ROMS_HEADER
697#else
698 CPPDEFS - Choose an appropriate ROMS application.
699#endif
700
701/*
702** Include internal CPP definitions.
703*/
704
705#include "globaldefs.h"