Vertical Viscosity

The vertical viscosity is composed of several components.

  1. The vertical diffusivity computations for the background and shear mixing all save contributions to the viscosity with an assumed turbulent Prandtl number of 1.0, though this can be changed with the PRANDTL_BKGND and PRANDTL_TURB parameters, respectively.

  2. If the ePBL scheme is used, it contributes to the vertical viscosity with a Prandtl number of PRANDTL_EPBL.

  3. If the CVMix scheme is used, it contributes to the vertical viscosity with a Prandtl number of PRANDTL_CONV.

  4. If the tidal mixing scheme is used, it contributes to the vertical viscosity with a Prandtl number of PRANDTL_TIDAL.

Viscous Bottom Boundary Layer

A drag law is used, either linearized about an assumed bottom velocity or using the actual near-bottom velocities combined with an assumed unresolved velocity. The bottom boundary layer thickness is limited by a combination of stratification and rotation, as in the paper of [38]. It is not necessary to calculate the thickness and viscosity every time step; instead previous values may be used.

If set_visc_CS%bottomdraglaw is True then a bottom boundary layer viscosity and thickness are calculated so that the bottom stress is

\[\mathbf{\tau}_b = C_d | U_{bbl} | \mathbf{u}_{bbl}\]

If set_visc_CS%bottomdraglaw is True then the term \(|U_{bbl}|\) is set equal to the value in set_visc_CS.drag_bg_vel so that \(C_d |U_{bbl}|\) becomes a Rayleigh bottom drag. Otherwise \(|U_{bbl}|\) is found by averaging the flow over the bottom set_visc_CS%hbbl of the model, adding the amplitude of tides set_visc_CS%tideamp and a constant set_visc_CS%drag_bg_vel. For these calculations the vertical grid at the velocity component locations is found by

\[\begin{split}\begin{array}{ll} \frac{2 h^- h^+}{h^- + h^+} & u \left( h^+ - h^-\right) >= 0 \\ \frac{1}{2} \left( h^- + h^+ \right) & u \left( h^+ - h^-\right) < 0 \end{array}\end{split}\]

which biases towards the thin cell if the thin cell is upwind. Biasing the grid toward thin upwind cells helps increase the effect of viscosity and inhibits flow out of these thin cells.

After diagnosing \(|U_{bbl}|\) over a fixed depth an active viscous boundary layer thickness is found using the ideas of [38] (hereafter KW99). KW99 solve the equation

\[\left( \frac{h_{bbl}}{h_f} \right)^2 + \frac{h_{bbl}}{h_N} = 1\]

for the boundary layer depth \(h_{bbl}\). Here

\[h_f = \frac{C_n u_*}{f}\]

is the rotation controlled boundary layer depth in the absence of stratification. \(u_*\) is the surface friction speed given by

\[u_*^2 = C_d |U_{bbl}|^2\]

and is a function of near bottom model flow.

\[h_N = \frac{C_i u_*}{N} = \frac{ (C_i u_* )^2 }{g^\prime}\]

is the stratification controlled boundary layer depth. The non-dimensional parameters \(C_n=0.5\) and \(C_i=20\) are suggested by [72].

If a Richardson number dependent mixing scheme is being used, as indicated by set_visc_CS%rino_mix, then the boundary layer thickness is bounded to be no larger than a half of set_visc_CS%hbbl .

A BBL viscosity is calculated so that the no-slip boundary condition in the vertical viscosity solver implies the stress \(\mathbf{\tau}_b\):

\[K_{bbl} = \frac{1}{2} h_{bbl} \sqrt{C_{drag}} \, u^\ast\]

Channel Drag

The channel drag is an extra Rayleigh drag applied to those layers within the bottom boundary layer. It is called channel drag because it accounts for curvature of the bottom, applying the drag proportionally to how much of each cell is within the bottom boundary layer. The bottom shape is approximated as locally parabolic. The bottom drag is applied to each layer with a factor \(R_k\), the sum of which is 1 over all the layers.

../../../_images/channel_drag.png

Example of layers intersecting a sloping bottom, with the blue showing the fraction of the cell over which bottom drag is applied.

The velocity that is actually subject to the bottom drag may be substantially lower than the mean layer velocity, especially if only a small fraction of the layer’s width is subject to the bottom drag.

The code begins by finding the arithmetic mean of the water depths to find the depth at the velocity points. It then uses these to construct a parabolic bottom shape, valid for \(I - \frac{1}{2}\) to \(I + \frac{1}{2}\). The parabola is:

\[D(x) = a x^2 + b x + D - \frac{a}{12}\]

For sufficiently small curvature \(a\), one can drop the quadratic term and assume a linear function instead. We want a form that matches the traditional bottom drag when the bottom is flat.

We defined the open fraction of each cell as \(l(k) \equiv L(k)/L_{Tot}\), where terms of order \(l^2\) will be dropped.

Hallberg (personal communication) shows how they came up with the form used in the code, in which the \(R_k\) above are set to:

\[R_k = \gamma_k l_{k-1/2} \left[ \frac{12 c_{Smag} h_k}{12 c_{Smag} k_k + c_d \gamma_k (1 - \gamma_k) (1 - \frac{3}{2} \gamma_k) l^2_{k-1/2} L_{Tot}} \right]\]

with the definition \(\gamma_k \equiv (l_{k-1/2} - l_{k+1/2})/l_{k-1/2}\). This ensures that \(\sum^N_{k=1} \gamma_k l_{k-1/2} = 1\) since \(l_{1/2} = 1\) and \(l_{N+1/2} = 0\).