/[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.10 - (hide annotations) (download) (as text)
Wed Jun 28 15:35:07 2006 UTC (19 years, 1 month ago) by molod
Branch: MAIN
Changes since 1.9: +6 -0 lines
File MIME type: application/x-tex
Rename files, connect packages and epxeriments that use them.

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     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 heimbach 1.6 %----------------------------------------------------------------------
82    
83 heimbach 1.7 \subsubsection{KPP configuration and compiling
84     \label{sec:pkg:kpp:comp}}
85 heimbach 1.6
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 heimbach 1.8 \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 heimbach 1.6 \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 heimbach 1.7 \centering
114 heimbach 1.6 \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 heimbach 1.7 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 heimbach 1.6 \begin{table}[h!]
188 heimbach 1.7 \centering
189 heimbach 1.6 \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 heimbach 1.8 \subsubsection{Equations and key routines
292 heimbach 1.6 \label{sec:pkg:kpp:equations}}
293    
294 heimbach 1.7 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 heimbach 1.8 \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 heimbach 1.7 %
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 heimbach 1.8 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 heimbach 1.7 %
391 heimbach 1.8 \item
392     find diffusivities at kbl-1 grid level
393 heimbach 1.7 %
394 heimbach 1.8 \end{enumerate}
395 heimbach 1.6
396 heimbach 1.8 \paragraph{RI\_IWMIX: Mixing in the interior} ~ \\
397 heimbach 1.6 %
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 heimbach 1.8 to static instability (local Richardson number $<$ 0).
410 heimbach 1.6 %
411     \end{itemize}
412    
413 heimbach 1.8 TO BE CONTINUED.
414 heimbach 1.6
415 heimbach 1.8 \paragraph{BLDEPTH: Boundary layer depth calculation:} ~ \\
416 heimbach 1.6 %
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 heimbach 1.8 TO BE CONTINUED.
439 heimbach 1.6
440 heimbach 1.8 \paragraph{KPP\_CALC\_DIFF\_T/\_S, KPP\_CALC\_VISC:} ~ \\
441 heimbach 1.6 %
442     Add contribution to net diffusivity/viscosity from
443     KPP diffusivity/viscosity.
444    
445 heimbach 1.8 TO BE CONTINUED.
446    
447     \paragraph{KPP\_TRANSPORT\_T/\_S/\_PTR:} ~ \\
448 heimbach 1.6 %
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 heimbach 1.8 TO BE CONTINUED.
455    
456     \paragraph{Implicit time integration} ~ \\
457 heimbach 1.7 %
458 heimbach 1.8 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 heimbach 1.6 {\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 molod 1.9 Available output fields are summarized here:
508 heimbach 1.6
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 heimbach 1.7
534 molod 1.10 \subsubsection{Experiments and tutorials that use kpp}
535     \label{sec:pkg:kpp:experiments}
536    
537     \begin{itemize}
538     \item{Labrador Sea experiment, in lab\_sea verification directory }
539     \end{itemize}

  ViewVC Help
Powered by ViewVC 1.1.22