--- manual/s_phys_pkgs/text/gmredi.tex	2001/09/27 19:43:36	1.1
+++ manual/s_phys_pkgs/text/gmredi.tex	2001/09/28 14:09:56	1.2
@@ -170,6 +170,23 @@
 which differs from the variable laplacian diffusion tensor by only
 two non-zero elements in the $z$-row.
 
+\fbox{ \begin{minipage}{4.75in}
+{\em S/R GMREDI\_CALC\_TENSOR} ({\em pkg/gmredi/gmredi\_calc\_tensor.F})
+
+$\sigma_x$: {\bf SlopeX} (argument on entry)
+
+$\sigma_y$: {\bf SlopeY} (argument on entry)
+
+$\sigma_z$: {\bf SlopeY} (argument)
+
+$S_x$: {\bf SlopeX} (argument on exit)
+
+$S_y$: {\bf SlopeY} (argument on exit)
+
+\end{minipage} }
+
+
+
 \subsection{Variable $\kappa_{GM}$}
 
 Visbeck et al., 1996, suggest making the eddy coefficient,
@@ -219,6 +236,23 @@
 
 \end{minipage} }
 
+\begin{figure}
+\begin{center}
+\resizebox{5.0in}{3.0in}{\includegraphics{part6/tapers.eps}}
+\end{center}
+\caption{Taper functions used in GKW91 and DM95.}
+\label{fig:tapers}
+\end{figure}
+
+\begin{figure}
+\begin{center}
+\resizebox{5.0in}{3.0in}{\includegraphics{part6/effective_slopes.eps}}
+\end{center}
+\caption{Effective slope as a function of ``true'' slope using Cox
+slope clipping, GKW91 limiting and DM95 limiting.}
+\label{fig:effective_slopes}
+\end{figure}
+
 
 \subsubsection{Slope clipping}
 
@@ -326,6 +360,7 @@
 
 
 
+
 \begin{figure}
 %\includegraphics{mixedlayer-cox.eps}
 %\includegraphics{mixedlayer-diff.eps}
@@ -334,187 +369,6 @@
 \ref{fig-mixedlayer}
 \end{figure}
 
-\begin{figure}
-%\includegraphics{slopelimits.eps}
-\caption{Effective slope as a function of ``true'' slope using a) Cox
-slope clipping, b) GKW91 limiting, c) DM95 limiting and d) LDD97
-limiting.}
-\end{figure}
 
 
-%\begin{figure}
-%\includegraphics{coxslope.eps}
-%\includegraphics{gkw91slope.eps}
-%\includegraphics{dm95slope.eps}
-%\includegraphics{ldd97slope.eps}
-%\caption{Effective slope magnitude at 100~m depth evaluated using a)
-%Cox slope clipping, b) GKW91 limiting, c) DM95 limiting and d) LDD97
-%limiting.}
-%\end{figure}
-
-\section{Discretisation and code}
-
-This is the old documentation.....has to be brought upto date with MITgcm.
-
-
-The Gent-McWilliams-Redi parameterization is implemented through the
-package ``gmredi''. There are two necessary calls to ``gmredi''
-routines other than initialization; 1) to calculate the slope tensor
-as a function of the current model state ({\bf gmredi\_calc\_tensor})
-and 2) evaluation of the lateral and vertical fluxes due to gradients
-along isopycnals or bolus transport ({\bf gmredi\_xtransport}, {\bf
-gmredi\_ytransport} and {\bf gmredi-rtransport}).
-
-Each element of the tensor is discretised to be adiabatic and so that
-there would be no flux if the gmredi operator is applied to buoyancy.
-To acheive this we have to consider both these constraints for each
-row of the tensor, each row corresponding to a 'u', 'v' or 'w' point
-on the model grid. 
-
-The code that implements the Redi/GM/Griffies schemes involves an
-original core routine {\bf inc\_tracer()} that is used to calculate
-the tendency in the tracers (namely, salt and potential temperature)
-and a new routine {\bf RediTensor()} that calculates the tensor
-components and $\kappa_{GM}$.
-
-\subsection{subroutine RediTensor()}
-
-{\small
-\begin{verbatim}
-subroutine RediTensor(Temp,Salt,Kredigm,K31,K32,K33, nIter,DumpFlag)
-                      |---in--| |-------out-------|
-! Input
-real Temp(Nx,Ny,Nz)     ! Potential temperature
-real Salt(Nx,Ny,Nz)     ! Salinity
-! Output
-real Kredigm(Nx,Ny,Nz)  ! Redi/GM eddy coefficient
-real K31(Nx,Ny,Nz)      ! Redi/GM (3,1) tensor component
-real K32(Nx,Ny,Nz)      ! Redi/GM (3,2) tensor component
-real K33(Nx,Ny,Nz)      ! Redi/GM (3,3) tensor component
-! Auxiliary input
-integer nIter           ! interation/time-step number
-logical DumpFlag        ! flag to indicate routine should ``dump''
-\end{verbatim}
-}
-
-The subroutine {\bf RediTensor()} is called from {\bf model()} with
-input arguments $T$ and $S$. It returns the 3D-arrays {\tt Kredigm},
-{\t K31}, {\tt K32} and {\tt K33} which represent $\kappa_{GM}$ (at
-$T/S$ points) and the three components of the bottom row in the
-Redi/GM tensor; $2 S_x$, $2 S_y$ and $|S|^2$ respectively, all at $W$
-points.
-
-The discretisations and algorithm within {\bf RediTensor()} are as
-follows.  The routine first calculates the locally reference potential
-density $\sigma_\theta$ from $T$ and $S$ and calculates the potential
-density gradients in subroutine {\bf gradSigma()}:
-
-\centerline{\begin{tabular}{ccl}
-& & \\
-Array & Grid-point & Definition \\
-{\tt SigX} & U &
-$\sigma_x = \frac{1}{\Delta x} \delta_x \sigma|_{z(k)}$
-\\
-{\tt SigY} & V &
-$\sigma_y = \frac{1}{\Delta y} \delta_y \sigma|_{z(k)}$
-\\
-{\tt SigZ} & W &
-$\sigma_z = \frac{1}{\Delta z}
-[ \sigma|_{z(k)}(k-1/2) - \sigma|_{z(k)}(k+1/2) ]$
-\\
-\\
-\end{tabular}}
-
-Note that $\sigma_z$ is the static stability because the potential
-densities are referenced to the same reference level ($W$-level).
-
-The next step calculates the three tensor components {\tt K13}, {\tt
-K23} and {\tt K33} in subroutine {\bf KtensorWface()}. First, the
-lateral gradients $\sigma_x$ and $\sigma_y$ are interpolated to the
-$W$ points and stored in intermediate variables:
-\begin{eqnarray*}
-\mbox{\tt Sx} & = & \overline{ \overline{ \sigma_x }^x }^z \\
-\mbox{\tt Sy} & = & \overline{ \overline{ \sigma_y }^y }^z
-\end{eqnarray*}
-Next, the magnitude of ${\bf \nabla}_z \sigma$ is stored in an intermediate
-variable:
-\begin{displaymath}
-\mbox{\tt Sxy2} = \sqrt{ {\tt Sx}^2 + {\tt Sy}^2 }
-\end{displaymath}
-The stratification ($\sigma_z$) is ``checked'' such that the slope
-vector has magnitude less than or equal to {\tt Smax} and stored in
-an intermediate variable:
-\begin{displaymath}
-\mbox{\tt Sz} = \max ( \sigma_z , - \mbox{\tt Sxy2/Smax} )
-\end{displaymath}
-This guarantees stability and at the same time retains the lateral
-orientation of the slope vector. The tensor components are then calculated:
-\begin{eqnarray*}
-\mbox{\tt K13} & = & -2 {\tt Sx/Sz} \\
-\mbox{\tt K23} & = & -2 {\tt Sx/Sz} \\
-\mbox{\tt K33} & = & ({\tt Sx/Sz})^2 + ({\tt Sy/Sz})^2
-\end{eqnarray*}
-
-Finally, {\tt Kredigm} ($\kappa_{GM}$) is calculated in subroutine
-{\bf GMRediCoefficient()}. First, all the gradients are interpolated
-to the $T/S$ points and stored in intermediate variables:
-\begin{eqnarray*}
-\mbox{\tt Sx} & = & \overline{ \sigma_x }^x \\
-\mbox{\tt Sy} & = & \overline{ \sigma_y }^y \\
-\mbox{\tt Sz} & = & \overline{ \sigma_z }^z
-\end{eqnarray*}
-Again, a nominal stratification is found by ``check'' the magnitude of
-the slope vector but here is converted to a Brunt-Vasala frequency:
-\begin{eqnarray*}
-{\tt M2} & = & \sqrt{ {\tt Sx}^2 + {\tt Sy}^2} \\
-{\tt N2} & = & - \frac{g}{\rho_o} \max ( {\tt Sz} , -{\tt M2 / Smax}
-\end{eqnarray*}
-The magnitude of the slope is then $|S| = {\tt M2}/{\tt N2}$. The Eady
-growth rate is defined as $|f|/\sqrt(Ri) = |S| N$ and is calculated
-as:
-\begin{displaymath}
-{\tt FrRi} = \frac{\tt M2}{\tt N2} ( - \frac{g}{\rho} {\tt Sz} )
-\end{displaymath}
-The Eady growth rate is then averaged over the upper layers (about
-1100m) and $\kappa_{GM}$ specified from this 2D-variable:
-\begin{displaymath}
-{\tt Kredigm} = 0.02 * (200d3 **2) * {\tt FrRi}
-\end{displaymath}
-
-\subsection{subroutine inc\_tracer()}
-
-{\bf inc\-tracer()} is called from {\bf model()} and has {\em four
-new} arguments:
-\begin{verbatim}
-subroutine inc_tracer( ...,Kredigm,K31,K32,K33, ... )
-real Kredigm(Nx,Ny,Nz)  ! Eddy coefficient
-real K31(Nx,Ny,Nz)      ! (3,1) tensor coefficient
-real K32(Nx,Ny,Nz)      ! (3,2) tensor coefficient
-real K33(Nx,Ny,Nz)      ! (3,3) tensor coefficient
-\end{verbatim}
-
-Within the routine, the lateral fluxes, {\tt fluxWest} and {\tt
-fluxSouth}, in the Redi/GM/Griffies scheme are very similar to the
-conventional horizontal diffusion terms except that the diffusion
-coefficient is a function of space and must be interpolated from the
-$T/S$ points:
-\begin{eqnarray*}
-{\tt fluxWest}(\tau) & = & \ldots +
-\overline{\tt Kredigm}^x \partial_x \tau \\
-{\tt fluxSouth}(\tau) & = & \ldots +
-\overline{\tt Kredigm}^y \partial_y \tau
-\end{eqnarray*}
-
-The Redi/GM/Griffies scheme adds three terms to the vertical flux
-({\tt fluxUpper}) in the tracer equation. It is discretise simply:
-\begin{displaymath}
-{\tt fluxUpper}(\tau) = \ldots + \overline{\tt Kredigm}^z 
-\left( 
-{\tt K13} \overline{\partial_x \tau}^{xz} +
-{\tt K23} \overline{\partial_y \tau}^{yz} +
-{\tt K33} \partial_z \tau
-\right)
-\end{displaymath}
-On boundaries, {\tt fluxUpper} is set to zero.
-
 
