Warning, /doc/phys_pkgs/generic_advdiff.rst is written in an unsupported language. File is not indexed.
view on githubraw file Latest commit ba0b0470 on 2021-04-08 01:06:32 UTC
8679f9097b Jeff*0001 .. _sec_phys_pkg_gad:
0002
0003 Generic Advection/Diffusion
0004 ---------------------------
0005
0006
dcaaa42497 Jeff*0007 The generic_advdiff package contains high-level subroutines to solve
8679f9097b Jeff*0008 the advection-diffusion equation of any tracer, either active (potential
bf89a37abc Phob*0009 temperature, salinity or water vapor) or passive (see :ref:`pkg/ptracer <sub_phys_pkg_ptracers>`).
0010 (see also :numref:`tracer_eqns` and
0011 :numref:`advection_schemes`).
8679f9097b Jeff*0012
0013 Introduction
0014 ++++++++++++
0015
dcaaa42497 Jeff*0016 Package “generic_advdiff” provides a common set of routines for
8679f9097b Jeff*0017 calculating advective/diffusive fluxes for tracers (cell centered
0018 quantities on a C-grid).
0019
0020 Many different advection schemes are available: the standard centered
0021 second order, centered fourth order and upwind biased third order
0022 schemes are known as linear methods and require some stable
0023 time-stepping method such as Adams-Bashforth. Alternatives such as
0024 flux-limited schemes are stable in the forward sense and are best
bf89a37abc Phob*0025 combined with the multi-dimensional method provided in :filelink:`gad\_advection <pkg/generic_advdiff/gad_advection.F>`.
8679f9097b Jeff*0026
0027 Key subroutines, parameters and files
0028 +++++++++++++++++++++++++++++++++++++
0029
0030 There are two high-level routines:
0031
bf89a37abc Phob*0032 - :filelink:`GAD\_CALC\_RHS <pkg/generic_advdiff/gad_calc_rhs.F>` calculates all fluxes at time level “n” and is used
8679f9097b Jeff*0033 for the standard linear schemes. This must be used in conjuction with
0034 Adams–Bashforth time stepping. Diffusive and parameterized fluxes are
0035 always calculated here.
0036
bf89a37abc Phob*0037 - :filelink:`GAD\_ADVECTION <pkg/generic_advdiff/gad_advection.F>` calculates just the advective fluxes using the
8679f9097b Jeff*0038 non-linear schemes and can not be used in conjuction with
0039 Adams–Bashforth time stepping.
0040
dcaaa42497 Jeff*0041
0042 .. tabularcolumns:: |\Y{.4}|L|L|
0043
0044
0045 +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+
0046 | CPP Flag Name | Default | Description |
0047 +===============================================+=========+======================================================================================================================+
0048 | :varlink:`COSINEMETH_III` | #define | sets the implementation form of :math:`\cos{\varphi}` scaling of bi-harmonic terms for tracer diffusivity |
0049 | | | (note, in :filelink:`pkg/generic_advdiff` routines the definition set here overrides whether this is defined in |
0050 | | | :filelink:`model/inc/CPP_OPTIONS.h`, where the setting affects viscous term calculations) |
0051 +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+
0052 | :varlink:`ISOTROPIC_COS_SCALING` | #undef | selects isotropic scaling of harmonic and bi-harmonic terms when using the :math:`\cos{\varphi}` scaling |
0053 | | | (note, in :filelink:`pkg/generic_advdiff` routines the definition set here overrides whether this is defined in |
0054 | | | :filelink:`model/inc/CPP_OPTIONS.h`, where the setting affects viscous term calculations) |
0055 +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+
0056 | :varlink:`DISABLE_MULTIDIM_ADVECTION` | #undef | disables compilation of multi-dim. advection code |
0057 +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+
0058 | :varlink:`GAD_MULTIDIM_COMPRESSIBLE` | #undef | use compressible flow method for multi-dim advection instead of older, less accurate method; note option has |
0059 | | | no effect on SOM advection which always uses compressible flow method |
0060 +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+
0061 | :varlink:`GAD_ALLOW_TS_SOM_ADV` | #undef | enable the use of 2nd-order moment advection scheme (Prather 1986 :cite:`prather:86`) |
0062 | | | for temp. and salinity |
0063 +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+
0064 | :varlink:`GAD_SMOLARKIEWICZ_HACK` | #undef | enables hack to get rid of negatives caused by Redi, see Smolarkiewicz (1989) :cite:`smolark:89` |
0065 | | | (for ptracers, except temp and salinity) |
0066 +-----------------------------------------------+---------+----------------------------------------------------------------------------------------------------------------------+
0067
0068
0069
9ce7d74115 Jeff*0070 .. _gad_diagnostics:
0071
8679f9097b Jeff*0072 GAD Diagnostics
0073 +++++++++++++++
0074
0075 ::
0076
0077
0078 ------------------------------------------------------------------------
0079 <-Name->|Levs|<-parsing code->|<-- Units -->|<- Tile (max=80c)
0080 ------------------------------------------------------------------------
0081 ADVr_TH | 15 |WM LR |degC.m^3/s |Vertical Advective Flux of Pot.Temperature
0082 ADVx_TH | 15 |UU 087MR |degC.m^3/s |Zonal Advective Flux of Pot.Temperature
0083 ADVy_TH | 15 |VV 086MR |degC.m^3/s |Meridional Advective Flux of Pot.Temperature
0084 DFrE_TH | 15 |WM LR |degC.m^3/s |Vertical Diffusive Flux of Pot.Temperature (Explicit part)
0085 DIFx_TH | 15 |UU 090MR |degC.m^3/s |Zonal Diffusive Flux of Pot.Temperature
0086 DIFy_TH | 15 |VV 089MR |degC.m^3/s |Meridional Diffusive Flux of Pot.Temperature
0087 DFrI_TH | 15 |WM LR |degC.m^3/s |Vertical Diffusive Flux of Pot.Temperature (Implicit part)
ba0b047096 Mart*0088 ADVr_SLT| 15 |WM LR |(g/kg).m^3/s |Vertical Advective Flux of Salinity
0089 ADVx_SLT| 15 |UU 094MR |(g/kg).m^3/s |Zonal Advective Flux of Salinity
0090 ADVy_SLT| 15 |VV 093MR |(g/kg).m^3/s |Meridional Advective Flux of Salinity
0091 DFrE_SLT| 15 |WM LR |(g/kg).m^3/s |Vertical Diffusive Flux of Salinity (Explicit part)
0092 DIFx_SLT| 15 |UU 097MR |(g/kg).m^3/s |Zonal Diffusive Flux of Salinity
0093 DIFy_SLT| 15 |VV 096MR |(g/kg).m^3/s |Meridional Diffusive Flux of Salinity
0094 DFrI_SLT| 15 |WM LR |(g/kg).m^3/s |Vertical Diffusive Flux of Salinity (Implicit part)
8679f9097b Jeff*0095
0096 Experiments and tutorials that use GAD
0097 ++++++++++++++++++++++++++++++++++++++
0098
bf89a37abc Phob*0099 - Baroclinic gyre experiment, in :filelink:`tutorial\_baroclinic\_gyre <verification/tutorial_baroclinic_gyre>`
dc6b14c3ce Phob*0100 verification directory.
8679f9097b Jeff*0101
bf89a37abc Phob*0102 - Tracer Sensitivity tutorial, in :filelink:`tutorial\_tracer\_adjsens <verification/tutorial_tracer_adjsens>`
0103 verification directory.
8679f9097b Jeff*0104
0105