/[MITgcm]/manual/s_phys_pkgs/text/kpp.tex
ViewVC logotype

Diff of /manual/s_phys_pkgs/text/kpp.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.3 by edhill, Tue Oct 12 18:16:03 2004 UTC revision 1.11 by jmc, Mon Aug 30 23:09:21 2010 UTC
# Line 1  Line 1 
1  \section{Ocean vertical mixing --  \subsection{KPP: Nonlocal K-Profile Parameterization for
2  the nonlocal K-profile parameterization scheme KPP}  Vertical Mixing}
3    
4  \label{sec:pkg:kpp}  \label{sec:pkg:kpp}
5  \begin{rawhtml}  \begin{rawhtml}
6  <!-- CMIREDIR:package_kpp: -->  <!-- CMIREDIR:package_kpp: -->
7  \end{rawhtml}  \end{rawhtml}
8    
9    Authors: Dimitris Menemenlis and Patrick Heimbach
10    
11    \subsubsection{Introduction
12    \label{sec:pkg:kpp:intro}}
13    
14    The nonlocal K-Profile Parameterization (KPP) scheme
15    of \cite{lar-eta:94} unifies the treatment of a variety of
16    unresolved processes involved in vertical mixing.
17    To consider it as one mixing scheme is, in the view of the authors,
18    somewhat misleading since it consists of several entities
19    to deal with distinct mixing processes in the ocean's surface
20    boundary layer, and the interior:
21    %
22    \begin{enumerate}
23    %
24    \item
25    mixing in the interior is goverened by
26    shear instability (modeled as function of the local gradient
27    Richardson number), internal wave activity (assumed constant),
28    and double-diffusion (not implemented here).
29    %
30    \item
31    a boundary layer depth $h$ or \texttt{hbl} is determined
32    at each grid point, based on a critical value of turbulent
33    processes parameterized by a bulk Richardson number;
34    %
35    \item
36    mixing is strongly enhanced in the boundary layer under the
37    stabilizing or destabilizing influence of surface forcing
38    (buoyancy and momentum) enabling boundary layer properties
39    to penetrate well into the thermocline;
40    mixing is represented through a polynomial profile whose
41    coefficients are determined subject to several contraints;
42    %
43    \item
44    the boundary-layer profile is made to agree with similarity
45    theory of turbulence and is matched, in the asymptotic sense
46    (function and derivative agree at the boundary),
47    to the interior thus fixing the polynomial coefficients;
48    matching allows for some fraction of the boundary layer mixing
49    to affect the interior, and vice versa;
50    %
51    \item
52    a ``non-local'' term $\hat{\gamma}$ or \texttt{ghat}
53    which is independent of the vertical property gradient further
54    enhances mixing where the water column is unstable
55    %
56    \end{enumerate}
57    %
58    The scheme has been extensively compared to observations
59    (see e.g. \cite{lar-eta:97}) and is now coomon in many
60    ocean models.
61    
62    The current code originates in the NCAR NCOM 1-D code
63    and was kindly provided by Bill Large and Jan Morzel.
64    It has been adapted first to the MITgcm vector code and
65    subsequently to the current parallel code.
66    Adjustment were mainly in conjunction with WRAPPER requirements
67    (domain decomposition and threading capability), to enable
68    automatic differentiation of tangent linear and adjoint code
69    via TAMC.
70    
71    The following sections will describe the KPP package
72    configuration and compiling (\ref{sec:pkg:kpp:comp}),
73    the settings and choices of runtime parameters
74    (\ref{sec:pkg:kpp:runtime}),
75    more detailed description of equations to which these
76    parameters relate (\ref{sec:pkg:kpp:equations}),
77    and key subroutines where they are used %(\ref{sec:pkg:kpp:subroutines}),
78    (\ref{sec:pkg:kpp:flowchart}),
79    and diagnostics output of KPP-derived diffusivities, viscosities
80    and boundary-layer/mixed-layer depths
81    (\ref{sec:pkg:kpp:diagnostics}).
82    
83    %----------------------------------------------------------------------
84    
85    \subsubsection{KPP configuration and compiling
86    \label{sec:pkg:kpp:comp}}
87    
88    As with all MITgcm packages, KPP can be turned on or off at compile time
89    %
90    \begin{itemize}
91    %
92    \item
93    using the \texttt{packages.conf} file by adding \texttt{kpp} to it,
94    %
95    \item
96    or using \texttt{genmake2} adding
97    \texttt{-enable=kpp} or \texttt{-disable=kpp} switches
98    %
99    \item
100    \textit{Required packages and CPP options:} \\
101    No additional packages are required, but the MITgcm kernel flag
102    enabling the penetration of shortwave radiation below
103    the surface layer needs to be set in \texttt{CPP\_OPTIONS.h}
104    as follows: \\
105    \texttt{\#define SHORTWAVE\_HEATING}
106    %
107    \end{itemize}
108    (see Section \ref{sec:buildingCode}).
109    
110    Parts of the KPP code can be enabled or disabled at compile time
111    via CPP preprocessor flags. These options are set in
112    \texttt{KPP\_OPTIONS.h}. Table \ref{tab:pkg:kpp:cpp} summarizes them.
113    
114    \begin{table}[!ht]
115    \centering
116      \label{tab:pkg:kpp:cpp}
117      {\footnotesize
118        \begin{tabular}{|l|l|}
119          \hline
120          \textbf{CPP option}  &  \textbf{Description}  \\
121          \hline \hline
122            \texttt{\_KPP\_RL} &
123              ~ \\
124            \texttt{FRUGAL\_KPP} &
125              ~ \\
126            \texttt{KPP\_SMOOTH\_SHSQ} &
127              ~ \\
128            \texttt{KPP\_SMOOTH\_DVSQ} &
129              ~ \\
130            \texttt{KPP\_SMOOTH\_DENS} &
131              ~ \\
132            \texttt{KPP\_SMOOTH\_VISC} &
133              ~ \\
134            \texttt{KPP\_SMOOTH\_DIFF} &
135              ~ \\
136            \texttt{KPP\_ESTIMATE\_UREF} &
137              ~ \\
138            \texttt{INCLUDE\_DIAGNOSTICS\_INTERFACE\_CODE} &
139              ~ \\
140            \texttt{KPP\_GHAT} &
141              ~ \\
142            \texttt{EXCLUDE\_KPP\_SHEAR\_MIX} &
143              ~ \\
144          \hline
145        \end{tabular}
146      }
147      \caption{~}
148    \end{table}
149    
150    
151    %----------------------------------------------------------------------
152    
153    \subsubsection{Run-time parameters
154    \label{sec:pkg:kpp:runtime}}
155    
156    Run-time parameters are set in files
157    \texttt{data.pkg} and \texttt{data.kpp}
158    which are read in \texttt{kpp\_readparms.F}.
159    Run-time parameters may be broken into 3 categories:
160    (i) switching on/off the package at runtime,
161    (ii) required MITgcm flags,
162    (iii) package flags and parameters.
163    
164    \paragraph{Enabling the package}
165    ~ \\
166    %
167    The KPP package is switched on at runtime by setting
168    \texttt{useKPP = .TRUE.} in \texttt{data.pkg}.
169    
170    \paragraph{Required MITgcm flags}
171    ~ \\
172    %
173    The following flags/parameters of the MITgcm dynamical
174    kernel need to be set in conjunction with KPP:
175    
176    \begin{tabular}{ll}
177    \texttt{implicitViscosity = .TRUE.} & enable implicit vertical viscosity \\
178    \texttt{implicitDiffusion = .TRUE.} & enable implicit vertical diffusion \\
179    \end{tabular}
180    
181    
182    \paragraph{Package flags and parameters}
183    ~ \\
184    %
185    Table \ref{tab:pkg:kpp:runtime_flags} summarizes the
186    runtime flags that are set in \texttt{data.pkg}, and
187    their default values.
188    
189    \begin{table}[!ht]
190    \centering
191      \label{tab:pkg:kpp:runtime_flags}
192      {\footnotesize
193        \begin{tabular}{|l|c|l|}
194          \hline
195          \textbf{Flag/parameter} & \textbf{default} &  \textbf{Description}  \\
196          \hline \hline
197             \multicolumn{3}{|c|}{\textit{I/O related parameters} } \\
198             \hline
199            kpp\_freq & \texttt{deltaTClock} &
200               Recomputation frequency for KPP fields \\
201            kpp\_dumpFreq & \texttt{dumpFreq} &
202               Dump frequency of KPP field snapshots \\
203            kpp\_taveFreq & \texttt{taveFreq} &
204               Averaging and dump frequency of KPP fields \\
205            KPPmixingMaps & \texttt{.FALSE.} &
206               include KPP diagnostic maps in STDOUT \\
207            KPPwriteState & \texttt{.FALSE.} &
208               write KPP state to file \\
209            KPP\_ghatUseTotalDiffus & \texttt{.FALSE.} &
210               if \texttt{.T.} compute non-local term using total vertical diffusivity \\
211            ~ & ~ &
212               if \texttt{.F.} use KPP vertical diffusivity \\
213          \hline
214          \multicolumn{3}{|c|}{\textit{Genral KPP parameters} } \\
215          \hline
216            minKPPhbl & \texttt{delRc(1)} &
217               Minimum boundary layer depth \\
218            epsilon & 0.1 &
219               nondimensional extent of the surface layer \\
220            vonk & 0.4 &
221               von Karman constant \\
222            dB\_dz & 5.2E-5 1/s$^2$ &
223               maximum dB/dz in mixed layer hMix \\
224            concs & 98.96 &
225               ~ \\
226            concv & 1.8 &
227               ~ \\
228          \hline
229          \multicolumn{3}{|c|}{\textit{Boundary layer parameters (S/R \texttt{bldepth})} } \\
230          \hline
231            Ricr & 0.3 &
232               critical bulk Richardson number \\
233            cekman & 0.7 &
234               coefficient for Ekman depth \\
235            cmonob & 1.0 &
236               coefficient for Monin-Obukhov depth \\
237            concv & 1.8 &
238               ratio of interior to  entrainment depth buoyancy frequency \\
239            hbf & 1.0 &
240               fraction of depth to which absorbed solar radiation contributes \\
241            ~ & ~ &
242               to surface buoyancy forcing \\
243            Vtc & \texttt{~} &
244               non-dim. coeff. for velocity scale of turbulant velocity shear \\
245            ~ & ~ &
246               ( = function of concv,concs,epsilon,vonk,Ricr) \\
247          \hline
248          \multicolumn{3}{|c|}{\textit{Boundary layer mixing parameters (S/R \texttt{blmix})} } \\
249          \hline
250            cstar & 10. &
251               proportionality coefficient for nonlocal transport \\
252            cg & ~ &
253               non-dimensional coefficient for counter-gradient term \\
254            ~ & ~ &
255               ( = function of cstar,vonk,concs,epsilon) \\
256          \hline
257          \multicolumn{3}{|c|}{\textit{Interior mixing parameters (S/R \texttt{Ri\_iwmix})} } \\
258          \hline
259            Riinfty & 0.7 &
260               gradient Richardson number limit for shear instability \\
261            BVDQcon & -0.2E-4 1/s$^2$ &
262               Brunt-V\"ai\"sal\"a squared \\
263            difm0 & 0.005 m$^2$/s &
264               viscosity max. due to shear instability \\
265            difs0 & 0.005 m$^2$/s &
266               tracer diffusivity max. due to shear instability \\
267            dift0 & 0.005 m$^2$/s &
268               heat diffusivity max. due to shear instability \\
269            difmcon & 0.1 &
270               viscosity due to convective instability \\
271            difscon & 0.1 &
272               tracer diffusivity due to convective instability \\
273            diftcon & 0.1 &
274               heat diffusivity due to convective instability \\
275          \hline
276          \multicolumn{3}{|c|}{\textit{Double-diffusive mixing parameters (S/R \texttt{ddmix})} } \\
277          \hline
278            Rrho0 & not used &
279               limit for double diffusive density ratio \\
280            dsfmax & not used &
281               maximum diffusivity in case of salt fingering \\
282             \hline
283          \hline
284        \end{tabular}
285      }
286      \caption{~}
287    \end{table}
288    
289    
290    
291    %----------------------------------------------------------------------
292    
293    \subsubsection{Equations and key routines
294    \label{sec:pkg:kpp:equations}}
295    
296    We restrict ourselves to writing out only the essential equations
297    that relate to main processes and parameters mentioned above.
298    We closely follow the notation of \cite{lar-eta:94}.
299    
300    \paragraph{KPP\_CALC:} Top-level routine. \\
301    ~
302    
303    \paragraph{KPP\_MIX:} Intermediate-level routine \\
304    ~
305    
306    \paragraph{BLMIX: Mixing in the boundary layer} ~ \\
307    %
308    ~
309    
310    The vertical fluxes $\overline{wx}$
311    of momentum and tracer properties $X$
312    is composed of a gradient-flux term (proportional to
313    the vertical property divergence $\partial_z X$), and
314    a ``nonlocal'' term $\gamma_x$ that enhances the
315    gradient-flux mixing coefficient $K_x$
316    %
317    \begin{equation}
318    \overline{wx}(d) \, = \, -K_x \left(
319    \frac{\partial X}{\partial z} \, - \, \gamma_x \right)
320    \end{equation}
321    
322    \begin{itemize}
323    %
324    \item
325    \textit{Boundary layer mixing profile} \\
326    %
327    It is expressed as the product of the boundary layer depth $h$,
328    a depth-dependent turbulent velocity scale $w_x(\sigma)$ and a
329    non-dimensional shape function $G(\sigma)$
330    %
331    \begin{equation}
332    K_x(\sigma) \, = \, h \, w_x(\sigma) \, G(\sigma)
333    \end{equation}
334    %
335    with dimensionless vertical coordinate $\sigma = d/h$.
336    For details of $ w_x(\sigma)$ and $G(\sigma)$ we refer to
337    \cite{lar-eta:94}.
338    
339    %
340    \item
341    \textit{Nonlocal mixing term} \\
342    %
343    The nonlocal transport term $\gamma$ is nonzero only for
344    tracers in unstable (convective) forcing conditions.
345    Thus, depending on the  stability parameter $\zeta = d/L$
346    (with depth $d$, Monin-Obukhov length scale $L$)
347    it has the following form:
348    %
349    \begin{eqnarray}
350    \begin{array}{cl}
351    \gamma_x \, = \, 0 & \zeta \, \ge \, 0 \\
352    ~ & ~ \\
353    \left.
354    \begin{array}{c}
355    \gamma_m \, = \, 0 \\
356     ~ \\
357    \gamma_s \, = \, C_s
358    \frac{\overline{w s_0}}{w_s(\sigma) h} \\
359     ~ \\
360    \gamma_{\theta} \, = \, C_s
361    \frac{\overline{w \theta_0}+\overline{w \theta_R}}{w_s(\sigma) h} \\
362    \end{array}
363    \right\}
364    &
365    \zeta \, < \, 0 \\
366    \end{array}
367    \end{eqnarray}
368    
369    \end{itemize}
370    
371    In practice, the routine peforms the following tasks:
372    %
373    \begin{enumerate}
374    %
375    \item
376    compute velocity scales at hbl
377    %
378    \item
379    find the interior viscosities and derivatives at hbl
380    %
381    \item
382    compute turbulent velocity scales on the interfaces
383    %
384    \item
385    compute the dimensionless shape functions at the interfaces
386    %
387    \item
388    compute boundary layer diffusivities at the interfaces
389    %
390    \item
391    compute nonlocal transport term
392    %
393    \item
394    find diffusivities at kbl-1 grid level
395    %
396    \end{enumerate}
397    
398    \paragraph{RI\_IWMIX: Mixing in the interior} ~ \\
399    %
400    Compute interior viscosity and diffusivity coefficients due to
401    %
402    \begin{itemize}
403    %
404    \item
405    shear instability (dependent on a local gradient Richardson number),
406    %
407    \item
408    to background internal wave activity, and
409    %
410    \item
411    to static instability (local Richardson number $<$ 0).
412    %
413    \end{itemize}
414    
415    TO BE CONTINUED.
416    
417    \paragraph{BLDEPTH: Boundary layer depth calculation:} ~ \\
418    %
419    The oceanic planetary boundary layer depth, \texttt{hbl}, is determined as
420    the shallowest depth where the bulk Richardson number is
421    equal to the critical value, \texttt{Ricr}.
422    
423    Bulk Richardson numbers are evaluated by computing velocity and
424    buoyancy differences between values at zgrid(kl) < 0 and surface
425    reference values.
426    In this configuration, the reference values are equal to the
427    values in the surface layer.
428    When using a very fine vertical grid, these values should be
429    computed as the vertical average of velocity and buoyancy from
430    the surface down to epsilon*zgrid(kl).
431    
432    When the bulk Richardson number at k exceeds Ricr, hbl is
433    linearly interpolated between grid levels zgrid(k) and zgrid(k-1).
434    
435    The water column and the surface forcing are diagnosed for
436    stable/ustable forcing conditions, and where hbl is relative
437    to grid points (caseA), so that conditional branches can be
438    avoided in later subroutines.
439    
440    TO BE CONTINUED.
441    
442    \paragraph{KPP\_CALC\_DIFF\_T/\_S, KPP\_CALC\_VISC:} ~  \\
443    %
444    Add contribution to net diffusivity/viscosity from
445    KPP diffusivity/viscosity.
446    
447    TO BE CONTINUED.
448    
449    \paragraph{KPP\_TRANSPORT\_T/\_S/\_PTR:} ~ \\
450    %
451    Add non local KPP transport term (ghat) to diffusive
452    temperature/salinity/passive tracer flux.
453    The nonlocal transport term is nonzero only for scalars
454    in unstable (convective) forcing conditions.
455    
456    TO BE CONTINUED.
457    
458    \paragraph{Implicit time integration} ~ \\
459    %
460    TO BE CONTINUED.
461    
462    
463    \paragraph{Penetration of shortwave radiation} ~ \\
464    %
465    TO BE CONTINUED.
466    
467    
468    %----------------------------------------------------------------------
469    
470    \subsubsection{Flow chart
471    \label{sec:pkg:kpp:flowchart}}
472    
473    
474    {\footnotesize
475    \begin{verbatim}
476    
477    C     !CALLING SEQUENCE:
478    c ...
479    c  kpp_calc (TOP LEVEL ROUTINE)
480    c  |
481    c  |-- statekpp: o compute all EOS/density-related arrays
482    c  |             o uses S/R FIND_ALPHA, FIND_BETA, FIND_RHO
483    c  |
484    c  |-- kppmix
485    c  |   |--- ri_iwmix (compute interior mixing coefficients due to constant
486    c  |   |              internal wave activity, static instability,
487    c  |   |              and local shear instability).
488    c  |   |
489    c  |   |--- bldepth (diagnose boundary layer depth)
490    c  |   |
491    c  |   |--- blmix (compute boundary layer diffusivities)
492    c  |   |
493    c  |   |--- enhance (enhance diffusivity at interface kbl - 1)
494    c  |   o
495    c  |
496    c  |-- swfrac
497    c  o
498    
499    \end{verbatim}
500    }
501    
502    %----------------------------------------------------------------------
503    
504    \subsubsection{KPP diagnostics
505    \label{sec:pkg:kpp:diagnostics}}
506    
507    Diagnostics output is available via the diagnostics package
508    (see Section \ref{sec:pkg:diagnostics}).
509    Available output fields are summarized here:
510    
511    \begin{verbatim}
512    ------------------------------------------------------
513     <-Name->|Levs|grid|<--  Units   -->|<- Tile (max=80c)
514    ------------------------------------------------------
515     KPPviscA| 23 |SM  |m^2/s           |KPP vertical eddy viscosity coefficient
516     KPPdiffS| 23 |SM  |m^2/s           |Vertical diffusion coefficient for salt & tracers
517     KPPdiffT| 23 |SM  |m^2/s           |Vertical diffusion coefficient for heat
518     KPPghat | 23 |SM  |s/m^2           |Nonlocal transport coefficient
519     KPPhbl  |  1 |SM  |m               |KPP boundary layer depth, bulk Ri criterion
520     KPPmld  |  1 |SM  |m               |Mixed layer depth, dT=.8degC density criterion
521     KPPfrac |  1 |SM  |                |Short-wave flux fraction penetrating mixing layer
522    \end{verbatim}
523    
524    %----------------------------------------------------------------------
525    
526    \subsubsection{Reference experiments}
527    
528    lab\_sea:
529    
530    natl\_box:
531    
532    %----------------------------------------------------------------------
533    
534    \subsubsection{References}
535    
536    \subsubsection{Experiments and tutorials that use kpp}
537    \label{sec:pkg:kpp:experiments}
538    
539    \begin{itemize}
540    \item{Labrador Sea experiment, in lab\_sea verification directory }
541    \end{itemize}

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22