! $Id: cppdefs.h 1628 2015-01-10 13:53:00Z marchesiello $ ! !====================================================================== ! CROCO is a branch of ROMS developped at IRD and INRIA, in France ! The two other branches from UCLA (Shchepetkin et al) ! and Rutgers University (Arango et al) are under MIT/X style license. ! CROCO specific routines (nesting) are under CeCILL-C license. ! ! CROCO website : http://www.croco-ocean.org !====================================================================== ! /* This is "cppdefs.h": MODEL CONFIGURATION FILE ==== == ============ ===== ============= ==== */ /* SELECT ACADEMIC TEST CASES */ #undef BASIN /* Basin Example */ #undef CANYON /* Canyon Example */ #undef EQUATOR /* Equator Example */ #undef INNERSHELF /* Inner Shelf Example */ #undef SINGLE_COLUMN /* 1DV vertical mixing Example */ #undef RIVER /* River run-off Example */ #undef OVERFLOW /* Gravitational/Overflow Example */ #undef SEAMOUNT /* Seamount Example */ #undef SHELFRONT /* Shelf Front Example */ #undef SOLITON /* Equatorial Rossby Wave Example */ #undef THACKER /* Thacker wetting-drying Example */ #undef UPWELLING /* Upwelling Example */ #undef VORTEX /* Baroclinic Vortex Example */ #undef INTERNAL /* Internal Tide Example */ #undef IGW /* COMODO Internal Tide Example */ #undef JET /* Baroclinic Jet Example */ #undef SHOREFACE /* Shoreface Test Case on a Planar Beach */ #undef RIP /* Rip Current Test Case */ #undef SANDBAR /* Bar-generating Flume Example */ #undef SWASH /* Swash Test Case on a Planar Beach */ #undef TANK /* Tank Example */ #undef MOVING_BATHY /* Moving Bathymetry Example */ #undef ACOUSTIC /* Acoustic wave Example */ #undef GRAV_ADJ /* Graviational Adjustment Example */ #undef ISOLITON /* Internal Soliton Example */ #undef KH_INST /* Kelvin-Helmholtz Instability Example */ #undef TS_HADV_TEST /* Horizontal tracer advection Example */ #undef DUNE /* Dune migration Example */ #undef SED_TOY /* 1DV sediment toy Example */ #undef TIDAL_FLAT /* 2DV tidal flat Example */ #undef ESTUARY /* 3D tidal estuary Example */ /* ... OR REALISTIC CONFIGURATIONS */ #undef COASTAL /* COASTAL Applications */ #define REGIONAL /* REGIONAL Applications */ #if defined REGIONAL /* !==================================================================== ! REGIONAL (realistic) Configurations !==================================================================== ! !---------------------- ! BASIC OPTIONS !---------------------- ! */ /* Configuration Name */ # define MOSA_CPL_exp1 /* Parallelization */ # undef OPENMP # define MPI /* Non-hydrostatic option */ # undef NBQ # undef CROCO_QH /* Nesting */ # undef AGRIF # undef AGRIF_2WAY /* OA and OW Coupling via OASIS (MPI) */ # define OA_COUPLING # undef OW_COUPLING # ifdef OW_COUPLING # undef OW_COUPLING_FULL # endif /* Wave-current interactions */ # undef MRL_WCI /* Open Boundary Conditions */ # undef TIDES # define OBC_EAST # define OBC_WEST # define OBC_NORTH # define OBC_SOUTH /* Applications */ # undef BIOLOGY # undef FLOATS # undef STATIONS # undef PASSIVE_TRACER # undef SEDIMENT # undef MUSTANG # undef BBL /* I/O server */ # undef XIOS /* Calendar */ # undef USE_CALENDAR /* dedicated croco.log file */ # define LOGFILE /* !------------------------------------------------- ! PRE-SELECTED OPTIONS ! ! ADVANCED OPTIONS ARE IN CPPDEFS_DEV.H !------------------------------------------------- */ /* Parallelization */ # ifdef MPI # undef PARALLEL_FILES # undef NC4PAR # undef MPI_NOLAND # undef MPI_TIME # endif # undef AUTOTILING /* Non-hydrostatic options */ # ifdef NBQ # define W_HADV_TVD # define W_VADV_TVD # endif /* Grid configuration */ # define CURVGRID # define SPHERICAL # define MASKING # undef WET_DRY # define NEW_S_COORD /* Model dynamics */ # define SOLVE3D # define UV_COR # define UV_ADV /* Equation of State */ # define SALINITY # define NONLIN_EOS /* Surface Forcing */ /* ! Bulk flux algorithms (options) ! by default : COARE3p0 paramet with GUSTINESS effects ! ! To change bulk param, define one the following keys (exclusive) : ! - define BULK_ECUMEV0 : ECUME_v0 param ! - define BULK_ECUMEV6 : ECUME_v6 param ! - define BULK_WASP : WASP param ! Note : gustiness effects can be added for all params ! by defining BULK_GUSTINESS */ # undef BULK_FLUX # ifdef BULK_FLUX # undef BULK_ECUMEV0 # undef BULK_ECUMEV6 # undef BULK_WASP # define BULK_GUSTINESS # define BULK_LW # undef SST_SKIN # undef ANA_DIURNAL_SW # undef ONLINE # ifdef ONLINE # undef AROME # undef ERA_ECMWF # endif # undef READ_PATM # ifdef READ_PATM # define OBC_PATM # endif # else # define QCORRECTION # define SFLX_CORR # undef SFLX_CORR_COEF # define ANA_DIURNAL_SW # endif # undef SFLUX_CFB # undef SEA_ICE_NOFLUX /* Lateral Forcing */ # undef CLIMATOLOGY # ifdef CLIMATOLOGY # define ZCLIMATOLOGY # define M2CLIMATOLOGY # define M3CLIMATOLOGY # define TCLIMATOLOGY # define ZNUDGING # define M2NUDGING # define M3NUDGING # define TNUDGING # undef ROBUST_DIAG # endif # define FRC_BRY # ifdef FRC_BRY # define Z_FRC_BRY # define M2_FRC_BRY # define M3_FRC_BRY # define T_FRC_BRY # endif /* Lateral Momentum Advection (default UP3) */ # define UV_HADV_UP3 # undef UV_HADV_UP5 # undef UV_HADV_WENO5 # undef UV_HADV_TVD /* Lateral Explicit Momentum Mixing */ # undef UV_VIS2 # ifdef UV_VIS2 # define UV_VIS_SMAGO # endif /* Vertical Momentum Advection */ # define UV_VADV_SPLINES # undef UV_VADV_WENO5 # undef UV_VADV_TVD /* Lateral Tracer Advection (default UP3) */ # undef TS_HADV_UP3 # define TS_HADV_RSUP3 # undef TS_HADV_UP5 # undef TS_HADV_WENO5 /* Lateral Explicit Tracer Mixing */ # undef TS_DIF2 # undef TS_DIF4 # undef TS_MIX_S /* Vertical Tracer Advection */ # define TS_VADV_SPLINES # undef TS_VADV_AKIMA # undef TS_VADV_WENO5 /* Sponge layers for UV and TS */ # define SPONGE /* Semi-implicit Vertical Tracer/Mom Advection */ # undef VADV_ADAPT_IMP /* Bottom friction in fast 3D step */ # define LIMIT_BSTRESS # undef BSTRESS_FAST /* Vertical Mixing */ # undef BODYFORCE # undef BVF_MIXING # define LMD_MIXING # undef GLS_MIXING # ifdef LMD_MIXING # define LMD_SKPP # define LMD_BKPP # define LMD_RIMIX # define LMD_CONVEC # define LMD_NONLOCAL # undef LMD_DDMIX # undef LMD_LANGMUIR # endif /* Wave-current interactions */ # ifdef OW_COUPLING # undef MRL_WCI # define BBL # endif # ifdef MRL_WCI # ifndef OW_COUPLING # undef WAVE_OFFLINE # define ANA_WWAVE # undef WKB_WWAVE # endif # undef WAVE_ROLLER # define WAVE_STREAMING # define WAVE_FRICTION # define WAVE_RAMP # ifdef WKB_WWAVE # undef WKB_OBC_NORTH # undef WKB_OBC_SOUTH # define WKB_OBC_WEST # undef WKB_OBC_EAST # endif # endif /* Bottom Forcing */ # define ANA_BSFLUX # define ANA_BTFLUX /* Point Sources - Rivers */ # undef PSOURCE # undef PSOURCE_NCFILE # ifdef PSOURCE_NCFILE # undef PSOURCE_NCFILE_TS # endif /* Open Boundary Conditions */ # ifdef TIDES # define SSH_TIDES # define UV_TIDES # define POT_TIDES # undef TIDES_MAS # ifndef UV_TIDES # define OBC_REDUCED_PHYSICS # endif # define TIDERAMP # endif # define OBC_M2CHARACT # undef OBC_M2ORLANSKI # define OBC_M3ORLANSKI # define OBC_TORLANSKI # undef OBC_M2SPECIFIED # undef OBC_M3SPECIFIED # undef OBC_TSPECIFIED /* Input/Output */ # define AVERAGES # define AVERAGES_K # undef OUTPUTS_SURFACE # undef HOURLY_VELOCITIES /* Exact restart */ # undef EXACT_RESTART /* Parallel reproducibility or restartabilty test */ # undef RVTK_DEBUG # undef RVTK_DEBUG_PERFRST # if defined RVTK_DEBUG && !defined RVTK_DEBUG_PERFRST ! Parallel reproducibility test # undef RVTK_DEBUG_ADVANCED # define XXXRVTK_DEBUG_READ # elif defined RVTK_DEBUG && defined RVTK_DEBUG_PERFRST ! Restartability test # define EXACT_RESTART # undef RVTK_DEBUG_ADVANCED # define XXXRVTK_DEBUG_READ # endif ! RVTK test (Restartability or Parallel reproducibility) # if defined RVTK_DEBUG && defined BULK_FLUX && defined ONLINE # define BULK_MONTH_1DIGIT # endif /* ! Diagnostics !-------------------------------------------- ! 3D Tracer & momentum balance ! 2D Mixing layer balance ! Depth-mean vorticity and energy balance ! Eddy terms !-------------------------------------------- ! */ # undef DO_NOT_OVERWRITE # undef RESTART_DIAGS # undef DIAGNOSTICS_TS # undef DIAGNOSTICS_UV # ifdef DIAGNOSTICS_TS # undef DIAGNOSTICS_TS_ADV # undef DIAGNOSTICS_TS_MLD # endif # undef DIAGNOSTICS_TSVAR # ifdef DIAGNOSTICS_TSVAR # define DIAGNOSTICS_TS # define DIAGNOSTICS_TS_ADV # endif # undef DIAGNOSTICS_VRT # undef DIAGNOSTICS_EK # ifdef DIAGNOSTICS_EK # undef DIAGNOSTICS_EK_FULL # undef DIAGNOSTICS_EK_MLD # endif # undef DIAGNOSTICS_BARO # undef DIAGNOSTICS_PV # undef DIAGNOSTICS_DISS # ifdef DIAGNOSTICS_DISS # define DIAGNOSTICS_PV # endif # undef DIAGNOSTICS_EDDY # undef TENDENCY # ifdef TENDENCY # define DIAGNOSTICS_UV # endif /* ! Applications: !--------------------------------- ! Biology, floats, Stations, ! Passive tracer, Sediments, BBL !--------------------------------- ! Quasi-monotone lateral advection scheme (WENO5) for passive/biology/sediment tracers */ # if defined PASSIVE_TRACER || defined BIOLOGY || defined SEDIMENT \ || defined MUSTANG # define BIO_HADV_WENO5 # endif /* Choice of Biology models */ # ifdef BIOLOGY # undef PISCES # undef BIO_NChlPZD # undef BIO_N2ChlPZD2 # define BIO_BioEBUS /* Biology options */ # ifdef PISCES # undef DIURNAL_INPUT_SRFLX # define key_pisces # define key_ligand # undef key_pisces_quota # undef key_sediment # endif # ifdef BIO_NChlPZD # define OXYGEN # endif # ifdef BIO_BioEBUS # define NITROUS_OXIDE # endif /* Biology diagnostics */ # define DIAGNOSTICS_BIO # if defined DIAGNOSTICS_BIO && defined PISCES # define key_trc_diaadd # endif # endif /* Lagrangian floats model */ # ifdef FLOATS # undef FLOATS_GLOBAL_ATTRIBUTES # undef IBM # undef RANDOM_WALK # ifdef RANDOM_WALK # define DIEL_MIGRATION # define RANDOM_VERTICAL # define RANDOM_HORIZONTAL # endif # endif /* Stations recording */ # ifdef STATIONS # define ALL_SIGMA # endif /* USGS Sediment model */ # ifdef SEDIMENT # define SUSPLOAD # define BEDLOAD # define MORPHODYN # endif /* MUSTANG Sediment model */ # ifdef MUSTANG # undef key_MUSTANG_V2 # undef key_MUSTANG_bedload # undef MORPHODYN # define key_sand2D # define MUSTANG_CORFLUX # undef key_tauskin_c_upwind # undef WAVE_OFFLINE # endif #elif defined COASTAL /* !==================================================================== ! COASTAL (realistic) Configurations !==================================================================== ! !---------------------- ! BASIC OPTIONS !---------------------- ! */ /* Configuration Name */ # define VILAINE /* Parallelization */ # undef OPENMP # define MPI /* Open Boundary Conditions */ # undef TIDES # undef OBC_EAST # define OBC_WEST # undef OBC_NORTH # define OBC_SOUTH /* Applications */ # undef BIOLOGY # undef FLOATS # undef STATIONS # undef PASSIVE_TRACER # undef SEDIMENT # undef BBL # define MUSTANG /* I/O server */ # undef XIOS /* Custion IO */ # define ZETA_DRY_IO # define FILLVAL /* Calendar */ # undef START_DATE # define USE_CALENDAR /* dedicated croco.log file */ # define LOGFILE /*! !------------------------------------------------- ! PRE-SELECTED OPTIONS ! ! ADVANCED OPTIONS ARE IN CPPDEFS_DEV.H !------------------------------------------------- */ /* Parallelization */ # ifdef MPI # define NC4PAR # undef MPI_NOLAND # undef MPI_TIME # endif # undef AUTOTILING /* Non-hydrostatic options */ # ifdef NBQ # define W_HADV_WENO5 # define W_VADV_WENO5 # endif /* Grid configuration */ # define ANA_INITIAL # define CURVGRID # define SPHERICAL # define MASKING # define WET_DRY # define NEW_S_COORD /* Model dynamics */ # define SOLVE3D # define UV_COR # define UV_ADV /* Equation of State */ # define SALINITY # define NONLIN_EOS /* Lateral Momentum Advection (default UP3) */ # undef UV_HADV_UP3 # define UV_HADV_WENO5 /* Lateral Explicit Momentum Mixing */ # define UV_VIS2 # ifdef UV_VIS2 # define UV_VIS_SMAGO # endif /* Vertical Momentum Advection */ # undef UV_VADV_SPLINES # define UV_VADV_WENO5 /* Lateral Tracer Advection (default UP3) */ # undef TS_HADV_UP3 # define TS_HADV_WENO5 /* Lateral Explicit Tracer Mixing */ # define TS_DIF2 # define TS_MIX_S /* Vertical Tracer Advection */ # undef TS_VADV_SPLINES # define TS_VADV_WENO5 /* Sponge layers for UV and TS */ # define SPONGE /* Semi-implicit Vertical Tracer/Mom Advection */ # undef VADV_ADAPT_IMP /* Bottom friction in fast 3D step */ # define LIMIT_BSTRESS # undef BSTRESS_FAST /* Vertical Mixing */ # define GLS_MIXING /* Surface Forcing */ # define BULK_FLUX # ifdef BULK_FLUX # undef ECUMEv0 # undef ECUMEv6 # undef WASP # define GUSTINESS # undef BULK_LW # undef SST_SKIN # undef ANA_DIURNAL_SW # define ONLINE # ifdef ONLINE # define AROME # undef ERA_ECMWF # endif # define READ_PATM # ifdef READ_PATM # define OBC_PATM # endif # else # undef QCORRECTION # undef SFLX_CORR # undef SFLX_CORR_COEF # undef ANA_DIURNAL_SW # endif # undef ANA_SSFLUX # define ANA_STFLUX /* Lateral Forcing */ # undef ANA_BRY # define FRC_BRY # ifdef FRC_BRY # define Z_FRC_BRY # define M2_FRC_BRY # undef M3_FRC_BRY # define T_FRC_BRY # endif /* Bottom Forcing */ # define ANA_BSFLUX # define ANA_BTFLUX /* Point Sources - Rivers */ # undef PSOURCE # undef PSOURCE_MASS # undef PSOURCE_NCFILE # ifdef PSOURCE_NCFILE # undef PSOURCE_NCFILE_TS # endif /* Open Boundary Conditions */ # ifdef TIDES # define M2FILTER_NONE # define SSH_TIDES # define UV_TIDES # undef POT_TIDES # undef TIDES_MAS # ifndef UV_TIDES # define OBC_REDUCED_PHYSICS # endif # define TIDERAMP # endif # define OBC_M2CHARACT # define OBC_M3ORLANSKI # define OBC_TORLANSKI /* Input/Output */ # undef AVERAGES # undef AVERAGES_K # undef OUTPUTS_SURFACE # undef HOURLY_VELOCITIES /* ! Applications: !--------------------------------- ! Biology, floats, Stations, ! Passive tracer, Sediments, BBL !--------------------------------- ! Quasi-monotone lateral advection scheme (WENO5) for passive/biology/sediment tracers */ # if defined PASSIVE_TRACER || defined BIOLOGY || defined SEDIMENT \ || defined SUBSTANCE || defined MUSTANG # define BIO_HADV_WENO5 # endif /* USGS Sediment model */ # ifdef SEDIMENT # define SUSPLOAD # define BEDLOAD # define MORPHODYN # endif /* MUSTANG Sediment model */ # ifdef MUSTANG # undef key_MUSTANG_V2 # undef key_MUSTANG_bedload # undef MORPHODYN # define key_sand2D # define MUSTANG_CORFLUX # undef key_tauskin_c_upwind # define WAVE_OFFLINE # undef key_MUSTANG_specif_outputs # endif /* ! !========================================================== ! IDEALIZED CONFIGURATIONS !========================================================== ! */ #elif defined BASIN /* ! Basin Example ! ===== ======= */ # undef OPENMP # define MPI # define UV_ADV # define UV_COR # define UV_VIS2 # define SOLVE3D # define TS_DIF2 # define BODYFORCE # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_BTFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined CANYON /* ! Canyon Example ! ====== ======= */ # undef OPENMP # define MPI # define CANYON_STRAT # define UV_ADV # define UV_COR # define SOLVE3D # define EW_PERIODIC # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_BTFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined EQUATOR /* ! Equator Example ! ======= ======= ! Boccaletti, G., R.C. Pacanowski, G.H. Philander and A.V. Fedorov, 2004, ! The Thermal Structure of the Upper Ocean, J.Phys.Oceanogr., 34, 888-902. */ # undef OPENMP # define MPI # define UV_ADV # define UV_COR # define UV_VIS2 # define SOLVE3D # define TS_DIF2 # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SRFLUX # define ANA_SSFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define QCORRECTION # define ANA_SST # define LMD_MIXING # define LMD_RIMIX # define LMD_CONVEC # define NO_FRCFILE # undef RVTK_DEBUG #elif defined INNERSHELF /* ! Inner Shelf Example ! ===== ===== ======= */ # undef OPENMP # define MPI # undef NBQ # define INNERSHELF_EKMAN # define INNERSHELF_APG # define SOLVE3D # define UV_COR # define ANA_GRID # define ANA_INITIAL # define AVERAGES # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_BSFLUX # define ANA_BTFLUX # define ANA_SMFLUX # define NS_PERIODIC # define OBC_WEST # define SPONGE # ifndef INNERSHELF_EKMAN # define UV_ADV # define SALINITY # define NONLIN_EOS # define LMD_MIXING # undef GLS_MIXING # ifdef LMD_MIXING # define LMD_SKPP # define LMD_BKPP # define LMD_RIMIX # define LMD_CONVEC # endif # undef WAVE_MAKER_INTERNAL # ifdef WAVE_MAKER_INTERNAL # define ANA_BRY # define Z_FRC_BRY # define M2_FRC_BRY # define M3_FRC_BRY # define T_FRC_BRY # endif # endif # define NO_FRCFILE # undef RVTK_DEBUG #elif defined SINGLE_COLUMN /* ! Single Column Example ! ====== ====== ======= ! ! Seven sets up are encompassed : */ # define KATO_PHILIPS /* erosion of linear strat by constant wind stress */ # undef WILLIS_DEARDORFF /* erosion of linear strat by constant surf buoyancy loss */ # undef DIURNAL_CYCLE /* erosion of linear strat by constant surf buoyancy loss */ # undef FORCED_EKBBL /* forced Ekman bottom boundary layer */ # undef FORCED_DBLEEK /* forced Ekman bottom and surface boundary layers */ # undef FORCED_NONROTBBL /* non rotating forced bottom boundary layer : Prandt layer */ # undef FORCED_OSCNONROTBBL /* non rotating oscillatory forced bottom boundary layer */ # undef OPENMP # define MPI # define UV_ADV # define NEW_S_COORD # define UV_COR # define SOLVE3D # undef LMD_MIXING # define GLS_MIXING # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_BTFLUX # define EW_PERIODIC # define NS_PERIODIC # undef RVTK_DEBUG #elif defined INTERNAL /* ! Internal Tide Example ! ======== ==== ======= ! ! Di Lorenzo, E, W.R. Young and S.L. Smith, 2006, Numerical and anlytical estimates of M2 ! tidal conversion at steep oceanic ridges, J. Phys. Oceanogr., 36, 1072-1084. */ # undef OPENMP # define MPI # define SOLVE3D # define UV_COR # define UV_ADV # define BODYTIDE # define ANA_GRID # define ANA_INITIAL # define ANA_BTFLUX # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_VMIX # define EW_PERIODIC # define NS_PERIODIC # ifdef INTERNALSHELF # undef EW_PERIODIC # define OBC_EAST # define OBC_WEST # define SPONGE # define ANA_SSH # define ANA_M2CLIMA # define ANA_M3CLIMA # define ANA_TCLIMA # define ZCLIMATOLOGY # define M2CLIMATOLOGY # define M3CLIMATOLOGY # define TCLIMATOLOGY # define M2NUDGING # define M3NUDGING # define TNUDGING # endif # define NO_FRCFILE # undef RVTK_DEBUG #elif defined IGW /* ! COMODO Internal Tide Example ! ====== ======== ==== ======= ! ! Pichon, A., 2007: Tests academiques de maree, Rapport interne n 21 du 19 octobre 2007, ! Service Hydrographique et Oceanographique de la Marine. */ # define EXPERIMENT3 # undef OPENMP # define MPI # undef NBQ # define NEW_S_COORD # undef TIDES # define TIDERAMP # define SSH_TIDES # define UV_TIDES # define SOLVE3D # define UV_ADV # define UV_COR # define UV_VIS2 # undef VADV_ADAPT_IMP # define SPHERICAL # define CURVGRID # define ANA_INITIAL # define ANA_VMIX # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SRFLUX # define ANA_SSFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define NS_PERIODIC # define OBC_EAST # define OBC_WEST # undef SPONGE # define ANA_SSH # define ANA_M2CLIMA # define ANA_M3CLIMA # define ANA_TCLIMA # define ZCLIMATOLOGY # define M2CLIMATOLOGY # define M3CLIMATOLOGY # define TCLIMATOLOGY # define M2NUDGING # define M3NUDGING # define TNUDGING # undef ONLINE_ANALYSIS # undef RVTK_DEBUG #elif defined RIVER /* ! River run-off test problem ! ========================== */ # undef OPENMP # define MPI # define SOLVE3D # define UV_ADV # define UV_COR # define NONLIN_EOS # define SALINITY # define ANA_GRID # define MASKING # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define LMD_MIXING # define LMD_SKPP # define LMD_BKPP # define LMD_RIMIX # define LMD_CONVEC # undef PSOURCE # undef PSOURCE_MASS # define ANA_PSOURCE # define NS_PERIODIC # undef FLOATS # ifdef FLOATS # define RANDOM_WALK # ifdef RANDOM_WALK # define DIEL_MIGRATION # define RANDOM_VERTICAL # define RANDOM_HORIZONTAL # endif # endif # define NO_FRCFILE # undef RVTK_DEBUG #elif defined SEAMOUNT /* ! Seamount Example ! ======== ======= */ # undef OPENMP # define MPI # define UV_ADV # define UV_COR # define SOLVE3D # define SALINITY # define NONLIN_EOS # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined SHELFRONT /* ! Shelf Front Example ! ===== ===== ======= */ # undef OPENMP # define MPI # define UV_ADV # define UV_COR # define SOLVE3D # define SALINITY # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define EW_PERIODIC # define NO_FRCFILE # undef RVTK_DEBUG #elif defined SOLITON /* ! Equatorial Rossby Wave Example ! ========== ====== ==== ======= */ # undef OPENMP # define MPI # define UV_COR # define UV_ADV # define ANA_GRID # define ANA_INITIAL # define AVERAGES # define EW_PERIODIC # define ANA_SMFLUX # define ANA_BTFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined THACKER /* ! Thacker Example ! ======= ======= ! ! Thacker, W., (1981), Some exact solutions to the nonlinear ! shallow-water wave equations. J. Fluid Mech., 107, 499-508. */ # undef OPENMP # define MPI # define THACKER_2DV # define SOLVE3D # define UV_COR # define UV_ADV # undef UV_VIS2 # define WET_DRY # define NEW_S_COORD # define ANA_GRID # define ANA_INITIAL # define ANA_BTFLUX # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined OVERFLOW /* ! Gravitational/Overflow Example ! ====================== ======= */ # undef OPENMP # define MPI # define UV_ADV # define UV_COR # define UV_VIS2 # define TS_DIF2 # define TS_MIX_GEO # define SOLVE3D # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_BTFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined UPWELLING /* ! Upwelling Example ! ========= ======= */ # undef OPENMP # define MPI # define SOLVE3D # define UV_COR # define UV_ADV # define ANA_GRID # define ANA_INITIAL # define AVERAGES # define SALINITY # define NONLIN_EOS # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_BSFLUX # define ANA_BTFLUX # define ANA_SMFLUX # define LMD_MIXING # define LMD_SKPP # define LMD_BKPP # define LMD_RIMIX # define LMD_CONVEC # define EW_PERIODIC # define NO_FRCFILE # undef RVTK_DEBUG #elif defined VORTEX /* ! Baroclinic Vortex Example (TEST AGRIF) ! ========== ====== ======= ===== ====== */ # undef OPENMP # define MPI # undef AGRIF # undef AGRIF_2WAY # undef NBQ # define SOLVE3D # define UV_COR # define UV_ADV # define ANA_STFLUX # define ANA_SMFLUX # define ANA_BSFLUX # define ANA_BTFLUX # define ANA_VMIX # define OBC_EAST # define OBC_WEST # define OBC_NORTH # define OBC_SOUTH # define SPONGE # define ZCLIMATOLOGY # define M2CLIMATOLOGY # define M3CLIMATOLOGY # define TCLIMATOLOGY # define ZNUDGING # define M2NUDGING # define M3NUDGING # define TNUDGING # define NO_FRCFILE # undef RVTK_DEBUG #elif defined JET /* ! Baroclinic JET Example ! ========== === ======= */ # define ANA_JET # define MPI # undef NBQ # define SOLVE3D # define UV_COR # define UV_ADV # define UV_VIS2 # ifdef ANA_JET # define ANA_GRID # define ANA_INITIAL # endif # define ANA_STFLUX # define ANA_SMFLUX # define ANA_BSFLUX # define ANA_BTFLUX # define ANA_VMIX # define EW_PERIODIC # undef CLIMATOLOGY # ifdef CLIMATOLOGY # define ZCLIMATOLOGY # define M2CLIMATOLOGY # define M3CLIMATOLOGY # define TCLIMATOLOGY # define ZNUDGING # define M2NUDGING # define M3NUDGING # define TNUDGING # define ROBUST_DIAG # define ZONAL_NUDGING # ifdef ANA_JET # define ANA_SSH # define ANA_M2CLIMA # define ANA_M3CLIMA # define ANA_TCLIMA # endif # endif # define LMD_MIXING # ifdef LMD_MIXING # undef ANA_VMIX # define ANA_SRFLUX # undef LMD_KPP # define LMD_RIMIX # define LMD_CONVEC # endif # define NO_FRCFILE # undef RVTK_DEBUG #elif defined SHOREFACE /* ! PLANAR BEACH Example ! ====== ===== ======= ! ! Uchiyama, Y., McWilliams, J.C. and Shchepetkin, A.F. (2010): ! Wave-current interaction in an oceanic circulation model with a ! vortex force formalism: Application to the surf zone. ! Ocean Modelling Vol. 34:1-2, pp.16-35. */ # undef OPENMP # define MPI # define SOLVE3D # define UV_ADV # undef MASKING # define WET_DRY # define NEW_S_COORD # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_SST # define ANA_BTFLUX # define NS_PERIODIC # define OBC_WEST # define SPONGE # undef MRL_WCI # ifdef MRL_WCI # undef WAVE_OFFLINE # ifndef WAVE_OFFLINE # define WKB_WWAVE # define WKB_OBC_WEST # define WAVE_FRICTION # undef WAVE_ROLLER # undef MRL_CEW # endif # endif # define LMD_MIXING # define LMD_SKPP # define LMD_BKPP # undef BBL # undef SEDIMENT # ifdef SEDIMENT # define SUSPLOAD # define BEDLOAD # define TCLIMATOLOGY # define TNUDGING # define ANA_TCLIMA # endif # undef RVTK_DEBUG #elif defined SANDBAR /* ! SANDBAR Example ! ======= ======= ! ! Roelvink, J. A. and Reniers, A. (1995). Lip 11d delta flume experiments ! – data report. Technical report, Delft, The Netherlands, Delft Hydraulics */ # define SANDBAR_OFFSHORE /* LIP-1B */ # undef SANDBAR_ONSHORE /* LIP-1C */ # undef OPENMP # define MPI # undef NBQ # define SOLVE3D # define UV_ADV # define NEW_S_COORD # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_SST # define ANA_BTFLUX # define OBC_WEST # define SPONGE # define WET_DRY # ifndef NBQ /* ! NBQ */ # undef MRL_WCI # ifdef MRL_WCI # define WKB_WWAVE # define MRL_CEW # define WKB_OBC_WEST # define WAVE_ROLLER # define WAVE_FRICTION # define WAVE_BREAK_TG86 # define WAVE_BREAK_SWASH # define WAVE_STREAMING # undef WAVE_RAMP # endif # define GLS_MIXING # define GLS_KOMEGA # undef LMD_MIXING # ifdef LMD_MIXING # define LMD_SKPP # define LMD_BKPP # define LMD_VMIX_SWASH # endif # define BBL # else /* NBQ */ # define MPI # define NBQ_PRECISE # define WAVE_MAKER # define UV_ADV # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define W_HADV_WENO5 # define W_VADV_WENO5 # define GLS_MIXING_3D # define GLS_KOMEGA # define ANA_BRY # define Z_FRC_BRY # define M2_FRC_BRY # define M3_FRC_BRY # define T_FRC_BRY # define AVERAGES # define AVERAGES_K # define DIAGNOSTICS_EDDY # endif /* NBQ */ # define SEDIMENT # ifdef SEDIMENT # define SUSPLOAD # ifndef NBQ # define BEDLOAD # endif # define MORPHODYN # define TCLIMATOLOGY # define TNUDGING # define ANA_TCLIMA # endif # undef STATIONS # ifdef STATIONS # define ALL_SIGMA # endif # undef DIAGNOSTICS_TS # ifdef DIAGNOSTICS_TS # define DIAGNOSTICS_TS_ADV # endif # define NO_FRCFILE # undef RVTK_DEBUG #elif defined RIP /* ! Rip Current Example ! === ======= ======= ! ! Weir, B., Uchiyama, Y.. (2010): ! A vortex force analysis of the interaction of rip ! currents and surface gravity wave ! JGR Vol. 116 ! ! Default is idealized Duck Beach with 3D topography ! RIP_TOPO_2D: Logshore uniform topography ! BISCA: realistic case with Input files ! GRANDPOPO: idealized Grand Popo Beach in Benin, ! longshore uniform ! WAVE_MAKER & NBQ : wave resolving simulation ! rather than wave-averaged (#undef MRL_WCI) */ # undef BISCA # undef RIP_TOPO_2D # undef GRANDPOPO # ifdef GRANDPOPO # define RIP_TOPO_2D # endif # undef ANA_TIDES # undef OPENMP # define MPI # define SOLVE3D # define NEW_S_COORD # define UV_ADV # undef NBQ # ifdef NBQ # define NBQ_PRECISE # define WAVE_MAKER # define WAVE_MAKER_SPECTRUM # define WAVE_MAKER_DSPREAD # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define W_HADV_WENO5 # define W_VADV_WENO5 # define GLS_MIXING_3D # undef ANA_TIDES # undef MRL_WCI # define OBC_SPECIFIED_WEST # define FRC_BRY # define ANA_BRY # define Z_FRC_BRY # define M2_FRC_BRY # define M3_FRC_BRY # define T_FRC_BRY # define AVERAGES # define AVERAGES_K # else # define UV_VIS2 # define UV_VIS_SMAGO # define LMD_MIXING # define LMD_SKPP # define LMD_BKPP # undef MRL_WCI # endif # define WET_DRY # ifdef MRL_WCI # define WKB_WWAVE # define WKB_OBC_WEST # define WAVE_ROLLER # define WAVE_FRICTION # define WAVE_STREAMING # define WAVE_BREAK_SWASH # define MRL_CEW # ifdef RIP_TOPO_2D # define WAVE_RAMP # endif # endif # ifndef BISCA # define ANA_GRID # endif # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_SST # define ANA_BTFLUX # if !defined BISCA && !defined ANA_TIDES # define NS_PERIODIC # else # define OBC_NORTH # define OBC_SOUTH # endif # define OBC_WEST # define SPONGE # ifdef ANA_TIDES # define ANA_SSH # define ANA_M2CLIMA # define ANA_M3CLIMA # define ZCLIMATOLOGY # define M2CLIMATOLOGY # define M3CLIMATOLOGY # define M2NUDGING # define M3NUDGING # endif # ifdef BISCA # define BBL # endif # undef SEDIMENT # ifdef SEDIMENT # define SUSPLOAD # define BEDLOAD # undef MORPHODYN # endif # undef DIAGNOSTICS_UV # undef RVTK_DEBUG #elif defined SWASH /* ! SWASH PLANAR BEACH Example ! ===== ====== ===== ======= ! */ # define SWASH_GLOBEX_B2 # undef SWASH_GLOBEX_A3 # undef OPENMP # define MPI # define SOLVE3D # define AVERAGES # define NBQ # define NBQ_PRECISE # define WAVE_MAKER # define UV_ADV # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define W_HADV_WENO5 # define W_VADV_WENO5 # define GLS_MIXING_3D # define NEW_S_COORD # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_SST # define ANA_BTFLUX # define OBC_WEST # define OBC_SPECIFIED_WEST # define ANA_BRY # define Z_FRC_BRY # define M2_FRC_BRY # define M3_FRC_BRY # define T_FRC_BRY # define WET_DRY # define NO_FRCFILE # undef RVTK_DEBUG #elif defined TANK /* ! Tank Example ! ==== ======= ! ! Chen, X.J., 2003. A fully hydrodynamic model for three-dimensional, ! free-surface flows. ! Int. J. Numer. Methods Fluids 42, 929â~@~S952. */ # define MPI # define NBQ # ifdef NBQ # define NBQ_PRECISE # endif # define M2FILTER_NONE # define SOLVE3D # undef UV_ADV # define NEW_S_COORD # define ANA_GRID # define ANA_INITIAL # define ANA_BTFLUX # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined MOVING_BATHY /* ! Moving Bathy Example ! ====== ===== ======= ! ! Auclair et al., Ocean Mod. 2014: Implementation of a time-dependent ! bathymetry in a free-surface ocean model: Application to internal ! wave generation ! */ # define MPI # define ANA_MORPHODYN # define NBQ # define NBQ_PRECISE # define M2FILTER_NONE # define SOLVE3D # define NEW_S_COORD # undef PASSIVE_TRACER # define UV_ADV # define TS_HADV_WENO5 # define TS_VADV_WENO5 # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define W_HADV_WENO5 # define W_VADV_WENO5 # define ANA_GRID # define ANA_INITIAL # define ANA_VMIX # define ANA_BTFLUX # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined ACOUSTIC /* ! ACOUSTIC WAVE TESTCASE ! ======== ==== ======== */ # define MPI # define NBQ # ifdef NBQ # undef NBQ_PRECISE # endif # undef UV_VIS2 # define SOLVE3D # define NEW_S_COORD # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_SRFLUX # define ANA_BTFLUX # define NO_FRCFILE # undef RVTK_DEBUG #elif defined GRAV_ADJ /* ! Gravitational Adjustment Example ! ============= ========== ======= */ # undef OPENMP # define MPI # undef NBQ # undef XIOS # define SOLVE3D # define NEW_S_COORD # define UV_ADV # define TS_HADV_WENO5 # define TS_VADV_WENO5 # define UV_HADV_WENO5 # define UV_VADV_WENO5 # ifdef NBQ # define W_HADV_WENO5 # define W_VADV_WENO5 # endif # undef UV_VIS2 # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_BTFLUX # undef PASSIVE_TRACER # define NO_FRCFILE # undef RVTK_DEBUG #elif defined ISOLITON /* ! Gravitational Adjustment Example ! ============= ========== ======= ! ! Internal soliton case ISOLITON (non-hydrostatic) is setup from: ! Horn, D.A., J. Imberger, & G.N. Ivey, (2001). ! The degeneration of large-scale interfacial gravity waves in lakes. ! J. Fluid Mech., 434:181-207. ! */ # define MPI # define NBQ # undef XIOS # define SOLVE3D # define NEW_S_COORD # define UV_ADV # define TS_HADV_WENO5 # define TS_VADV_WENO5 # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define W_HADV_WENO5 # define W_VADV_WENO5 # undef UV_VIS2 # undef TS_DIF2 # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # define ANA_BTFLUX # undef PASSIVE_TRACER # define NO_FRCFILE # undef RVTK_DEBUG #elif defined KH_INST /* ! Kelvin-Helmholtz Instability Example ! ================ =========== ======= ! */ # undef KH_INSTY # undef KH_INST3D # define MPI # define NBQ # undef NBQ_PRECISE # undef XIOS # define SOLVE3D # define NEW_S_COORD # define UV_ADV # define TS_HADV_WENO5 # define TS_VADV_WENO5 # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define W_HADV_WENO5 # define W_VADV_WENO5 # undef SALINITY # undef PASSIVE_TRACER # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_STFLUX # undef ANA_SRFLUX # define ANA_BTFLUX # define ANA_SSFLUX # define ANA_BSFLUX # ifndef KH_INSTY # define EW_PERIODIC # else # define NS_PERIODIC # endif # define NO_FRCFILE # undef RVTK_DEBUG #elif defined TS_HADV_TEST /* ! Horizontal TRACER ADVECTION EXAMPLE ! ========== ====== ========= ======= ! */ # undef SOLID_BODY_ROT /* Example with spatially varying velocity */ # undef DIAGONAL_ADV /* Constant advection in the diagonal */ # define SOLID_BODY_PER /* Example with a space and time-varying velocity */ # undef OPENMP # define MPI # undef UV_ADV # define NEW_S_COORD # undef UV_COR # define SOLVE3D # define M2FILTER_NONE # define ANA_VMIX # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define ANA_SSFLUX # define NO_FRCFILE # define SALINITY # define EW_PERIODIC # define NS_PERIODIC # define TS_HADV_UP3 /* Choose specific advection scheme */ # undef TS_HADV_C4 # undef TS_HADV_UP5 # undef TS_HADV_WENO5 # undef TS_HADV_C6 # undef RVTK_DEBUG #elif defined DUNE /* ! Dune test case example ! ==== ==== ==== ======= ! */ # undef ANA_DUNE /* Analytical test case (Marieu) */ # undef DUNE3D /* 3D Dune example */ # undef OPENMP # define MPI # define M2FILTER_NONE # define UV_ADV # define NEW_S_COORD # undef UV_COR # define SOLVE3D # define ANA_GRID # define ANA_INITIAL # define ANA_SSFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_BSFLUX # define ANA_BTFLUX # define ANA_SMFLUX # define OBC_WEST # define OBC_EAST # define ANA_SSH # define ZCLIMATOLOGY # define ANA_M2CLIMA # define M2CLIMATOLOGY # define SEDIMENT # undef MUSTANG # define MORPHODYN # ifdef SEDIMENT # undef SUSPLOAD # define BEDLOAD # undef BEDLOAD_WENO5 # ifdef ANA_DUNE # define BEDLOAD_MARIEU # else # define BEDLOAD_WULIN # define TAU_CRIT_WULIN # endif # endif # ifdef MUSTANG # define key_MUSTANG_V2 # define key_MUSTANG_bedload # define key_tauskin_c_upwind # endif # define GLS_MIXING # define NO_FRCFILE # undef RVTK_DEBUG #elif defined SED_TOY /* ! SED TOY (1D Single Column example) ! === === === ====== ====== ======== ! */ /* Choose an experiment : */ # define SED_TOY_ROUSE /* Rouse */ # undef SED_TOY_CONSOLID /* Consolidation */ # undef SED_TOY_RESUSP /* Erosion and sediment resuspension */ # undef SED_TOY_FLOC_0D /* Flocculation */ # undef SED_TOY_FLOC_1D /* Flocculation */ # undef OPENMP # define MPI # define NEW_S_COORD # define SOLVE3D # undef NONLIN_EOS # define SALINITY # undef UV_VIS2 # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define EW_PERIODIC # define NS_PERIODIC # ifdef SED_TOY_ROUSE # define ANA_VMIX # define BODYFORCE # endif # ifdef SED_TOY_FLOC_1D # define ANA_VMIX # define BODYFORCE # endif # ifdef SED_TOY_FLOC_0D # define ANA_VMIX # define BODYFORCE # endif # define SEDIMENT # undef MUSTANG # ifdef MUSTANG # if defined SED_TOY_FLOC_0D || defined SED_TOY_FLOC_1D # define key_MUSTANG_flocmod # define GLS_MIXING # define GLS_KOMEGA # endif # endif # ifdef SEDIMENT # define SUSPLOAD # undef BEDLOAD # ifdef SED_TOY_ROUSE # define SED_TAU_CD_CONST # endif # if defined SED_TOY_FLOC_1D || defined SED_TOY_CONSOLID || \ defined SED_TOY_RESUSP # undef BBL # define GLS_MIXING # define GLS_KOMEGA # define MIXED_BED # undef COHESIVE_BED # endif # if defined SED_TOY_FLOC_0D || defined SED_TOY_FLOC_1D # define FLOC_TURB_DISS # undef FLOC_BBL_DISS # define SED_FLOCS # undef SED_DEFLOC # endif # endif # undef MORPHODYN # define NO_FRCFILE # undef RVTK_DEBUG #elif defined TIDAL_FLAT /* ! TIDAL_FLAT Example ! ========== ======= */ # undef OPENMP # define MPI # undef NONLIN_EOS # define NEW_S_COORD # define SALINITY # define UV_ADV # define TS_HADV_WENO5 # define TS_VADV_WENO5 # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define UV_COR # define SOLVE3D # define UV_VIS2 # define GLS_MIXING # define ANA_INITIAL # define WET_DRY # define TS_DIF2 # define SPONGE # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define OBC_WEST # define FRC_BRY # ifdef FRC_BRY # define ANA_BRY # define Z_FRC_BRY # define OBC_M2CHARACT # define OBC_REDUCED_PHYSICS # define M2_FRC_BRY # undef M3_FRC_BRY # define T_FRC_BRY # endif # undef SEDIMENT # define MUSTANG # ifdef SEDIMENT # define SUSPLOAD # undef BEDLOAD # endif # ifdef MUSTANG # define key_sand2D # undef key_MUSTANG_V2 # endif # define NO_FRCFILE # undef ZETA_DRY_IO # undef RVTK_DEBUG #elif defined ESTUARY /* ! ESTUARY Example ! ======= ======= */ # undef OPENMP # define MPI # undef NONLIN_EOS # define NEW_S_COORD # define SALINITY # define UV_ADV # define TS_HADV_WENO5 # define TS_VADV_WENO5 # define UV_HADV_WENO5 # define UV_VADV_WENO5 # define UV_COR # define SOLVE3D # define UV_VIS2 # define GLS_MIXING # define ANA_INITIAL # define WET_DRY # define TS_DIF2 # define SPONGE # define ANA_GRID # define ANA_INITIAL # define ANA_SMFLUX # define ANA_SRFLUX # define ANA_STFLUX # define ANA_SSFLUX # define ANA_BTFLUX # define ANA_BSFLUX # define OBC_WEST # define FRC_BRY # ifdef FRC_BRY # define ANA_BRY # define Z_FRC_BRY # define OBC_M2CHARACT # define OBC_REDUCED_PHYSICS # define M2_FRC_BRY # undef M3_FRC_BRY # define T_FRC_BRY # endif # undef SEDIMENT # define MUSTANG # ifdef SEDIMENT # define SUSPLOAD # undef BEDLOAD # endif # ifdef MUSTANG # define key_sand2D # undef key_MUSTANG_V2 # endif # undef PSOURCE # define ANA_PSOURCE # define MASKING # define NO_FRCFILE # undef ZETA_DRY_IO # undef RVTK_DEBUG #endif /* END OF CONFIGURATION CHOICE */ #include "cppdefs_dev.h" #include "set_global_definitions.h" ! $Id: set_global_definitions.h 1616 2014-12-18 14:39:51Z rblod $ ! !====================================================================== ! CROCO is a branch of ROMS developped at IRD and INRIA, in France ! The two other branches from UCLA (Shchepetkin et al) ! and Rutgers University (Arango et al) are under MIT/X style license. ! CROCO specific routines (nesting) are under CeCILL-C license. ! ! CROCO website : http://www.croco-ocean.org !====================================================================== ! /* This is "cppdefs_dev.h": It contains a set of predetermined macro definitions which are inserted into the individual files by C-preprocessor. General user is discouraged from attempts to modify anything below this line. But developers are encouraged to do so if needed */ /* ====================================================================== Set debugging options ====================================================================== */ /* Switch to mixed [tiled + single-block] execution. Activation of this switch enables special logical branch in "compute_tile_bounds" which recognizes tile=NSUB_X*NSUB_E as covering the whole model grid, and it increases sizes of arrays declared in "private_scratch" to accomodate enough workspace accordingly. This switch is used for debugging purposes only and normally should be undefined. */ #undef ALLOW_SINGLE_BLOCK_MODE #ifdef ALLOW_SINGLE_BLOCK_MODE # define SINGLE NSUB_X*NSUB_E,NSUB_X*NSUB_E !!! #endif /* Activate the RVTK_DEBUG procedure that will test the reproducibility of parallel computation by comparing binary files produced by serial and parallel runs. For the umpteenth time, RVTK_DEBUG itself should be defined from cppdefs.h, so not undefined here !!!!! */ #if defined RVTK_DEBUG && !defined MPI && !defined OPENMP && !defined RVTK_DEBUG_READ # define RVTK_DEBUG_WRITE #endif /* Take care need to use a debug.F specific */ #if defined RVTK_DEBUG_PERFRST && !defined RVTK_DEBUG_READ # define RVTK_DEBUG_WRITE #endif /* Constant tracer option (for debugging) */ #undef CONST_TRACERS /* ====================================================================== Set OA COUPLING options: Define MPI Change the generic name of MPI communicator MPI_COMM_WORLD to OASIS-MCT local communicator ====================================================================== */ #ifdef OA_COUPLING # undef OPENMP # define MPI # define MPI_COMM_WORLD ocean_grid_comm # define READ_PATM # define OBC_PATM # undef OA_GRID_UV # undef BULK_FLUX # undef QCORRECTION # undef SFLX_CORR # undef ANA_DIURNAL_SW # undef SFLUX_CFB #endif /* ====================================================================== Set OW COUPLING options: Define MPI Change the generic name of MPI communicator MPI_COMM_WORLD to OASIS-MCT local communicator ====================================================================== */ #ifdef OW_COUPLING # undef OPENMP # define MPI # define MPI_COMM_WORLD ocean_grid_comm # undef WKB_WWAVE # undef WAVE_OFFLINE # ifdef MRL_WCI # undef WAVE_ROLLER # define WAVE_STREAMING # define WAVE_RAMP # endif # ifdef OA_COUPLING # undef WAVE_SMFLUX # else # define WAVE_SMFLUX # endif #endif /* ====================================================================== Set XIOS options: Activate MPI Change the generic name of MPI communicator MPI_COMM_WORLD to XIOS local communicator ====================================================================== */ #ifdef XIOS # define MPI # define MPI_COMM_WORLD ocean_grid_comm #endif /* ====================================================================== Set default time-averaging filter for barotropic fields. ====================================================================== */ #ifdef M2FILTER_NONE /* Check if options are defined in cppdefs.h */ #elif defined M2FILTER_POWER #elif defined M2FILTER_COSINE #elif defined M2FILTER_FLAT #else # undef M2FILTER_NONE # define M2FILTER_POWER # undef M2FILTER_COSINE # undef M2FILTER_FLAT #endif /* ====================================================================== Set default flags for computing temperature ====================================================================== */ #if !defined NO_TRACER # define TRACERS /* Compute at least one tracer */ #endif #if !defined NO_TEMPERATURE /* Compute temperature */ # define TEMPERATURE #endif #if defined SALINITY || defined TEMPERATURE || \ defined PASSIVE_TRACER || defined SUBSTANCE # define TRACERS #endif /* ====================================================================== Activate NBQ choices for non-hydrostatic simulations ====================================================================== */ #ifdef NBQ /* General options */ # define M3FAST # define SOLVE3D # define M2FILTER_NONE /* no filter with NBQ */ # undef M2FILTER_POWER # define NBQ_IMP # undef NBQ_THETAIMP # undef NBQ_FREESLIP # undef NBQ_HZ_PROGNOSTIC # undef M3FAST_REINIT # ifdef TANK # define NOT_NBQ_AM4 # endif # undef TRACETXT # undef DIAG_CFL # define HZR Hzr /* NBQ Precise or Performance options (default: NBQ_PERF) */ # ifndef NBQ_PRECISE # define NBQ_PERF # endif # ifdef NBQ_PERF # undef NBQ_MASS # define NBQ_GRID_SLOW # define NBQ_HZCORRECT # else # define NBQ_MASS # undef NBQ_GRID_SLOW # define NBQ_HZCORRECT # endif /* Options for wz HADV numerical schemes (default C4) */ # ifdef W_HADV_SPLINES /* Check if options are defined in cppdefs.h */ # elif defined W_HADV_TVD # elif defined W_HADV_WENO5 # elif defined W_HADV_C4 # elif defined W_HADV_C2 # else # undef W_HADV_SPLINES /* Splines vertical advection */ # undef W_HADV_TVD /* TVD vertical advection */ # define W_HADV_WENO5 /* 5th-order WENOZ vertical advection */ # undef W_HADV_C4 /* 2nd-order centered vertical advection */ # undef W_HADV_C2 /* 2nd-order centered vertical advection */ # endif /* Options for wz VADV numerical schemes (default SPLINES) */ # ifdef W_VADV_SPLINES /* Check if options are defined in cppdefs.h */ # elif defined W_VADV_TVD # elif defined W_VADV_WENO5 # elif defined W_VADV_C2 # else # undef W_VADV_SPLINES /* Splines vertical advection */ # undef W_VADV_TVD /* TVD vertical advection */ # define W_VADV_WENO5 /* !!! 5th-order WENOZ vertical advection */ # undef W_VADV_C2 /* 2nd-order centered vertical advection */ # endif /* NBQ Open boundary conditions */ # if defined OBC_WEST || defined OBC_EAST || \ defined OBC_NORTH || defined OBC_SOUTH # define OBC_NBQ # endif # ifdef OBC_NBQ /* OBC options and nudging: default zero grad */ # define OBC_NBQORLANSKI /* NBQ Radiative conditions */ # undef OBC_NBQSPECIFIED /* NBQ Specified conditions */ # define OBC_WORLANSKI /* W Radiative conditions */ # undef OBC_WSPECIFIED /* W Specified conditions */ # define NBQ_NUDGING /* interior/bdy forcing/nudging */ # define NBQCLIMATOLOGY /* interior/bdy forcing/nudging */ # define NBQ_FRC_BRY /* bdy forcing/nudging */ # define W_FRC_BRY /* wz bdy forcing/nudging */ # endif #else /* Hydrostatic mode */ # define HZR Hz #endif /* NBQ */ /* ====================================================================== Activate FAST timestep 3D dynamics for hydrostatic simulations -- Fast friction BSTRESS_FAST -- ====================================================================== */ #ifdef BSTRESS_FAST # define M3FAST #endif #if !defined NBQ && defined M3FAST /* General options */ # define SOLVE3D # define M2FILTER_NONE /* no filter with M3FAST */ # undef M2FILTER_POWER # define BSTRESS_FAST /* use options from NBQ Open boundary conditions */ # if defined OBC_WEST || defined OBC_EAST || \ defined OBC_NORTH || defined OBC_SOUTH # define OBC_NBQ # endif # ifdef OBC_NBQ /* OBC options and nudging: default zero grad */ # undef OBC_NBQORLANSKI /* Radiative conditions */ # define OBC_NBQSPECIFIED /* Specified conditions (forcing) */ # undef NBQ_NUDGING /* interior/bdy forcing/nudging */ # undef NBQCLIMATOLOGY /* interior/bdy forcing/nudging */ # define NBQ_FRC_BRY /* bdy forcing/nudging */ # undef W_FRC_BRY /* wz bdy forcing/nudging */ # endif #endif /* M3FAST */ /* ====================================================================== Activate barotropic pressure gradient response to the perturbation of free-surface in the presence of stratification ====================================================================== */ #if defined SOLVE3D # define VAR_RHO_2D # if !defined NONLIN_EOS && !defined INNERSHELF \ && !defined MOVING_BATHY # define RESET_RHO0 # endif #endif /* ====================================================================== Activate choice of Pressure Gradient formulation (default is the Density Jacobian formulation with Cubic Polynomial fit from Shchepetkin et al. (2003). But: 1- This code can be run cheaper for flat bottom cases if terms involving z-grid x/y gradients are removed (PGF_FLAT_BOTTOM) 2- a cheaper standard Jacobian formulation can also be used (PGF_BASIC_JACOBIAN) for smooth topography. 3- The Weighted Jacobian formulation of Song & Haidvogel (1994) can be used in this case by defining WJ_GRADP key, which then serves as the weight value. ====================================================================== */ #if defined BASIN || defined EQUATOR || defined GRAV_ADJ \ || defined SOLITON || defined JET \ || defined ACOUSTIC || defined VORTEX \ || defined THACKER || defined TANK \ || defined KH_INST || defined TS_HADV_TEST # define PGF_FLAT_BOTTOM #elif defined RIP # define PGF_BASIC_JACOBIAN # define WJ_GRADP 0.125 #elif defined PGF_BASIC_JACOBIAN # define WJ_GRADP 0.125 #endif /* ====================================================================== Activate EOS splitting of seawater compressibility effect in case of non-linear formulation, as part of the pressure gradient algorithm with polynomial fit (Shchepetkin & McWilliams 2003) ====================================================================== */ #ifdef NONLIN_EOS # define SPLIT_EOS #endif /* ====================================================================== Select MOMENTUM LATERAL advection-diffusion scheme: (The default is third-order upstream biased) ====================================================================== */ #ifdef UV_HADV_UP3 /* Check if options are defined in cppdefs.h */ #elif defined UV_HADV_C4 #elif defined UV_HADV_C2 #elif defined UV_HADV_UP5 #elif defined UV_HADV_C6 #elif defined UV_HADV_WENO5 #elif defined UV_HADV_TVD #else # define UV_HADV_UP3 /* 3rd-order upstream lateral advection */ # undef UV_HADV_C4 /* 4th-order centered lateral advection */ # undef UV_HADV_C2 /* 2nd-order centered lateral advection */ # undef UV_HADV_UP5 /* 5th-order upstream lateral advection */ # undef UV_HADV_C6 /* 6th-order centered lateral advection */ # undef UV_HADV_WENO5 /* 5th-order WENOZ lateral advection */ # undef UV_HADV_TVD /* TVD lateral advection */ #endif /* UV DIFFUSION: set default orientation */ #ifdef UV_MIX_S /* Check if options are defined */ #elif defined UV_MIX_GEO #else # define UV_MIX_S /* Default: diffusion along sigma surfaces */ #endif /* Set keys related to Smagorinsky viscosity or 3D GLS */ #ifdef UV_VIS_SMAGO_3D # define UV_VIS2 # define TS_DIF2 # define UV_VIS_SMAGO # define TS_DIF_SMAGO #endif #ifdef UV_VIS_SMAGO # define VIS_COEF_3D #endif #ifdef GLS_MIXING_3D # define GLS_MIXING # define UV_VIS2 # define VIS_COEF_3D # undef TS_DIF2 # undef DIF_COEF_3D #endif /* Set UP3 scheme in barotropic equations for 2DH applications */ #if !defined SOLVE3D && !defined SOLITON # define M2_HADV_UP3 #endif /* If interior MOMENTUM LATERAL diffusion is defined, apply it over an anomaly with respect to a reference frame (climatology) */ #ifdef M3CLIMATOLOGY # undef CLIMAT_UV_MIXH #endif /* ====================================================================== Select MOMENTUM VERTICAL advection scheme: ====================================================================== */ #ifdef UV_VADV_SPLINES /* Check if options are defined in cppdefs.h */ #elif defined UV_VADV_WENO5 #elif defined UV_VADV_C2 #elif defined UV_VADV_TVD #else # define UV_VADV_SPLINES /* Splines vertical advection */ # undef UV_VADV_WENO5 /* 5th-order WENOZ vertical advection */ # undef UV_VADV_C2 /* 2nd-order centered vertical advection */ # undef UV_VADV_TVD /* TVD vertical advection */ #endif #ifdef VADV_ADAPT_IMP /* Semi-implicit vertical advection */ # undef VADV_ADAPT_PRED /* apply to both pred/corr steps (choice) */ # define UV_VADV_SPLINES /* Impose splines advection (no choice) */ # undef UV_VADV_C2 #endif /* ====================================================================== Select TRACER LATERAL advection-diffusion scheme (The default is third-order upstream biased) ====================================================================== */ #ifdef TS_HADV_UP3 /* Check if options are defined in cppdefs.h */ #elif defined TS_HADV_C4 #elif defined TS_HADV_UP5 #elif defined TS_HADV_WENO5 #elif defined TS_HADV_C6 #elif defined TS_HADV_RSUP3 #elif defined TS_HADV_RSUP5 #else # define TS_HADV_UP3 /* 3rd-order upstream lateral advection */ # undef TS_HADV_C4 /* 4th-order centered lateral advection */ # undef TS_HADV_UP5 /* 5th-order upstream lateral advection */ # undef TS_HADV_WENO5 /* 5th-order WENOZ lateral advection */ # undef TS_HADV_C6 /* 6th-order centered lateral advection */ # undef TS_HADV_RSUP3 /* Rotated-Split UP3 lateral advection */ # undef TS_HADV_RSUP5 /* Pseudo R-Split UP5 lateral advection */ #endif /* Options for split-rotated advection-diffusion schemes */ #ifdef TS_HADV_RSUP3 /* Rotated-Split 3rd-order scheme is: */ # define TS_HADV_C4 /* 4th-order centered advection */ # undef TS_DIF2 /* + */ # define TS_DIF4 /* Hyperdiffusion with */ # undef TS_MIX_GEO /* Geopotential rotation */ # define TS_MIX_ISO /* or Isopycnal rotation */ #endif #ifdef TS_HADV_RSUP5 /* Pseudo RS 5th-order scheme is: */ # define TS_HADV_C6 /* 6th-order centered advection */ # undef TS_DIF2 /* + */ # define TS_DIF4 /* Hyperdiffusion with */ # define TS_MIX_GEO /* Geopotential rotation */ # undef TS_MIX_ISO /* or Isopycnal rotation */ #endif #if defined TS_HADV_C4 && !defined TS_HADV_RSUP3 /* 4th-order centered advection with: */ # define TS_DIF2 /* + Laplacian Diffusion */ # undef TS_DIF4 /* */ # define TS_DIF_SMAGO /* + Smagorinsky diffusivity */ # define TS_MIX_ISO /* + Isopycnal rotation */ #endif /* TS DIFFUSION: set default orientation */ #ifdef TS_MIX_S /* Check if options are defined */ #elif defined TS_MIX_GEO #elif defined TS_MIX_ISO #else # define TS_MIX_S /* Set iso-sigma diffusion as default */ #endif /* Apply implicit treatment and filters */ #if defined TS_MIX_ISO || (defined TS_DIF4 && defined TS_MIX_GEO) # define TS_MIX_IMP /* Implicit treatment of vertical fluxes */ #endif #if defined TS_MIX_ISO && defined SALINITY # define TS_MIX_ISO_FILT /* neutral slope filtering */ #endif /* Apply interior diffusion (if defined) over tracer anomalies with respect to a reference frame (climatology) */ # ifdef TCLIMATOLOGY # undef CLIMAT_TS_MIXH # undef CLIMAT_TS_MIXH_FINE # endif /* Use 3D diffusivity arrays if needed */ #if defined TS_HADV_RSUP3 \ || defined TS_HADV_RSUP5 || defined TS_DIF_SMAGO # define DIF_COEF_3D #endif /* If BIO_HADV_WENO5 is chosen, the advection scheme for passive tracers is independent from that selected for the two active tracers (TS_HADV) */ #ifdef BIO_HADV_WENO5 # if defined TEMPERATURE && defined SALINITY # define NTRA_T3DMIX 2 /* TS_HADV applied over the 2 active tracers */ # elif defined TEMPERATURE || defined SALINITY # define NTRA_T3DMIX 1 /* TS_HADV applied over the 2 active tracers */ # else # define NTRA_T3DMIX 0 /* TS_HADV applied over the 2 active tracers */ # endif #else # define NTRA_T3DMIX NT /* TS_HADV applied over all NT tracers */ #endif /* ====================================================================== Select model dynamics for TRACER vertical advection (The default is 4th-order centered) ====================================================================== */ #ifdef TS_VADV_SPLINES /* Check if options are defined in cppdefs.h */ #elif defined TS_VADV_AKIMA #elif defined TS_VADV_WENO5 #elif defined TS_VADV_C2 #else # undef TS_VADV_SPLINES /* Splines vertical advection */ # define TS_VADV_AKIMA /* 4th-order Akima vertical advection */ # undef TS_VADV_WENO5 /* 5th-order WENOZ vertical advection */ # undef TS_VADV_C2 /* 2nd-order centered vertical advection */ #endif #undef TS_VADV_FCT /* Flux correction of vertical advection */ #ifdef VADV_ADAPT_IMP # define TS_VADV_SPLINES # undef TS_VADV_AKIMA # undef TS_VADV_WENO5 # undef TS_VADV_C2 #endif /* ====================================================================== SPONGE: define SPONGE_GRID, SPONGE_DIF2 and SPONGE_VIS2 ====================================================================== */ #ifdef SPONGE # ifndef INNERSHELF # define SPONGE_GRID # endif # define SPONGE_DIF2 # define SPONGE_VIS2 # if defined SEDIMENT # define SPONGE_SED # endif #endif /* ====================================================================== GLS_MIXING ====================================================================== */ #ifdef GLS_MIXING # if defined GLS_KOMEGA # elif defined GLS_KEPSILON # elif defined GLS_GEN # else # define GLS_KEPSILON # endif # if defined CANUTO_A # elif defined GibLau_78 # elif defined MelYam_82 # elif defined KanCla_94 # elif defined Luyten_96 # elif defined CANUTO_B # elif defined Cheng_02 # else # define CANUTO_A # endif #endif /* ====================================================================== TIDES: select dependable keys if not done yet ====================================================================== */ #ifdef TIDES # ifdef SSH_TIDES # ifdef ZCLIMATOLOGY # elif defined Z_FRC_BRY # else # define ZCLIMATOLOGY # define ANA_SSH # endif # endif # ifdef UV_TIDES # ifdef M2CLIMATOLOGY # elif defined M2_FRC_BRY # else # define M2CLIMATOLOGY # define ANA_M2CLIMA # endif # endif #endif #ifdef TIDES_MAS # define MASKING #endif /* ====================================================================== WAVE_MAKER for wave-resolving simulations ====================================================================== */ #ifdef WAVE_MAKER # if defined WAVE_MAKER_JONSWAP || defined WAVE_MAKER_GAUSSIAN # define WAVE_MAKER_SPECTRUM # endif # ifdef WAVE_MAKER_SPECTRUM # ifdef WAVE_MAKER_JONSWAP # elif defined WAVE_MAKER_GAUSSIAN # else # define WAVE_MAKER_JONSWAP # endif # endif # ifndef WAVE_MAKER_SPECTRUM # define STOKES_WAVES # endif #endif /* ====================================================================== PSOURCE / PSOURCE_NCFILE option ====================================================================== */ #if defined PSOURCE || defined PSOURCE_MASS # define ANA_PSOURCE /* ON: set vertical profil for qbar */ # undef RIVER_RAMP #endif #ifdef PSOURCE_MASS # undef PSOURCE #endif #if defined PSOURCE_NCFILE # define PSOURCE # define ANA_PSOURCE # undef RIVER_RAMP #endif /* ====================================================================== Bulk flux option ====================================================================== ! ! Bulk algorithms (options) ! by default COARE3p0 parametrization is used with GUSTINESS effects ! ! To change bulk parametrization you have to define one the following cpp keys (not additional) : ! - define BULK_ECUMEV0 : used of ECUME_v0 parametrization ! - define BULK_ECUMEV6 : used of ECUME_v6 parametrization ! - define BULK_WASP : used of WASP parametrization ! Warning : it is possible to add GUSTINESS effects for all parametrizations by defining BULK_GUSTINESS cpp key ! */ #ifdef BULK_FLUX # ifdef ONLINE # define CUBIC_INTERP # ifdef BULK_MONTH_1DIGIT /* Check if options are defined in cppdefs.h */ # else # undef BULK_MONTH_1DIGIT # endif # endif # ifdef BULK_ECUMEV0 # define BULK_GUSTINESS # elif defined BULK_ECUMEV6 # define BULK_GUSTINESS # elif defined BULK_WASP # define BULK_GUSTINESS # endif #endif /* ====================================================================== Current feedback option ====================================================================== */ #ifdef SFLUX_CFB # ifdef BULK_FLUX # define CFB_STRESS # define CFB_WIND_TRA # else # undef CFB_STRESS # undef CFB_WIND_TRA # endif #endif /* ====================================================================== Wave Current Interaction ====================================================================== */ #if defined MRL_WCI || defined WKB_WWAVE /* Wave breaking dissipation (both WKB and WCI) */ # undef WAVE_SFC_BREAK # ifdef WAVE_BREAK_CT93 # elif defined WAVE_BREAK_TG86 # elif defined WAVE_BREAK_TG86A # elif defined WAVE_BREAK_R93 # elif defined WAVE_BREAK_BJ78 # else # define WAVE_BREAK_CT93 /* defaults */ # endif #endif /* WKB specific options */ #ifdef WKB_WWAVE # ifdef MRL_CEW # undef WKB_KZ_FILTER # undef WKB_TIME_FILTER # endif # define WKB_ADD_DIFF # define WKB_ADD_DIFFRACTION # undef WKB_NUDGING # ifndef WAVE_OFFLINE # undef WKB_NUDGING # endif # if defined SHOREFACE || defined SANDBAR \ || (defined RIP && !defined BISCA) # define ANA_BRY_WKB # endif #endif #ifdef MRL_WCI # define STOKES_DRIFT /* Stokes drift */ /* Default WCI is with input file data (WAVE_OFFLINE) */ # if !defined WKB_WWAVE && !defined ANA_WWAVE && !defined OW_COUPLING # define WAVE_OFFLINE # undef WAVE_ROLLER # endif #endif # if defined WKB_WWAVE || defined OW_COUPLING \ || (defined WAVE_OFFLINE && defined MRL_WCI) # define WAVE_IO # endif /* ====================================================================== KPP options IF-less KPP --> KPP2005 ====================================================================== */ #if defined LMD_SKPP # define LMD_SKPP2005 #endif #ifdef LMD_BKPP # undef LMD_BKPP2005 /*<- unresolved problems with bkpp2005 at depth default: lmd_bkpp1994 */ #endif /* ====================================================================== Biogeochemical models ====================================================================== */ #ifdef BIOLOGY # ifdef PISCES # undef DIURNAL_INPUT_SFLX /* Under Development */ # ifdef DIAGNOSTICS_BIO # define key_trc_diaadd # endif # endif # ifdef BIO_BioEBUS # undef VAR_CHL_C /* Under Development */ # undef CARBON /* Under Development */ # undef HYDROGEN_SULFIDE /* Under Development */ # endif #endif /* ====================================================================== Bottom forcing: By default: define ANA_BTFLUX : set to zero in analytical.F define ANA_BSFLUX - define BHFLUX : bottom heat flux, Btflx(i,j,itemp), is read into the netcdf file croco_btf.nc - define BWFLUX : bottom freshwater flux, Btflx(i,j,isalt), is read into a netcdf file(croco_btf.nc) ====================================================================== */ #if !defined ANA_BTFLUX # define BHFLUX #endif #if !defined ANA_BSFLUX && defined SALINITY # define BWFLUX #endif /* ====================================================================== Bottom stress option: LIMIT_BSTRESS: Set limiting factor for bottom stress and avoid numerical instability associated with reversing bottom flow NOW replaced by BSTRESS_FAST option ====================================================================== */ /* #ifndef BSTRESS_FAST # define LIMIT_BSTRESS #endif */ #ifdef INNERSHELF # undef LIMIT_BSTRESS #endif #ifdef BBL # ifdef OW_COUPLING # elif defined WAVE_OFFLINE # elif defined WKB_WWAVE # else # define ANA_WWAVE # endif # ifdef SEDIMENT # undef ANA_BSEDIM # else # define ANA_BSEDIM # endif # ifdef SEDIMENT # define Z0_BL # else # undef Z0_BL # endif # ifdef Z0_BL # define Z0_RIP # endif # undef Z0_BIO #endif /* ====================================================================== Sediment dynamics models (USGS sediment model/Mustang) ====================================================================== */ /* ===== CROCO-USGS SEDIMENT model ===== */ #ifdef SEDIMENT # undef MUSTANG # define ANA_SEDIMENT # undef BED_ARMOR # undef BED_HIDEXP # ifdef BEDLOAD # ifdef BEDLOAD_VANDERA /* == BEDLOAD scheme == */ # elif defined BEDLOAD_MPM /* Meyer-Peter & Muller */ # elif defined BEDLOAD_WULIN /* Wu & Lin */ # elif defined BEDLOAD_MARIEU /* Marieu */ # else /* --> default scheme: */ # if (defined WAVE_OFFLINE || defined WKB_WWAVE ||\ defined ANA_WWAVE || defined OW_COUPLING) # define BEDLOAD_VANDERA /* Van der A */ # else # define BEDLOAD_WULIN /* Wu & Lin */ # endif # endif # ifdef BEDLOAD_UP1 /* == INTERPOLATION == */ # elif defined BEDLOAD_UP5 /* upwind 5th order */ # elif defined BEDLOAD_WENO5 /* WENO 5th order */ # else # define BEDLOAD_UP1 /* default: Up-1st order */ # endif # ifdef SLOPE_LESSER /* == SLOPE scheme == */ # elif defined SLOPE_NEMETH /* Nemeth */ # elif defined SLOPE_KIRWAN /* Kirwan */ # else # define SLOPE_LESSER /* default: Lesser */ # endif # endif /* BEDLOAD */ # ifdef DUNE # ifdef ANA_DUNE # undef SLOPE_LESSER # endif # endif /* DUNE */ #endif /* SEDIMENT */ /* ===== MUSTANG SEDIMENT model ===== */ # ifdef MUSTANG # undef SEDIMENT # define SUBSTANCE # define USE_CALENDAR # define TEMPERATURE # define SALINITY # define key_noTSdiss_insed # define key_nofluxwat_IWS # endif /* MUSTANG */ # ifdef SUBSTANCE # define key_CROCO # endif /* ====================================================================== Hydro-morphodynamic coupling (Moving Bathymetry) -> MORPHODYN: Morphodynamics (bed evolution & feedback on circulation) ... must be defined for coupling with SEDIMENT model -> ANA_MORPHODYN: Analytical function of oscillating bathymetry (ifndef SEDIMENT) MORPHODYN or ANA_MORPHODYN must be defined in cppdefs.h ANA_MORPHODYN triggers MORPHODYN below ANA_MORPHODYN and SEDIMENT are incompatible for now MORPHODYN && NBQ needs NBQ_FREESLIP ====================================================================== */ #ifdef ANA_MORPHODYN # define MORPHODYN #endif #if defined SEDIMENT || defined MUSTANG # undef ANA_MORPHODYN #endif #if defined MORPHODYN && defined MUSTANG # define MORPHODYN_MUSTANG_byHYDRO #endif #if defined MORPHODYN && defined NBQ # define NBQ_FREESLIP #endif /* ====================================================================== OBCs ====================================================================== */ #if defined OBC_EAST || defined OBC_WEST || defined OBC_SOUTH\ || defined OBC_NORTH # ifdef OBC_M2SPECIFIED # elif defined OBC_M2CHARACT # elif defined OBC_M2ORLANSKI # else # undef OBC_M2SPECIFIED # define OBC_M2CHARACT # undef OBC_M2ORLANSKI # endif # ifdef OBC_M2ORLANSKI # define OBC_VOLCONS # endif # ifdef SOLVE3D # ifdef OBC_M3SPECIFIED # elif defined OBC_M3ORLANSKI # else # undef OBC_M3SPECIFIED # define OBC_M3ORLANSKI # endif # ifdef OBC_TSPECIFIED # elif defined OBC_TORLANSKI # else # undef OBC_TSPECIFIED # define OBC_TORLANSKI # endif # endif /* SOLVE3D */ # if defined Z_FRC_BRY || defined M2_FRC_BRY ||\ defined M3_FRC_BRY || defined T_FRC_BRY ||\ defined ANA_BRY # define FRC_BRY # endif #endif /* OBC */ /* ====================================================================== AGRIF nesting ====================================================================== */ #ifdef AGRIF #define key_agrif /* Update schemes */ # undef AGRIF_UPDATE_MIX_LOW # define AGRIF_UPDATE_MIX # undef AGRIF_UPDATE_DECAL /* Conservation options */ # define AGRIF_CONSERV_VOL # undef AGRIF_CONSERV_TRA /* Sponge layer */ # define SPONGE # define SPONGE_DIF2 # define SPONGE_VIS2 /* Boundary conditions */ # define AGRIF_OBC_EAST # define AGRIF_OBC_WEST # define AGRIF_OBC_NORTH # define AGRIF_OBC_SOUTH # define AGRIF_FLUX_BC # define AGRIF_OBC_M2SPECIFIED # ifdef AGRIF_2WAY # define AGRIF_OBC_M3SPECIFIED # define AGRIF_OBC_TSPECIFIED # else # define AGRIF_OBC_M3ORLANSKI # define AGRIF_OBC_TORLANSKI # endif # ifdef NBQ # define AGRIF_OBC_WSPECIFIED # define AGRIF_OBC_NBQSPECIFIED # endif #endif /* AGRIF */ #if defined AGRIF && defined EXACT_RESTART #error "AGRIF with EXACT_RESTART is not yet implemented" #endif #if defined AGRIF && defined XIOS && \ ( defined OA_COUPLING || defined OW_COUPLING ) #error "AGRIF + XIOS + OASIS coupling is not yet implemented" #endif #if defined AGRIF && defined USE_CALENDAR #error "AGRIF + USE_CALENDAR is not yet implemented" #endif /* ====================================================================== Standard I/O ====================================================================== Set land mask value to _FillValue */ #ifndef FILLVAL # undef FILLVAL #endif /* Write start_date information in netCDF output (in roms.in, add the keyword start_date: For example, if the simulation starts 1 January of 2000, at 00:00:00 start_date: 01-JAN-2000 00:00:00) */ /* Define the NetCDF creation mode flag: nf_clobber (classic), nf_64bit_offset (large files) or nf_netcdf4 */ #ifdef NC4PAR # define NF_CLOBBER nf_mpiio #else # define NF_CLOBBER nf_64bit_offset #endif /* ====================================================================== Consistency for 2D configurations ====================================================================== */ #ifndef SOLVE3D # undef AVERAGES_K # undef TRACERS # undef TEMPERATURE # undef SALINITY # undef NONLIN_EOS # undef SPLIT_EOS # undef QCORRECTION # undef SFLX_CORR # undef ANA_DIURNAL_SW # undef ANA_STFLUX # undef ANA_SSFLUX # undef ANA_SRFLUX # undef BULK_FLUX # undef SFLUX_CFB # undef TS_DIF2 # undef TS_DIF4 # undef CLIMAT_TS_MIXH # undef SPONGE_DIF2 # undef TS_HADV_RSUP3 # undef TS_MIX_GEO # undef TS_MIX_ISO # undef TS_DIF_SMAGO # undef UV_MIX_GEO # undef VIS_COEF_3D # undef DIF_COEF_3D # undef M3NUDGING # undef TNUDGING # undef ROBUST_DIAG # undef M3CLIMATOLOGY # undef TCLIMATOLOGY # undef M3_FRC_BRY # undef T_FRC_BRY # undef BODYFORCE # undef BVF_MIXING # undef LMD_MIXING # undef LMD_BKPP # undef LMD_SKPP # undef LMD_RIMIX # undef LMD_CONVEC # undef OBC_M3ORLANSKI # undef OBC_M3SPECIFIED # undef OBC_TORLANSKI # undef OBC_TSPECIFIED # undef AGRIF_OBC_M3ORLANSKI # undef AGRIF_OBC_M3SPECIFIED # undef AGRIF_OBC_TORLANSKI # undef AGRIF_OBC_TSPECIFIED # undef SEDIMENT # undef BIOLOGY #endif