/*
** git $Id$
*******************************************************************************
** Copyright (c) 2002-2023 The ROMS/TOMS Group                               **
**   Licensed under a MIT/X style license                                    **
**   See License_ROMS.md                                                     **
*******************************************************************************
**
** Options for Upwelling Test.
**
** Application flag:   UPWELLING
** Input script:       roms_upwelling.in
*/
#undef VAR_RHO_2D
#define UV_ADV             /* turn ON or OFF advection terms */
#define UV_COR             /* turn ON or OFF Coriolis term */
#undef UV_VIS2            /* turn ON or OFF Laplacian horizontal mixing */
#undef  UV_VIS4            /* turn ON or OFF biharmonic horizontal mixing */
#undef  UV_U3ADV_SPLIT     /* use 3rd-order upstream split momentum advection */
#define UV_U3HADVECTION    /* define if 3rd-order upstream horiz. advection */
#undef  UV_SADVECTION      /* turn ON or OFF splines vertical advection */
#undef  UV_C4HADVECTION    /* define if 4th-order centered horizontal advection */
#define UV_QDRAG           /* turn ON or OFF quadratic bottom friction */
#define UV_SMAGORINSKY



#define DJ_GRADPS
#undef  WJ_GRADP           /* Weighted density Jacobian (Song, 1998) */
#define DJ_GRADPS          /* Splines density  Jacobian (Shchepetkin, 2000) */
#undef  PJ_GRADPQ4         /* quartic 4 Pressure Jacobian (Shchepetkin,2000) */
#undef  DIFF_GRID          /* diffusion coefficient scaled by grid size */

#define TS_DIF2            /* turn ON or OFF Laplacian horizontal mixing */
#undef  TS_DIF4            /* turn ON or OFF biharmonic horizontal mixing */
#undef  TS_U3ADV_SPLIT     /* use 3rd-order upstream split tracer advection */
#define TS_U3HADVECTION    /* define if 3rd-order upstream horiz. advection */
#undef TS_A4HADVECTION    /* define if 4th-order Akima horiz. advection */
#define TS_C4VADVECTION    /* define if 4th-order centered horizontal advection */

#undef TS_A4VADVECTION    /* define if 4th-order Akima vertical advection */
#undef  TS_C4VADVECTION    /* define if 4th-order centered vertical advection */
#undef  TS_SVADVECTION     /* define if splines vertical advection */
#undef  TS_SMAGORINSKY     /* define if Smagorinsky-like diffusion */

#undef MIX_S_TS            /* mixing on constant S-surfaces */
#define MIX_GEO_TS         /* mixing on geopotential (constant Z) surfaces */
#define MIX_S_UV           /* mixing along constant S-surfaces */
#undef  MIX_GEO_UV         /* mixing on geopotential (constant Z) surfaces */

#undef  TS_MPDATA          /* define if recursive MPDATA 3D advection */

#define BODYFORCE          /* define if applying stresses as bodyforces */
#undef  SPLINES            /* turn ON or OFF parabolic splines reconstruction */

#undef NESTING
#undef ONE_WAY

/* general */
#define SPHERICAL
#define SALINITY           /* define if using salinity */
#define SOLVE3D            /* define if solving 3D primitive equations */
#define WET_DRY            /* - use to activate wetting and drying */
#undef  SPLINES            /* turn ON or OFF parabolic splines reconstruction */
#define SPLINES_VDIFF
#define SPLINES_VVISC
#define MASKING            /* use if analytical masking is enabled */
#define CURVGRID           /* - use if curvilinear coordinates grid */

#define NONLINEAR
#undef  VISC_GRID          /* viscosity coefficient scaled by grid size */
#define NONLIN_EOS         /* - use if using nonlinear equation of state */
#define NEW_S_COORD        /*Model dynamics */

#define ANA_BTFLUX
#define ANA_BSFLUX
#define ANA_NUDGCOEF
/*
#define ANA_GRID
#define ANA_INITIALR
*/
/*
#define ANA_SMFLUX
#define ANA_STFLUX
#define ANA_SSFLUX
*/


/*#define ANA_WWAVE*/

#define SSH_TIDES
#if defined SSH_TIDES
#define FSOBC_REDUCED       /* FSOBC_REDUCED use if SSH data and reduced physics conditions */
#define ADD_FSOBC    /*将潮汐高程添加到海面高度气候学和开边界条件数据 */
#define UV_TIDES
#define ADD_M2OBC  /* 将潮汐流添加到动量气候学和开边界天剑数据 */
#define RAMP_TIDES 
#endif

#undef  BVF_MIXING         /* define if Brunt_Vaisala frequency mixing */
#undef LMD_MIXING          /* define if Large et al. (1994) interior closure */
#undef  MY25_MIXING        /* define if Mellor/Yamada level-2.5 mixing */
#define  GLS_MIXING        /* Activate Generic Length-Scale mixing */
#if defined GLS_MIXING || defined MY25_MIXING
# define KANTHA_CLAYSON    /* Value for CLS_CMU0 and CLS_C3M vary with choise of stability function */
# define N2S2_HORAVG       /* Activate horizontal smoothing of buoyancy/shear */
# define RI_SPLINES
# define CANUTO_A           
# undef  CANUTO_B
#else
# define ANA_VMIX
#endif

#ifdef LMD_MIXING
# define  LMD_BKPP          /* use if bottom boundary layer KPP mixing */
# define  LMD_CONVEC        /* use to add convective mixing due to shear instability */
# define  LMD_DDMIX         /* use to add double-diffusive mixing */
# define  LMD_NONLOCAL      /* use if nonlocal transport */
# define  LMD_RIMIX         /* use to add diffusivity due to shear instability */
# define  LMD_SHAPIRO       /* use if Shapiro filtering boundary layer depth */
# define  LMD_SKPP          /* use if surface boundary layer KPP mixing */
#endif

/* CLIMATOLOGY */
#define M2CLIMATOLOGY      /* define 2D momentum climatology */
#define M3CLIMATOLOGY      /* define 3D momentum climatology */
#define  TCLIMATOLOGY       /* define tracers climatology */
#define  ZCLIMATOLOGY       /* define SSH */
#define M2CLM_NUDGING
#define M3CLM_NUDGING      /* nudging 3D momentum climatology */
#define  TCLM_NUDGING       /* nudging tracers climatology */
#define   OBC_NUDGING



/* surface forcing */
#ifdef SOLVE3D /* - use if solving 3D primitive equations */
#define CORE_FORCING
#define BULK_FLUXES /* - use if bulk fluxes computation */
#undef CCSM_FLUXES
#if defined BULK_FLUXES || defined CCSM_FLUXES
#define LONGWAVE_OUT /* - use if computing outgoing longwave radiation */
#define DIURNAL_SRFLUX /* - use to impose shortwave radiation local diurnal cycle */
#define SOLAR_SOURCE /* - use if solar radiation source term */
#define EMINUSP /* - use if computing E-P */
#undef ANA_SRFLUX    /*  use if analytical surface shortwave radiation flux */
#undef ALBEDO_CLOUD
#define ALBEDO_CURVE /* for water */
#undef ALBEDO_FILE /* for both */
#undef LONGWAVE /* - use if computing net longwave radiation */
# define COOL_SKIN         /* turn ON or OFF cool skin correction */
# define  SHORTWAVE
#endif
#endif

#define ATM_PRESS          /* use to impose atmospheric pressure onto sea surface */
#define SOLAR_SOURCE       /* define solar radiation source term */
#define SPECIFIC_HUMIDITY  /* if input is specific humidity in kg/kg */


#define STATIONS 


#if defined BIO_FENNEL  || defined ECOSIM      || \
    defined NEMURO      || defined NPZD_FRANKS || \
    defined NPZD_IRON   || defined NPZD_POWELL 
# define ANA_BIOLOGY
# define ANA_SPFLUX
# define ANA_BPFLUX
# define ANA_SRFLUX
# ifdef NPZD_IRON
#  define IRON_LIMIT
#  define IRON_RELAX
# endif
#endif

#if defined NEMURO
# define HOLLING_GRAZING
# undef  IVLEV_EXPLICIT
#endif

#ifdef BIO_FENNEL
# define CARBON
# define OXYGEN
# define DENITRIFICATION
# define BIO_SEDIMENT
# define DIAGNOSTICS_BIO
#endif

#ifdef ECOSIM
# define ANA_CLOUD
# define ANA_HUMIDITY
# define ANA_PAIR
# define ANA_TAIR
# define ANA_WINDS
#endif

/* output stuff */

#define PERFECT_RESTART /* - use to include perfect restart variables */
#ifdef PERFECT_RESTART /* - use to include perfect restart variables */
/*Commented section*/
/*# undef AVERAGES*/ /* - use if writing out time-averaged data */
# undef DIAGNOSTICS_TS /* - use if writing out tracer diagnostics */
# undef DIAGNOSTICS_UV /* - use if writing out momentum diagnostics */
# define OUT_DOUBLE /* - use if writing double precision output fields */ 
#endif

#ifdef PERFECT_RESTART /* - use to include perfect restart variables */
# define RST_SINGLE /* - use if writing single precision restart fields */
#endif
