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

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

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


Revision 1.11 - (hide annotations) (download) (as text)
Mon Aug 30 23:09:21 2010 UTC (14 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint01, HEAD
Changes since 1.10: +7 -5 lines
File MIME type: application/x-tex
clean-up latex built:
 (remove multiple definition of label; fix missing reference; replace
  non-standard latex stuff; ...)

1 heimbach 1.6 \subsection{KPP: Nonlocal K-Profile Parameterization for
2 heimbach 1.7 Vertical Mixing}
3 heimbach 1.1
4 edhill 1.3 \label{sec:pkg:kpp}
5     \begin{rawhtml}
6     <!-- CMIREDIR:package_kpp: -->
7     \end{rawhtml}
8 heimbach 1.6
9     Authors: Dimitris Menemenlis and Patrick Heimbach
10    
11     \subsubsection{Introduction
12     \label{sec:pkg:kpp:intro}}
13    
14 heimbach 1.7 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 heimbach 1.8 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 heimbach 1.7 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 jmc 1.11 and key subroutines where they are used %(\ref{sec:pkg:kpp:subroutines}),
78     (\ref{sec:pkg:kpp:flowchart}),
79 heimbach 1.7 and diagnostics output of KPP-derived diffusivities, viscosities
80 jmc 1.11 and boundary-layer/mixed-layer depths
81     (\ref{sec:pkg:kpp:diagnostics}).
82 heimbach 1.7
83 heimbach 1.6 %----------------------------------------------------------------------
84    
85 heimbach 1.7 \subsubsection{KPP configuration and compiling
86     \label{sec:pkg:kpp:comp}}
87 heimbach 1.6
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 heimbach 1.8 \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 heimbach 1.6 \end{itemize}
108 jmc 1.11 (see Section \ref{sec:buildingCode}).
109 heimbach 1.6
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 jmc 1.11 \begin{table}[!ht]
115 heimbach 1.7 \centering
116 heimbach 1.6 \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 heimbach 1.7 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 jmc 1.11 \begin{table}[!ht]
190 heimbach 1.7 \centering
191 heimbach 1.6 \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 heimbach 1.8 \subsubsection{Equations and key routines
294 heimbach 1.6 \label{sec:pkg:kpp:equations}}
295    
296 heimbach 1.7 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 heimbach 1.8 \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 heimbach 1.7 %
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 heimbach 1.8 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 heimbach 1.7 %
393 heimbach 1.8 \item
394     find diffusivities at kbl-1 grid level
395 heimbach 1.7 %
396 heimbach 1.8 \end{enumerate}
397 heimbach 1.6
398 heimbach 1.8 \paragraph{RI\_IWMIX: Mixing in the interior} ~ \\
399 heimbach 1.6 %
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 heimbach 1.8 to static instability (local Richardson number $<$ 0).
412 heimbach 1.6 %
413     \end{itemize}
414    
415 heimbach 1.8 TO BE CONTINUED.
416 heimbach 1.6
417 heimbach 1.8 \paragraph{BLDEPTH: Boundary layer depth calculation:} ~ \\
418 heimbach 1.6 %
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 heimbach 1.8 TO BE CONTINUED.
441 heimbach 1.6
442 heimbach 1.8 \paragraph{KPP\_CALC\_DIFF\_T/\_S, KPP\_CALC\_VISC:} ~ \\
443 heimbach 1.6 %
444     Add contribution to net diffusivity/viscosity from
445     KPP diffusivity/viscosity.
446    
447 heimbach 1.8 TO BE CONTINUED.
448    
449     \paragraph{KPP\_TRANSPORT\_T/\_S/\_PTR:} ~ \\
450 heimbach 1.6 %
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 heimbach 1.8 TO BE CONTINUED.
457    
458     \paragraph{Implicit time integration} ~ \\
459 heimbach 1.7 %
460 heimbach 1.8 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 heimbach 1.6 {\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 molod 1.9 Available output fields are summarized here:
510 heimbach 1.6
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 heimbach 1.7
536 molod 1.10 \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}

  ViewVC Help
Powered by ViewVC 1.1.22