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

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22