The K-Profile-Parameterization (KPP)
The K-Profile-Parameterization, or "KPP", is proposed by Large et al (1994) as a model for convective and wind-driven mixing in the ocean surface boundary layer. In KPP, vertical turbulent fluxes of a quantity $\phi$ are parameterized as
where $\Phi$ is the resolved or horizontally-averaged quantity, $K_\phi$ is a turbulent diffusivity, and $NL_\phi$ is a 'non-local' flux.
The non-local flux and turbulent diffusivity are defined to vanish at the surface, and at the bottom of the 'mixing layer' $h$, which roughly corresponds to the depth at which turbulent fluxes and turbulent kinetic energy decay to zero.
The various numerical implementations of 'KPP' have effectively resulted in the proliferation of practically distinct KPP models in different codes. Here we describe the implementation of KPP in OceanTurb
, which is meant to follow the version of KPP described by the Community Vertical Mixing Project (CVMix).
The KPP model has three distinct parts:
- A model for the mixing layer depth, $h$.
- A model for the non-local flux, $\NL_\Phi$.
- A model for the local diffusivity, $K_\Phi$.
Below, we denote 'model parameters' as $\C{\mathrm{label}}{\mathrm{var}}$, where 'label' describes the parameter and 'var' is a variable like $U, V, T$ or $S$.
Mixing depth model in CVMix KPP
The mixing layer depth $h$ is defined implicitly via the bulk Richardson number criterion
where the critical $\Ri$ is $\C{\Ri}{} = 0.3$. The operator $\Delta$ is defined
where $\C{\SL}{} = 0.1$ is the surface layer fraction. The function $\K(-h)$ parameterizes unresolved kinetic energy associated with convective plumes,
The unresolved kinetic energy constant is $\C{\K}{} = 4.32$ and the minimum unresolved kinetic energy is $\C{\K_0}{} = 10^{-11}$. To solve \eqref{bulk_ri} for $h$, we evaluate the right side of \eqref{bulk_ri} for $z < 0$ at increasing depths until the right side rises above the critical $\C{\Ri}{}$. We then linearly interpolate to find $h$.
'Countergradient' non-local flux model in CVMix KPP
The non-local flux is defined only for $T$ and $S$, and is
where $d = -z/h$ is a non-dimensional depth coordinate and $\C{\NL}{} = 6.33$.
$K$-Profile model in CVMix KPP
The KPP diffusivity is
where $\W_\Phi(d)$ is the turbulent velocity scale for variable $\phi$.
We define the ratios
In wind-driven turbulence under stable buoyancy forcing such that $Q_b < 0$, the turbulent velocity scale is
where $\C{\tau}{} = 0.4$ is the Von Karman constant, $\C{\mathrm{stab}}{} = 2.0$, and $\C{n}{}=1$.
In wind-driven turbulence but under destabilizing buoyancy forcing, when $\min \left [ \C{\SL}{}, d \right ] < \C{d}{\phi} r_\tau$, the turbulent velocity scale is
where $\C{m\tau}{U}= 1/4$, $\C{m\tau}{T} = 1/2$, $\C{\mathrm{unst}}{} = 6.4$, the transition parameter for velocities is $\C{d}{U} = 0.5$, and the transition parameter for tracers is $\C{d}{T} = 2.5$.
In convection-driven turbulence affected by wind mixing, when $\min \left [ \C{\SL}{}, d \right ] >= \C{d}{\phi} r_\tau$, the turbulent velocity scale is
where $\C{b}{U} = \C{b}{V} = 0.215$, $\C{b}{T} = \C{b}{S} = 2.53$, $\C{mb}{U} = \C{mb}{T}=1/3$, $\C{\tau b}{U} = \C{\tau b}{V} = 0.374$, and $\C{\tau b}{T} = \C{\tau b}{S} = -0.717$.
Selected tests
See /test/test_kpp.jl
for more tests.
Linear temperature profile and no velocity field
Some simple tests can be defined when the model state is $U=V=S=0$ and $T = \gamma z$. In this case the buoyancy becomes $B = g \alpha \gamma z$ and the buoyancy gradient is $B_z = g \alpha \gamma$. If we further take $\C{\SL}{} \to 0$ and $Q_b > 0$, and note that the value of $T$ in the top grid cell is $T_N = -\gamma \Delta z / 2$, where $N$ is the number of grid points, we find that
and
The unresolved kinetic energy function is
The bulk Richardson number criterion then becomes
Modifying the temperature profile so that $T_N = B_N = 0$ allows us to analytically calculate the mixed layer depth:
Linear temperature profile and linear shear
Consider a piecewise-constant temperature profile
and a velocity profile
so that $T(z=-h) = U(z=-h) = 0$. We then have $\Delta T(-h) = T_0$ and $\Delta U^2(-h) = U_0^2$, so that with $g=\alpha=1$,
setting $h = 9$, $\C{\Ri}{}=1$, $T_0 = 1$, and $U_0=3$ yields a consistent solution.
Limiting cases for turbulent velocity scales
Under zero momentum forcing, the turbulent vertical velocity scale is
We write the test in \eqref{buoyscaletest} using the depth in \eqref{analyticaldepth}
Under zero buoyancy forcing, the turbulent velocity scale is
Table of model parameters
The default values for adjustable model parameters in KPP are
Parameter | Value | Description |
---|---|---|
$\C{\Ri}{}$ | 0.3 | Bulk Richardson number criterion |
$\C{\SL}{}$ | 0.1 | Surface layer fraction |
$\C{\K}{}$ | 3.19 | Unresolved kinetic energy constant |
$\C{\NL}{}$ | 6.33 | Non-local flux proportionality constant |
$\C{\tau}{}$ | 0.4 | Wind mixing constant / von Karman parameter |
$\C{\mathrm{stab}}{}$ | 2.0 | Proportionality constant for effect of stable buoyancy forcing on wind mixing |
$\C{n}{}$ | 1.0 | Exponent for effect of stable buoyancy forcing on wind mixing |
$\C{\mathrm{unst}}{}$ | 6.4 | Proportionality constant for effect of unstable buoyancy forcing on wind mixing |
$\C{m\tau}{U}$ | 0.25 | Exponent for effect of unstable buoyancy forcing on wind mixing of momentum |
$\C{m\tau}{T}$ | 0.5 | Exponent for effect of unstable buoyancy forcing on wind mixing of momentum |
$\C{b}{U}$ | 0.599 | Convective mixing constant for momentum |
$\C{b}{T}$ | 1.36 | Convective mixing constant for scalars |
$\C{d}{U}$ | 0.5 | Transitional normalized depth for unstable mixing of momentum |
$\C{d}{T}$ | 2.5 | Transitional normalized depth for unstable mixing of scalars |
$\C{mb}{U}$ | 0.33 | Exponent for effect of wind on convective mixing of momentum |
$\C{mb}{T}$ | 0.33 | Exponent for effect of wind on convective mixing of scalars |
$K_{u0}$ | $10^{-5}$ | Interior/background turbulent diffusivity for momentum |
$K_{T0}$ | $10^{-5}$ | Interior/background turbulent diffusivity for temperature |
$K_{S0}$ | $10^{-5}$ | Interior/background turbulent diffusivity for salinity |
Note: all parameters are greater than 0, and $0 \ge \C{\SL}{} \ge 1$.
The default values for 'non-adjustable' parameters in KPP are
Parameter | Value | Description |
---|---|---|
$\C{\tau b}{U}$ | 0.374 | |
$\C{\tau b}{T}$ | -0.717 | |
$\C{\K_0}{}$ | 1e-11 |