.. _vertical-mixing-and-convection-parameterizations:

Vertical mixing and convection parameterizations
=================================================

Vertical mixing options are set by the namelist **vertical\_mix\_nml**

.. todo:: add link for **vertical\_mix\_nml** **Vertical Mixing Namelist**

Several vertical mixing parameterizations are available 
and are described in much more detail in the Reference Manual. The
value of ``vmix_choice`` determines whether a simple constant mixing, a
Richardson-number dependent mixing or the KPP mixing parameterization is
used. Additional mixing parameters for each of these schemes are set in
individual namelists shown below; only the namelist associated with the
mixing choice is actually read.

The treatment of convection is also specified in the vertical mixing
namelist through the ``convection_type`` variable. Convection can be
treated using either convective adjustment or by specifying large
diffusion coefficients in convectively unstable regions. The KPP
vertical mixing parameterization *must* use the diffusion option. If
convective adjustment is chosen, the number of passes through the
vertical column to adjust is determined by the parameter ``nconvad``.
The treatment of convection by diffusion is governed by the input
diffusion coefficients ``convect_diff`` and ``convect_visc``. Note that
for constant vertical mixing, you can apply diffusion to tracers only by
setting ``convect_visc`` to zero; this is *not* true for Richardson
number mixing or KPP.

Some vertical and horizontal mixing parameterizations (e.g. KPP and
Gent-McWilliams to be discussed later) create large vertical mixing
coefficients. In addition, when diffusion is used as the method for
treating convection, the diffusion coefficients are large. In such
cases, implicit vertical mixing must be enabled
(``implicit_vertical_mix = .true.``) to avoid severe restrictions on the
model time step.

If implicit vertical mixing is chosen, the parameter ``aidif`` governs
the time-centering of the implicit scheme. The ``bottom_drag``
coefficient is used to compute bottom drag. To simulate geothermal
heating at the bottom of the ocean, a constant heat flux can be applied
below a fixed depth in the ocean. A heat flux of zero turns off this
option.


Constant coefficients
----------------------

Constant vertical mixing options are set by the namelist **vmix\_const\_nml**

.. todo:: add link for **vmix\_const\_nml** **Constant vertical Mixing Namelist**

Constant vertical mixing simply uses a constant diffusion coefficient
for mixing everywhere in the domain.


Richardson-number mixing
-------------------------

Richardson-number vertical mixing options are set by the namelist **vmix\_rich\_nml** 

.. todo:: add link for **vmix\_rich\_nml** Richardson-number vertical mixing namelist

The Pacanowski and Philander [PacanowskiPhilander] mixing scheme was
developed primarily for use in tropical ocean and, although it is often
used elsewhere in the global ocean, the user should be aware of the
possible need to adjust its parameters ([Peters et al],[Gent]).


KPP mixing
-----------

KPP mixing options are set by the namelist **vmix\_kpp\_nml**

.. todo:: add link for **vmix\_kpp\_nml** KPP namelist

The k-profile parameterization (KPP) [13] is relatively complex and only
the parameters that are routinely changed are shown here in the
namelist. It is possible to change other parameters by editing the KPP
module, but this should not be necessary and is discouraged. As
described previously, KPP utilizes enhanced diffusion for convection so
implicit vertical mixing must be enabled and diffusion must be specified
as the convection method. Note that the constants
``convect_diff, convect_visc`` are used for convection within KPP.

A recent change to the KPP implementation is to allow a depth
dependent background diffusivity :math:`\chi` and viscosity :math:`nu`. The form of
this dependence is

.. math::
  :label: kpp-depth-dependent-background

   \chi & = \chi _1 + \chi _2 * \arctan ({(z - D)/L})          

    \nu & = ({PR}) \chi                

where :math:`z` is the model depth, :math:`d` is the depth at which :math:`\chi` reaches
:math:`\chi_1`, :math:`L` is a length scale over which the transition between :math:`\chi_1`
and :math:`\chi_2` takes place and :math:`{Pr}` is the Prandtl number. If a constant
diffusivity and viscosity are required, simply set vdc2 to zero and vdc1
to the appropriate diffusivity.

Tidal mixing
-------------

The tidally driven mixing parameterization is described in Jayne (2009). See the `POP Reference
Manual <http://www.cesm.ucar.edu/models/cesm1.0/pop/doc/sci/POPRefManual.pdf>`__
for details.

.. todo:: add link for **tidal\_nml** Tidal mixing namelist