Back to home page

MITgcm

 
 

    


Warning, /doc/phys_pkgs/kl10.rst is written in an unsupported language. File is not indexed.

view on githubraw file Latest commit 0bad585a on 2022-02-16 18:55:09 UTC
8679f9097b Jeff*0001 .. _sub_phys_pkg_kl10:
                0002 
                0003 KL10: Vertical Mixing Due to Breaking Internal Waves
                0004 ----------------------------------------------------
                0005 
                0006 
                0007 (in directory: *pkg/kl10/*)
                0008 
                0009 Authors: Jody M. Klymak
                0010 
                0011 .. _ssub_phys_pkg_kl10_intro:
                0012 
                0013 Introduction
                0014 ++++++++++++
                0015 
                0016 The :cite:`klymaklegg10` parameterization for breaking internal waves is meant to represent
                0017 mixing in the ocean “interior” due to convective instability. Many
                0018 mixing schemes in the presence of unstable stratification simply turn on
                0019 an arbitrarily large diffusivity and viscosity in the overturning
                0020 region. This assumes the fluid completely mixes, which is probably not a
                0021 terrible assumption, but it also makes estimating the turbulence
                0022 dissipation rate in the overturning region meaningless.
                0023 
                0024 The KL10 scheme overcomes this limitation by estimating the viscosity
                0025 and diffusivity from a combination of the Ozmidov relation and the
                0026 Osborn relation, assuming a turbulent Prandtl number of one. The Ozmidov
                0027 relation says that outer scale of turbulence in an overturn will scale
                0028 with the strength of the turbulence :math:`\epsilon`, and the
                0029 stratification :math:`N`, as
                0030 
                0031 .. math::
                0032    :label: eq-pkg-kl10-Lo
                0033 
                0034    L_O^2 \approx \epsilon N^{-3}.
                0035 
                0036 The Osborn relation relates the strength of the dissipation to the
                0037 vertical diffusivity as
                0038 
                0039 .. math:: K_{v}=\Gamma \epsilon N^{-2},
                0040 
                0041 where :math:`\Gamma\approx 0.2` is the mixing ratio of buoyancy flux to
                0042 thermal dissipation due to the turbulence. Combining the two gives us
                0043 
                0044 .. math:: K_{v} \approx \Gamma L_O^2 N.
                0045 
                0046 The ocean turbulence community often approximates the Ozmidov scale by
                0047 the root-mean-square of the Thorpe displacement, :math:`\delta_z`, in an
                0048 overturn :cite:`thorpe77`. The Thorpe displacement is the distance one would have to
                0049 move a water parcel for the water column to be stable, and is readily
                0050 measured in a measured profile by sorting the profile and tracking how
                0051 far each parcel moves during the sorting procedure. This method gives an
                0052 imperfect estimate of the turbulence, but it has been found to agree on
                0053 average over a large range of overturns :cite:`wesson94,seimgregg94,moum96`.
                0054 
                0055 The algorithm coded here is a slight simplification of the usual Thorpe
                0056 method for estimating turbulence in overturning regions. Usually,
                0057 overturns are identified and :math:`N` is averaged over the overturn.
                0058 Here, instead we estimate
                0059 
                0060 .. math:: K_{v}(z) \approx \Gamma \delta_z^2\, N_s(z).
                0061 
                0062 where :math:`N_s(z)` is the local sorted stratification. This saves
                0063 complexity in the code and adds a slight inaccuracy, but we don’t
                0064 believe is biased.
                0065 
                0066 We assume a turbulent Prandtl number of 1, so :math:`A_v=K_{v}`.
                0067 
                0068 We also calculate and output a turbulent dissipation from this scheme.
                0069 We do not simply evaluate the overturns for :math:`\epsilon` using
8586b5df8e Mart*0070 :eq:`eq-pkg-kl10-Lo`. Instead we compute the vertical shear terms that the
8679f9097b Jeff*0071 viscosity is acting on:
                0072 
0bad585a21 Navi*0073 .. math:: \epsilon_v = A_v \left[ \left(\partial_z u \right)^2 + \left( \frac{\partial u}{\partial z} \right)^2 \right].
8679f9097b Jeff*0074 
                0075 There are straightforward caveats to this approach, covered in :cite:`klymaklegg10`.
                0076 
                0077 -  If your resolution is too low to resolve the breaking internal waves,
                0078    you won’t have any turbulence.
                0079 
                0080 -  If the model resolution is too high, the estimates of
                0081    :math:`\epsilon_v` will start to be exaggerated, particularly if the
                0082    run in non-hydrostatic. That is because there will be significant
                0083    shear at small scales that represents the turbulence being
                0084    parameterized in the scheme. At very high resolutions direct
                0085    numerical simulation or more sophisticated large-eddy schemes should
                0086    be used.
                0087 
                0088 -  We find that grid cells of approximately 10 to 1 aspect ratio are a
                0089    good rule of thumb for achieving good results are usual oceanic
                0090    scales. For a site like the Hawaiian Ridge, and Luzon Strait, this
                0091    means 10-m vertical resolusion and approximately 100-m horizontal.
                0092    The 10-m resolution can be relaxed if the stratification drops, and
                0093    we often WKB-stretch the grid spacing with depth.
                0094 
                0095 -  The dissipation estimate is useful for pinpoiting the location of
                0096    turbulence, but again, is grid size dependent to some extent, and
                0097    should be treated with a grain of salt. It will also not include any
                0098    numerical dissipation such as you may find with higher order
                0099    advection schemes.
                0100 
                0101 
                0102 .. _ssub_phys_pkg_kl10_comp:
                0103 
8586b5df8e Mart*0104 KL10 configuration and compiling
8679f9097b Jeff*0105 ++++++++++++++++++++++++++++++++
                0106 
                0107 As with all MITgcm packages, KL10 can be turned on or off at compile
                0108 time
                0109 
                0110 -  using the ``packages.conf`` file by adding ``kl10`` to it,
                0111 
                0112 -  or using ``genmake2`` adding ``-enable=kl10`` or ``-disable=kl10``
                0113    switches
                0114 
                0115 -  *Required packages and CPP options:*
                0116    No additional packages are required.
                0117 
                0118 (see Section [sec:buildingCode]).
                0119 
                0120 KL10 has no compile-time options (``KL10_OPTIONS.h`` is empty).
                0121 
                0122 
                0123 .. _ssub_phys_pkg_kl10_runtime:
                0124 
                0125 Run-time parameters
                0126 +++++++++++++++++++
                0127 
                0128 Run-time parameters are set in files ``data.pkg`` and ``data.kl10``
                0129 which are read in ``kl10_readparms.F``. Run-time parameters may be
                0130 broken into 3 categories: (i) switching on/off the package at runtime,
                0131 (ii) required MITgcm flags, (iii) package flags and parameters.
                0132 
                0133 Enabling the package
                0134 ####################
                0135 
                0136 The KL10 package is switched on at runtime by setting
                0137 ``useKL10 = .TRUE.`` in ``data.pkg``.
                0138 
                0139 Required MITgcm flags
                0140 #####################
                0141 
                0142 The following flags/parameters of the MITgcm dynamical kernel need to
                0143 be set in conjunction with KL10:
                0144 
                0145 +----------------------------------+--------------------------------------+
                0146 | ``implicitViscosity = .TRUE.``   | enable implicit vertical viscosity   |
                0147 +----------------------------------+--------------------------------------+
                0148 | ``implicitDiffusion = .TRUE.``   | enable implicit vertical diffusion   |
                0149 +----------------------------------+--------------------------------------+
                0150 
                0151 Package flags and parameters
                0152 ############################
                0153 
                0154 :numref:`tab_phys_pkg_kl10_runtime` summarizes the runtime
                0155 flags that are set in ``data.kl10``, and their default values.
                0156 
                0157 
                0158 .. table:: KL10 runtime parameters.
                0159   :name: tab_phys_pkg_kl10_runtime
                0160 
                0161   +----------------------+---------------------------------+----------------------------------------------+
                0162   | **Flag/parameter**   | **default**                     | **Description**                              |
                0163   +======================+=================================+==============================================+
                0164   | KLviscMax            | 300\ m\ :sup:`2` s\ :sup:`--1` | Maximum viscosity the scheme will ever give  |
                0165   |                      |                                 | (useful for stability)                       |
                0166   +----------------------+---------------------------------+----------------------------------------------+
                0167   | KLdumpFreq           | ``dumpFreq``                    | Dump frequency of KL10 field snapshots       |
                0168   +----------------------+---------------------------------+----------------------------------------------+
                0169   | KLtaveFreq           | ``taveFreq``                    | Averaging and dump frequency of KL10 fields  |
                0170   +----------------------+---------------------------------+----------------------------------------------+
                0171   | KLwriteState         | ``.FALSE.``                     | write KL10 state to file                     |
                0172   +----------------------+---------------------------------+----------------------------------------------+
                0173 
                0174 .. _ssub_phys_pkg_kl10_equations:
                0175 
                0176 Equations and key routines
                0177 ++++++++++++++++++++++++++
                0178 
                0179 KL10_CALC:
                0180 ###########
                0181 
                0182 Top-level routine. Calculates viscosity and diffusivity on the grid cell
                0183 centers. Note that the runtime parameters ``viscAz`` and ``diffKzT`` act
                0184 as minimum viscosity and diffusivities. So if there are no overturns (or
                0185 they are weak) then these will be returned.
                0186 
                0187 KL10_CALC_VISC:
                0188 ###############
                0189 
                0190 Calculates viscosity on the W and S grid faces for U and V respectively.
                0191 
                0192 KL10_CALC_DIFF:
                0193 ###############
                0194 
                0195 Calculates the added diffusion from KL10.
                0196 
                0197 .. _ssub_phys_pkg_kl10_diagnostics:
                0198 
                0199 KL10 diagnostics
                0200 ++++++++++++++++
                0201 
                0202 Diagnostics output is available via the diagnostics package (see Section
                0203 [sec:pkg:diagnostics]). Available output fields are summarized here:
                0204 
                0205 ::
                0206 
                0207     ------------------------------------------------------
                0208      <-Name->|Levs|grid|<--  Units   -->|<- Tile (max=80c)
                0209     ------------------------------------------------------
                0210      KLviscAr| Nr |SM  |m^2/s           |KL10 vertical eddy viscosity coefficient
                0211      KLdiffKr| Nr |SM  |m^2/s           |Vertical diffusion coefficient for salt, temperature, & tracers
                0212      KLeps   | Nr |SM  |m^3/s^3         |Turbulence dissipation estimate.
                0213 
                0214 
                0215 .. _ssub_phys_pkg_kl10_examples:
                0216 
                0217 
                0218 References
                0219 ++++++++++
                0220 
                0221 Klymak and Legg, 2010, *Oc.Modell.*.
                0222 
                0223 
                0224 Experiments and tutorials that use KL10
                0225 +++++++++++++++++++++++++++++++++++++++
                0226 
                0227 -  Modified Internal Wave experiment, in internal_wave verification
                0228    directory