| 1 |
\section{Gent/McWiliams/Redi SGS Eddy parameterization} |
| 2 |
|
| 3 |
There are two parts to the Redi/GM parameterization of geostrophic |
| 4 |
eddies. The first aims to mix tracer properties along isentropes |
| 5 |
(neutral surfaces) by means of a diffusion operator oriented along the |
| 6 |
local isentropic surface (Redi). The second part, adiabatically |
| 7 |
re-arranges tracers through an advective flux where the advecting flow |
| 8 |
is a function of slope of the isentropic surfaces (GM). |
| 9 |
|
| 10 |
The first GCM implementation of the Redi scheme was by Cox 1987 in the |
| 11 |
GFDL ocean circulation model. The original approach failed to |
| 12 |
distinguish between isopycnals and surfaces of locally referenced |
| 13 |
potential density (now called neutral surfaces) which are proper |
| 14 |
isentropes for the ocean. As will be discussed later, it also appears |
| 15 |
that the Cox implementation is susceptible to a computational mode. |
| 16 |
Due to this mode, the Cox scheme requires a background lateral |
| 17 |
diffusion to be present to conserve the integrity of the model fields. |
| 18 |
|
| 19 |
The GM parameterization was then added to the GFDL code in the form of |
| 20 |
a non-divergent bolus velocity. The method defines two |
| 21 |
stream-functions expressed in terms of the isoneutral slopes subject |
| 22 |
to the boundary condition of zero value on upper and lower |
| 23 |
boundaries. The horizontal bolus velocities are then the vertical |
| 24 |
derivative of these functions. Here in lies a problem highlighted by |
| 25 |
Griffies et al., 1997: the bolus velocities involve multiple |
| 26 |
derivatives on the potential density field, which can consequently |
| 27 |
give rise to noise. Griffies et al. point out that the GM bolus fluxes |
| 28 |
can be identically written as a skew flux which involves fewer |
| 29 |
differential operators. Further, combining the skew flux formulation |
| 30 |
and Redi scheme, substantial cancellations take place to the point |
| 31 |
that the horizontal fluxes are unmodified from the lateral diffusion |
| 32 |
parameterization. |
| 33 |
|
| 34 |
\subsection{Redi scheme: Isopycnal diffusion} |
| 35 |
|
| 36 |
The Redi scheme diffuses tracers along isopycnals and introduces a |
| 37 |
term in the tendency (rhs) of such a tracer (here $\tau$) of the form: |
| 38 |
\begin{equation} |
| 39 |
\bf{\nabla} \cdot \kappa_\rho \bf{K}_{Redi} \bf{\nabla} \tau |
| 40 |
\end{equation} |
| 41 |
where $\kappa_\rho$ is the along isopycnal diffusivity and |
| 42 |
$\bf{K}_{Redi}$ is a rank 2 tensor that projects the gradient of |
| 43 |
$\tau$ onto the isopycnal surface. The unapproximated projection tensor is: |
| 44 |
\begin{equation} |
| 45 |
\bf{K}_{Redi} = \left( |
| 46 |
\begin{array}{ccc} |
| 47 |
1 + S_x& S_x S_y & S_x \\ |
| 48 |
S_x S_y & 1 + S_y & S_y \\ |
| 49 |
S_x & S_y & |S|^2 \\ |
| 50 |
\end{array} |
| 51 |
\right) |
| 52 |
\end{equation} |
| 53 |
Here, $S_x = -\partial_x \sigma / \partial_z \sigma$ and $S_y = |
| 54 |
-\partial_y \sigma / \partial_z \sigma$ are the components of the |
| 55 |
isoneutral slope. |
| 56 |
|
| 57 |
The first point to note is that a typical slope in the ocean interior |
| 58 |
is small, say of the order $10^{-4}$. A maximum slope might be of |
| 59 |
order $10^{-2}$ and only exceeds such in unstratified regions where |
| 60 |
the slope is ill defined. It is therefore justifiable, and |
| 61 |
customary, to make the small slope approximation, $|S| << 1$. The Redi |
| 62 |
projection tensor then becomes: |
| 63 |
\begin{equation} |
| 64 |
\bf{K}_{Redi} = \left( |
| 65 |
\begin{array}{ccc} |
| 66 |
1 & 0 & S_x \\ |
| 67 |
0 & 1 & S_y \\ |
| 68 |
S_x & S_y & |S|^2 \\ |
| 69 |
\end{array} |
| 70 |
\right) |
| 71 |
\end{equation} |
| 72 |
|
| 73 |
|
| 74 |
\subsection{GM parameterization} |
| 75 |
|
| 76 |
The GM parameterization aims to parameterise the ``advective'' or |
| 77 |
``transport'' effect of geostrophic eddies by means of a ``bolus'' |
| 78 |
velocity, $\bf{u}^*$. The divergence of this advective flux is added |
| 79 |
to the tracer tendency equation (on the rhs): |
| 80 |
\begin{equation} |
| 81 |
- \bf{\nabla} \cdot \tau \bf{u}^* |
| 82 |
\end{equation} |
| 83 |
|
| 84 |
The bolus velocity is defined as: |
| 85 |
\begin{eqnarray} |
| 86 |
u^* & = & - \partial_z F_x \\ |
| 87 |
v^* & = & - \partial_z F_y \\ |
| 88 |
w^* & = & \partial_x F_x + \partial_y F_y |
| 89 |
\end{eqnarray} |
| 90 |
where $F_x$ and $F_y$ are stream-functions with boundary conditions |
| 91 |
$F_x=F_y=0$ on upper and lower boundaries. The virtue of casting the |
| 92 |
bolus velocity in terms of these stream-functions is that they are |
| 93 |
automatically non-divergent ($\partial_x u^* + \partial_y v^* = - |
| 94 |
\partial_{xz} F_x - \partial_{yz} F_y = - \partial_z w^*$). $F_x$ and |
| 95 |
$F_y$ are specified in terms of the isoneutral slopes $S_x$ and $S_y$: |
| 96 |
\begin{eqnarray} |
| 97 |
F_x & = & \kappa_{GM} S_x \\ |
| 98 |
F_y & = & \kappa_{GM} S_y |
| 99 |
\end{eqnarray} |
| 100 |
This is the form of the GM parameterization as applied by Donabasaglu, |
| 101 |
1997, in MOM versions 1 and 2. |
| 102 |
|
| 103 |
\subsection{Griffies Skew Flux} |
| 104 |
|
| 105 |
Griffies notes that the discretisation of bolus velocities involves |
| 106 |
multiple layers of differencing and interpolation that potentially |
| 107 |
lead to noisy fields and computational modes. He pointed out that the |
| 108 |
bolus flux can be re-written in terms of a non-divergent flux and a |
| 109 |
skew-flux: |
| 110 |
\begin{eqnarray*} |
| 111 |
\bf{u}^* \tau |
| 112 |
& = & |
| 113 |
\left( \begin{array}{c} |
| 114 |
- \partial_z ( \kappa_{GM} S_x ) \tau \\ |
| 115 |
- \partial_z ( \kappa_{GM} S_y ) \tau \\ |
| 116 |
(\partial_x \kappa_{GM} S_x + \partial_y \kappa_{GM} S_y)\tau |
| 117 |
\end{array} \right) |
| 118 |
\\ |
| 119 |
& = & |
| 120 |
\left( \begin{array}{c} |
| 121 |
- \partial_z ( \kappa_{GM} S_x \tau) \\ |
| 122 |
- \partial_z ( \kappa_{GM} S_y \tau) \\ |
| 123 |
\partial_x ( \kappa_{GM} S_x \tau) + \partial_y ( \kappa_{GM} S_y) \tau) |
| 124 |
\end{array} \right) |
| 125 |
+ \left( \begin{array}{c} |
| 126 |
\kappa_{GM} S_x \partial_z \tau \\ |
| 127 |
\kappa_{GM} S_y \partial_z \tau \\ |
| 128 |
- \kappa_{GM} S_x \partial_x \tau - \kappa_{GM} S_y) \partial_y \tau |
| 129 |
\end{array} \right) |
| 130 |
\end{eqnarray*} |
| 131 |
The first vector is non-divergent and thus has no effect on the tracer |
| 132 |
field and can be dropped. The remaining flux can be written: |
| 133 |
\begin{equation} |
| 134 |
\bf{u}^* \tau = - \kappa_{GM} \bf{K}_{GM} \bf{\nabla} \tau |
| 135 |
\end{equation} |
| 136 |
where |
| 137 |
\begin{equation} |
| 138 |
\bf{K}_{GM} = |
| 139 |
\left( |
| 140 |
\begin{array}{ccc} |
| 141 |
0 & 0 & -S_x \\ |
| 142 |
0 & 0 & -S_y \\ |
| 143 |
S_x & S_y & 0 |
| 144 |
\end{array} |
| 145 |
\right) |
| 146 |
\end{equation} |
| 147 |
is an anti-symmetric tensor. |
| 148 |
|
| 149 |
This formulation of the GM parameterization involves fewer derivatives |
| 150 |
than the original and also involves only terms that already appear in |
| 151 |
the Redi mixing scheme. Indeed, a somewhat fortunate cancellation |
| 152 |
becomes apparent when we use the GM parameterization in conjunction |
| 153 |
with the Redi isoneutral mixing scheme: |
| 154 |
\begin{equation} |
| 155 |
\kappa_\rho \bf{K}_{Redi} \bf{\nabla} \tau |
| 156 |
- u^* \tau = |
| 157 |
( \kappa_\rho \bf{K}_{Redi} + \kappa_{GM} \bf{K}_{GM} ) \bf{\nabla} \tau |
| 158 |
\end{equation} |
| 159 |
In the instance that $\kappa_{GM} = \kappa_{\rho}$ then |
| 160 |
\begin{equation} |
| 161 |
\kappa_\rho \bf{K}_{Redi} + \kappa_{GM} \bf{K}_{GM} = |
| 162 |
\kappa_\rho |
| 163 |
\left( \begin{array}{ccc} |
| 164 |
1 & 0 & 0 \\ |
| 165 |
0 & 1 & 0 \\ |
| 166 |
2 S_x & 2 S_y & |S|^2 |
| 167 |
\end{array} |
| 168 |
\right) |
| 169 |
\end{equation} |
| 170 |
which differs from the variable laplacian diffusion tensor by only |
| 171 |
two non-zero elements in the $z$-row. |
| 172 |
|
| 173 |
\subsection{Variable $\kappa_{GM}$} |
| 174 |
|
| 175 |
Visbeck et al., 1996, suggest making the eddy coefficient, |
| 176 |
$\kappa_{GM}$, a function of the Eady growth rate, |
| 177 |
$|f|/\sqrt{Ri}$. The formula involves a non-dimensional constant, |
| 178 |
$\alpha$, and a length-scale $L$: |
| 179 |
\begin{displaymath} |
| 180 |
\kappa_{GM} = \alpha L^2 \overline{ \frac{|f|}{\sqrt{Ri}} }^z |
| 181 |
\end{displaymath} |
| 182 |
where the Eady growth rate has been depth averaged (indicated by the |
| 183 |
over-line). A local Richardson number is defined $Ri = N^2 / (\partial |
| 184 |
u/\partial z)^2$ which, when combined with thermal wind gives: |
| 185 |
\begin{displaymath} |
| 186 |
\frac{1}{Ri} = \frac{(\frac{\partial u}{\partial z})^2}{N^2} = |
| 187 |
\frac{ ( \frac{g}{f \rho_o} | {\bf \nabla} \sigma | )^2 }{N^2} = |
| 188 |
\frac{ M^4 }{ |f|^2 N^2 } |
| 189 |
\end{displaymath} |
| 190 |
where $M^2$ is defined $M^2 = \frac{g}{\rho_o} |{\bf \nabla} \sigma|$. |
| 191 |
Substituting into the formula for $\kappa_{GM}$ gives: |
| 192 |
\begin{displaymath} |
| 193 |
\kappa_{GM} = \alpha L^2 \overline{ \frac{M^2}{N} }^z = |
| 194 |
\alpha L^2 \overline{ \frac{M^2}{N^2} N }^z = |
| 195 |
\alpha L^2 \overline{ |S| N }^z |
| 196 |
\end{displaymath} |
| 197 |
|
| 198 |
|
| 199 |
\subsection{Tapering and stability} |
| 200 |
|
| 201 |
Experience with the GFDL model showed that the GM scheme has to be |
| 202 |
matched to the convective parameterization. This was originally |
| 203 |
expressed in connection with the introduction of the KPP boundary |
| 204 |
layer scheme (Large et al., 97) but infact, as subsequent experience |
| 205 |
with the MIT model has found, is necessary for any convective |
| 206 |
parameterization. |
| 207 |
|
| 208 |
\fbox{ \begin{minipage}{4.75in} |
| 209 |
{\em S/R GMREDI\_SLOPE\_LIMIT} ({\em |
| 210 |
pkg/gmredi/gmredi\_slope\_limit.F}) |
| 211 |
|
| 212 |
$\sigma_x, s_x$: {\bf SlopeX} (argument) |
| 213 |
|
| 214 |
$\sigma_y, s_y$: {\bf SlopeY} (argument) |
| 215 |
|
| 216 |
$\sigma_z$: {\bf dSigmadRReal} (argument) |
| 217 |
|
| 218 |
$z_\sigma^{*}$: {\bf dRdSigmaLtd} (argument) |
| 219 |
|
| 220 |
\end{minipage} } |
| 221 |
|
| 222 |
|
| 223 |
\subsubsection{Slope clipping} |
| 224 |
|
| 225 |
Deep convection sites and the mixed layer are indicated by |
| 226 |
homogenized, unstable or nearly unstable stratification. The slopes in |
| 227 |
such regions can be either infinite, very large with a sign reversal |
| 228 |
or simply very large. From a numerical point of view, large slopes |
| 229 |
lead to large variations in the tensor elements (implying large bolus |
| 230 |
flow) and can be numerically unstable. This was first reognized by |
| 231 |
Cox, 1987, who implemented ``slope clipping'' in the isopycnal mixing |
| 232 |
tensor. Here, the slope magnitude is simply restricted by an upper |
| 233 |
limit: |
| 234 |
\begin{eqnarray} |
| 235 |
|\nabla \sigma| & = & \sqrt{ \sigma_x^2 + \sigma_y^2 } \\ |
| 236 |
S_{lim} & = & - \frac{|\nabla \sigma|}{ S_{max} } |
| 237 |
\;\;\;\;\;\;\;\; \mbox{where $S_{max}$ is a parameter} \\ |
| 238 |
\sigma_z^\star & = & \min( \sigma_z , S_{lim} ) \\ |
| 239 |
{[s_x,s_y]} & = & - \frac{ [\sigma_x,\sigma_y] }{\sigma_z^\star} |
| 240 |
\end{eqnarray} |
| 241 |
Notice that this algorithm assumes stable stratification through the |
| 242 |
``min'' function. In the case where the fluid is well stratified ($\sigma_z < S_{lim}$) then the slopes evaluate to: |
| 243 |
\begin{equation} |
| 244 |
{[s_x,s_y]} = - \frac{ [\sigma_x,\sigma_y] }{\sigma_z} |
| 245 |
\end{equation} |
| 246 |
while in the limited regions ($\sigma_z > S_{lim}$) the slopes become: |
| 247 |
\begin{equation} |
| 248 |
{[s_x,s_y]} = \frac{ [\sigma_x,\sigma_y] }{|\nabla \sigma|/S_{max}} |
| 249 |
\end{equation} |
| 250 |
so that the slope magnitude is limited $\sqrt{s_x^2 + s_y^2} = |
| 251 |
S_{max}$. |
| 252 |
|
| 253 |
The slope clipping scheme is activated in the model by setting {\bf |
| 254 |
GM\_tap\-er\_scheme = 'clipping'} in {\em data.gmredi}. |
| 255 |
|
| 256 |
Even using slope clipping, it is normally the case that the vertical |
| 257 |
diffusion term (with coefficient $\kappa_\rho{\bf K}_{33} = |
| 258 |
\kappa_\rho S_{max}^2$) is large and must be time-stepped using an |
| 259 |
implicit procedure (see section on discretisation and code later). |
| 260 |
Fig. \ref{fig-mixedlayer} shows the mixed layer depth resulting from |
| 261 |
a) using the GM scheme with clipping and b) no GM scheme (horizontal |
| 262 |
diffusion). The classic result of dramatically reduced mixed layers is |
| 263 |
evident. Indeed, the deep convection sites to just one or two points |
| 264 |
each and are much shallower than we might prefer. This, it turns out, |
| 265 |
is due to the over zealous restratification due to the bolus transport |
| 266 |
parameterization. Limiting the slopes also breaks the adiabatic nature |
| 267 |
of the GM/Redi parameterization, re-introducing diabatic fluxes in |
| 268 |
regions where the limiting is in effect. |
| 269 |
|
| 270 |
\subsubsection{Tapering: Gerdes, Koberle and Willebrand, Clim. Dyn. 1991} |
| 271 |
|
| 272 |
The tapering scheme used in Gerdes et al., 1991, (\cite{gkw91}) |
| 273 |
addressed two issues with the clipping method: the introduction of |
| 274 |
large vertical fluxes in addition to convective adjustment fluxes is |
| 275 |
avoided by tapering the GM/Redi slopes back to zero in |
| 276 |
low-stratification regions; the adjustment of slopes is replaced by a |
| 277 |
tapering of the entire GM/Redi tensor. This means the direction of |
| 278 |
fluxes is unaffected as the amplitude is scaled. |
| 279 |
|
| 280 |
The scheme inserts a tapering function, $f_1(S)$, in front of the |
| 281 |
GM/Redi tensor: |
| 282 |
\begin{equation} |
| 283 |
f_1(S) = \min \left[ 1, \left( \frac{S_{max}}{|S|}\right)^2 \right] |
| 284 |
\end{equation} |
| 285 |
where $S_{max}$ is the maximum slope you want allowed. Where the |
| 286 |
slopes, $|S|<S_{max}$ then $f_1(S) = 1$ and the tensor is un-tapered |
| 287 |
but where $|S| \ge S_{max}$ then $f_1(S)$ scales down the tensor so |
| 288 |
that the effective vertical diffusivity term $\kappa f_1(S) |S|^2 = |
| 289 |
\kappa S_{max}^2$. |
| 290 |
|
| 291 |
The GKW tapering scheme is activated in the model by setting {\bf |
| 292 |
GM\_tap\-er\_scheme = 'gkw91'} in {\em data.gmredi}. |
| 293 |
|
| 294 |
\subsection{Tapering: Danabasoglu and McWilliams, J. Clim. 1995} |
| 295 |
|
| 296 |
The tapering scheme used by Danabasoglu and McWilliams, 1995, |
| 297 |
\cite{DM95}, followed a similar procedure but used a different |
| 298 |
tapering function, $f_1(S)$: |
| 299 |
\begin{equation} |
| 300 |
f_1(S) = \frac{1}{2} \left( 1+\tanh \left[ \frac{S_c - |S|}{S_d} \right] \right) |
| 301 |
\end{equation} |
| 302 |
where $S_c = 0.004$ is a cut-off slope and $S_d=0.001$ is a scale over |
| 303 |
which the slopes are smoothly tapered. Functionally, the operates in |
| 304 |
the same way as the GKW91 scheme but has a substantially lower |
| 305 |
cut-off, turning off the GM/Redi SGS parameterization for weaker |
| 306 |
slopes. |
| 307 |
|
| 308 |
The DM tapering scheme is activated in the model by setting {\bf |
| 309 |
GM\_tap\-er\_scheme = 'dm95'} in {\em data.gmredi}. |
| 310 |
|
| 311 |
\subsection{Tapering: Large, Danabasoglu and Doney, JPO 1997} |
| 312 |
|
| 313 |
The tapering used in Large et al., 1997, \cite{ldd97}, is based on the |
| 314 |
DM95 tapering scheme, but also tapers the scheme with an additional |
| 315 |
function of height, $f_2(z)$, so that the GM/Redi SGS fluxes are |
| 316 |
reduced near the surface: |
| 317 |
\begin{equation} |
| 318 |
f_2(S) = \frac{1}{2} \left( 1 + \sin(\pi \frac{z}{D} - \pi/2)\right) |
| 319 |
\end{equation} |
| 320 |
where $D = L_\rho |S|$ is a depth-scale and $L_\rho=c/f$ with |
| 321 |
$c=2$~m~s$^{-1}$. This tapering with height was introduced to fix |
| 322 |
some spurious interaction with the mixed-layer KPP parameterization. |
| 323 |
|
| 324 |
The LDD tapering scheme is activated in the model by setting {\bf |
| 325 |
GM\_tap\-er\_scheme = 'ldd97'} in {\em data.gmredi}. |
| 326 |
|
| 327 |
|
| 328 |
|
| 329 |
\begin{figure} |
| 330 |
%\includegraphics{mixedlayer-cox.eps} |
| 331 |
%\includegraphics{mixedlayer-diff.eps} |
| 332 |
\caption{Mixed layer depth using GM parameterization with a) Cox slope |
| 333 |
clipping and for comparison b) using horizontal constant diffusion.} |
| 334 |
\ref{fig-mixedlayer} |
| 335 |
\end{figure} |
| 336 |
|
| 337 |
\begin{figure} |
| 338 |
%\includegraphics{slopelimits.eps} |
| 339 |
\caption{Effective slope as a function of ``true'' slope using a) Cox |
| 340 |
slope clipping, b) GKW91 limiting, c) DM95 limiting and d) LDD97 |
| 341 |
limiting.} |
| 342 |
\end{figure} |
| 343 |
|
| 344 |
|
| 345 |
%\begin{figure} |
| 346 |
%\includegraphics{coxslope.eps} |
| 347 |
%\includegraphics{gkw91slope.eps} |
| 348 |
%\includegraphics{dm95slope.eps} |
| 349 |
%\includegraphics{ldd97slope.eps} |
| 350 |
%\caption{Effective slope magnitude at 100~m depth evaluated using a) |
| 351 |
%Cox slope clipping, b) GKW91 limiting, c) DM95 limiting and d) LDD97 |
| 352 |
%limiting.} |
| 353 |
%\end{figure} |
| 354 |
|
| 355 |
\section{Discretisation and code} |
| 356 |
|
| 357 |
This is the old documentation.....has to be brought upto date with MITgcm. |
| 358 |
|
| 359 |
|
| 360 |
The Gent-McWilliams-Redi parameterization is implemented through the |
| 361 |
package ``gmredi''. There are two necessary calls to ``gmredi'' |
| 362 |
routines other than initialization; 1) to calculate the slope tensor |
| 363 |
as a function of the current model state ({\bf gmredi\_calc\_tensor}) |
| 364 |
and 2) evaluation of the lateral and vertical fluxes due to gradients |
| 365 |
along isopycnals or bolus transport ({\bf gmredi\_xtransport}, {\bf |
| 366 |
gmredi\_ytransport} and {\bf gmredi-rtransport}). |
| 367 |
|
| 368 |
Each element of the tensor is discretised to be adiabatic and so that |
| 369 |
there would be no flux if the gmredi operator is applied to buoyancy. |
| 370 |
To acheive this we have to consider both these constraints for each |
| 371 |
row of the tensor, each row corresponding to a 'u', 'v' or 'w' point |
| 372 |
on the model grid. |
| 373 |
|
| 374 |
The code that implements the Redi/GM/Griffies schemes involves an |
| 375 |
original core routine {\bf inc\_tracer()} that is used to calculate |
| 376 |
the tendency in the tracers (namely, salt and potential temperature) |
| 377 |
and a new routine {\bf RediTensor()} that calculates the tensor |
| 378 |
components and $\kappa_{GM}$. |
| 379 |
|
| 380 |
\subsection{subroutine RediTensor()} |
| 381 |
|
| 382 |
{\small |
| 383 |
\begin{verbatim} |
| 384 |
subroutine RediTensor(Temp,Salt,Kredigm,K31,K32,K33, nIter,DumpFlag) |
| 385 |
|---in--| |-------out-------| |
| 386 |
! Input |
| 387 |
real Temp(Nx,Ny,Nz) ! Potential temperature |
| 388 |
real Salt(Nx,Ny,Nz) ! Salinity |
| 389 |
! Output |
| 390 |
real Kredigm(Nx,Ny,Nz) ! Redi/GM eddy coefficient |
| 391 |
real K31(Nx,Ny,Nz) ! Redi/GM (3,1) tensor component |
| 392 |
real K32(Nx,Ny,Nz) ! Redi/GM (3,2) tensor component |
| 393 |
real K33(Nx,Ny,Nz) ! Redi/GM (3,3) tensor component |
| 394 |
! Auxiliary input |
| 395 |
integer nIter ! interation/time-step number |
| 396 |
logical DumpFlag ! flag to indicate routine should ``dump'' |
| 397 |
\end{verbatim} |
| 398 |
} |
| 399 |
|
| 400 |
The subroutine {\bf RediTensor()} is called from {\bf model()} with |
| 401 |
input arguments $T$ and $S$. It returns the 3D-arrays {\tt Kredigm}, |
| 402 |
{\t K31}, {\tt K32} and {\tt K33} which represent $\kappa_{GM}$ (at |
| 403 |
$T/S$ points) and the three components of the bottom row in the |
| 404 |
Redi/GM tensor; $2 S_x$, $2 S_y$ and $|S|^2$ respectively, all at $W$ |
| 405 |
points. |
| 406 |
|
| 407 |
The discretisations and algorithm within {\bf RediTensor()} are as |
| 408 |
follows. The routine first calculates the locally reference potential |
| 409 |
density $\sigma_\theta$ from $T$ and $S$ and calculates the potential |
| 410 |
density gradients in subroutine {\bf gradSigma()}: |
| 411 |
|
| 412 |
\centerline{\begin{tabular}{ccl} |
| 413 |
& & \\ |
| 414 |
Array & Grid-point & Definition \\ |
| 415 |
{\tt SigX} & U & |
| 416 |
$\sigma_x = \frac{1}{\Delta x} \delta_x \sigma|_{z(k)}$ |
| 417 |
\\ |
| 418 |
{\tt SigY} & V & |
| 419 |
$\sigma_y = \frac{1}{\Delta y} \delta_y \sigma|_{z(k)}$ |
| 420 |
\\ |
| 421 |
{\tt SigZ} & W & |
| 422 |
$\sigma_z = \frac{1}{\Delta z} |
| 423 |
[ \sigma|_{z(k)}(k-1/2) - \sigma|_{z(k)}(k+1/2) ]$ |
| 424 |
\\ |
| 425 |
\\ |
| 426 |
\end{tabular}} |
| 427 |
|
| 428 |
Note that $\sigma_z$ is the static stability because the potential |
| 429 |
densities are referenced to the same reference level ($W$-level). |
| 430 |
|
| 431 |
The next step calculates the three tensor components {\tt K13}, {\tt |
| 432 |
K23} and {\tt K33} in subroutine {\bf KtensorWface()}. First, the |
| 433 |
lateral gradients $\sigma_x$ and $\sigma_y$ are interpolated to the |
| 434 |
$W$ points and stored in intermediate variables: |
| 435 |
\begin{eqnarray*} |
| 436 |
\mbox{\tt Sx} & = & \overline{ \overline{ \sigma_x }^x }^z \\ |
| 437 |
\mbox{\tt Sy} & = & \overline{ \overline{ \sigma_y }^y }^z |
| 438 |
\end{eqnarray*} |
| 439 |
Next, the magnitude of ${\bf \nabla}_z \sigma$ is stored in an intermediate |
| 440 |
variable: |
| 441 |
\begin{displaymath} |
| 442 |
\mbox{\tt Sxy2} = \sqrt{ {\tt Sx}^2 + {\tt Sy}^2 } |
| 443 |
\end{displaymath} |
| 444 |
The stratification ($\sigma_z$) is ``checked'' such that the slope |
| 445 |
vector has magnitude less than or equal to {\tt Smax} and stored in |
| 446 |
an intermediate variable: |
| 447 |
\begin{displaymath} |
| 448 |
\mbox{\tt Sz} = \max ( \sigma_z , - \mbox{\tt Sxy2/Smax} ) |
| 449 |
\end{displaymath} |
| 450 |
This guarantees stability and at the same time retains the lateral |
| 451 |
orientation of the slope vector. The tensor components are then calculated: |
| 452 |
\begin{eqnarray*} |
| 453 |
\mbox{\tt K13} & = & -2 {\tt Sx/Sz} \\ |
| 454 |
\mbox{\tt K23} & = & -2 {\tt Sx/Sz} \\ |
| 455 |
\mbox{\tt K33} & = & ({\tt Sx/Sz})^2 + ({\tt Sy/Sz})^2 |
| 456 |
\end{eqnarray*} |
| 457 |
|
| 458 |
Finally, {\tt Kredigm} ($\kappa_{GM}$) is calculated in subroutine |
| 459 |
{\bf GMRediCoefficient()}. First, all the gradients are interpolated |
| 460 |
to the $T/S$ points and stored in intermediate variables: |
| 461 |
\begin{eqnarray*} |
| 462 |
\mbox{\tt Sx} & = & \overline{ \sigma_x }^x \\ |
| 463 |
\mbox{\tt Sy} & = & \overline{ \sigma_y }^y \\ |
| 464 |
\mbox{\tt Sz} & = & \overline{ \sigma_z }^z |
| 465 |
\end{eqnarray*} |
| 466 |
Again, a nominal stratification is found by ``check'' the magnitude of |
| 467 |
the slope vector but here is converted to a Brunt-Vasala frequency: |
| 468 |
\begin{eqnarray*} |
| 469 |
{\tt M2} & = & \sqrt{ {\tt Sx}^2 + {\tt Sy}^2} \\ |
| 470 |
{\tt N2} & = & - \frac{g}{\rho_o} \max ( {\tt Sz} , -{\tt M2 / Smax} |
| 471 |
\end{eqnarray*} |
| 472 |
The magnitude of the slope is then $|S| = {\tt M2}/{\tt N2}$. The Eady |
| 473 |
growth rate is defined as $|f|/\sqrt(Ri) = |S| N$ and is calculated |
| 474 |
as: |
| 475 |
\begin{displaymath} |
| 476 |
{\tt FrRi} = \frac{\tt M2}{\tt N2} ( - \frac{g}{\rho} {\tt Sz} ) |
| 477 |
\end{displaymath} |
| 478 |
The Eady growth rate is then averaged over the upper layers (about |
| 479 |
1100m) and $\kappa_{GM}$ specified from this 2D-variable: |
| 480 |
\begin{displaymath} |
| 481 |
{\tt Kredigm} = 0.02 * (200d3 **2) * {\tt FrRi} |
| 482 |
\end{displaymath} |
| 483 |
|
| 484 |
\subsection{subroutine inc\_tracer()} |
| 485 |
|
| 486 |
{\bf inc\-tracer()} is called from {\bf model()} and has {\em four |
| 487 |
new} arguments: |
| 488 |
\begin{verbatim} |
| 489 |
subroutine inc_tracer( ...,Kredigm,K31,K32,K33, ... ) |
| 490 |
real Kredigm(Nx,Ny,Nz) ! Eddy coefficient |
| 491 |
real K31(Nx,Ny,Nz) ! (3,1) tensor coefficient |
| 492 |
real K32(Nx,Ny,Nz) ! (3,2) tensor coefficient |
| 493 |
real K33(Nx,Ny,Nz) ! (3,3) tensor coefficient |
| 494 |
\end{verbatim} |
| 495 |
|
| 496 |
Within the routine, the lateral fluxes, {\tt fluxWest} and {\tt |
| 497 |
fluxSouth}, in the Redi/GM/Griffies scheme are very similar to the |
| 498 |
conventional horizontal diffusion terms except that the diffusion |
| 499 |
coefficient is a function of space and must be interpolated from the |
| 500 |
$T/S$ points: |
| 501 |
\begin{eqnarray*} |
| 502 |
{\tt fluxWest}(\tau) & = & \ldots + |
| 503 |
\overline{\tt Kredigm}^x \partial_x \tau \\ |
| 504 |
{\tt fluxSouth}(\tau) & = & \ldots + |
| 505 |
\overline{\tt Kredigm}^y \partial_y \tau |
| 506 |
\end{eqnarray*} |
| 507 |
|
| 508 |
The Redi/GM/Griffies scheme adds three terms to the vertical flux |
| 509 |
({\tt fluxUpper}) in the tracer equation. It is discretise simply: |
| 510 |
\begin{displaymath} |
| 511 |
{\tt fluxUpper}(\tau) = \ldots + \overline{\tt Kredigm}^z |
| 512 |
\left( |
| 513 |
{\tt K13} \overline{\partial_x \tau}^{xz} + |
| 514 |
{\tt K23} \overline{\partial_y \tau}^{yz} + |
| 515 |
{\tt K33} \partial_z \tau |
| 516 |
\right) |
| 517 |
\end{displaymath} |
| 518 |
On boundaries, {\tt fluxUpper} is set to zero. |
| 519 |
|
| 520 |
|