--- manual/s_algorithm/text/spatial-discrete.tex 2001/08/08 22:19:02 1.2 +++ manual/s_algorithm/text/spatial-discrete.tex 2001/08/09 19:48:39 1.4 @@ -1,4 +1,4 @@ -% $Header: /home/ubuntu/mnt/e9_copy/manual/s_algorithm/text/spatial-discrete.tex,v 1.2 2001/08/08 22:19:02 adcroft Exp $ +% $Header: /home/ubuntu/mnt/e9_copy/manual/s_algorithm/text/spatial-discrete.tex,v 1.4 2001/08/09 19:48:39 adcroft Exp $ % $Name: $ \section{Spatial discretization of the dynamical equations} @@ -38,25 +38,52 @@ The finite volume method is used to discretize the equations in space. The expression ``finite volume'' actually has two meanings; one -involves invocation of the weak formulation (e.g. integral -formulation) and the other involves non-linear expressions for -interpolation of data (e.g. flux limiters). We use both but they can -and will be ddiscussed seperately. The finite volume method discretizes by invoking the weak formulation of the equations or integral form. For example, the 1-D advection-diffusion equation: +is the method of cut or instecting boundaries (shaved or lopped cells +in our terminology) and the other is non-linear interpolation methods +that can deal with non-smooth solutions such as shocks (i.e. flux +limiters for advection). Both make use of the integral form of the +conservation laws to which the {\it weak solution} is a solution on +each finite volume of (sub-domain). The weak solution can be +constructed outof piece-wise constant elements or be +differentiable. The differentiable equations can not be satisfied by +piece-wise constant functions. + +As an example, the 1-D constant coefficient advection-diffusion +equation: \begin{displaymath} \partial_t \theta + \partial_x ( u \theta - \kappa \partial_x \theta ) = 0 \end{displaymath} -can be discretized by integrating of finite lengths $\Delta x$: +can be discretized by integrating over finite sub-domains, i.e. +the lengths $\Delta x_i$: \begin{displaymath} \Delta x \partial_t \theta + \delta_i ( F ) = 0 \end{displaymath} -is exact but where the flux +is exact if $\theta(x)$ is peice-wise constant over the interval +$\Delta x_i$ or more generally if $\theta_i$ is defined as the average +over the interval $\Delta x_i$. + +The flux, $F_{i-1/2}$, must be approximated: \begin{displaymath} F = u \overline{\theta} - \frac{\kappa}{\Delta x_c} \partial_i \theta \end{displaymath} -is approximate. The method for obtained $\overline{\theta}$ is -unspecified and non-lienar finite volume methods can be invoked. - -.... INCOMPLETE +and this is where truncation errors can enter the solution. The +method for obtaining $\overline{\theta}$ is unspecified and a wide +range of possibilities exist including centered and upwind +interpolation, polynomial fits based on the the volume average +definitions of quantities and non-linear interpolation such as +flux-limiters. + +Choosing simple centered second-order interpolation and differencing +recovers the same ODE's resulting from finite differencing for the +interior of a fluid. Differences arise at boundaries where a boundary +is not positioned on a regular or smoothly varying grid. This method +is used to represent the topography using lopped cell, see +\cite{Adcroft98}. Subtle difference also appear in more than one +dimension away from boundaries. This happens because the each +direction is discretized independantly in the finite difference method +while the integrating over finite volume implicitly treats all +directions simultaneously. Illustration of this is given in +\cite{Adcroft02}. \subsection{C grid staggering of variables} @@ -122,65 +149,66 @@ coordinate systems is to initialize the grid data (discriptors) appropriately. -\marginpar{Caution!} In the following, we refer to the orientation of quantities on the computational grid using geographic terminology such as points of the -compass. This is purely for convenience but should note be confused +compass. +\marginpar{Caution!} +This is purely for convenience but should note be confused with the actual geographic orientation of model quantities. -\marginpar{$A_c$: {\bf rAc}} -\marginpar{$\Delta x_g$: {\bf DXg}} -\marginpar{$\Delta y_g$: {\bf DYg}} Fig.~\ref{fig:hgrid}a shows the tracer cell (synonymous with the continuity cell). The length of the southern edge, $\Delta x_g$, western edge, $\Delta y_g$ and surface area, $A_c$, presented in the -vertical are stored in arrays {\bf DXg}, {\bf DYg} and {\bf rAc}. The -``g'' suffix indicates that the lengths are along the defining grid -boundaries. The ``c'' suffix associates the quantity with the cell -centers. The quantities are staggered in space and the indexing is -such that {\bf DXg(i,j)} is positioned to the south of {\bf rAc(i,j)} -and {\bf DYg(i,j)} positioned to the west. +vertical are stored in arrays {\bf DXg}, {\bf DYg} and {\bf rAc}. +\marginpar{$A_c$: {\bf rAc}} +\marginpar{$\Delta x_g$: {\bf DXg}} +\marginpar{$\Delta y_g$: {\bf DYg}} +The ``g'' suffix indicates that the lengths are along the defining +grid boundaries. The ``c'' suffix associates the quantity with the +cell centers. The quantities are staggered in space and the indexing +is such that {\bf DXg(i,j)} is positioned to the south of {\bf +rAc(i,j)} and {\bf DYg(i,j)} positioned to the west. -\marginpar{$A_\zeta$: {\bf rAz}} -\marginpar{$\Delta x_c$: {\bf DXc}} -\marginpar{$\Delta y_c$: {\bf DYc}} Fig.~\ref{fig:hgrid}b shows the vorticity cell. The length of the southern edge, $\Delta x_c$, western edge, $\Delta y_c$ and surface area, $A_\zeta$, presented in the vertical are stored in arrays {\bf -DXg}, {\bf DYg} and {\bf rAz}. The ``z'' suffix indicates that the -lengths are measured between the cell centers and the ``$\zeta$'' suffix -associates points with the vorticity points. The quantities are -staggered in space and the indexing is such that {\bf DXc(i,j)} is -positioned to the north of {\bf rAc(i,j)} and {\bf DYc(i,j)} positioned -to the east. +DXg}, {\bf DYg} and {\bf rAz}. +\marginpar{$A_\zeta$: {\bf rAz}} +\marginpar{$\Delta x_c$: {\bf DXc}} +\marginpar{$\Delta y_c$: {\bf DYc}} +The ``z'' suffix indicates that the lengths are measured between the +cell centers and the ``$\zeta$'' suffix associates points with the +vorticity points. The quantities are staggered in space and the +indexing is such that {\bf DXc(i,j)} is positioned to the north of +{\bf rAc(i,j)} and {\bf DYc(i,j)} positioned to the east. -\marginpar{$A_w$: {\bf rAw}} -\marginpar{$\Delta x_v$: {\bf DXv}} -\marginpar{$\Delta y_f$: {\bf DYf}} Fig.~\ref{fig:hgrid}c shows the ``u'' or western (w) cell. The length of the southern edge, $\Delta x_v$, eastern edge, $\Delta y_f$ and surface area, $A_w$, presented in the vertical are stored in arrays -{\bf DXv}, {\bf DYf} and {\bf rAw}. The ``v'' suffix indicates that -the length is measured between the v-points, the ``f'' suffix -indicates that the length is measured between the (tracer) cell faces -and the ``w'' suffix associates points with the u-points (w stands for -west). The quantities are staggered in space and the indexing is such -that {\bf DXv(i,j)} is positioned to the south of {\bf rAw(i,j)} and -{\bf DYf(i,j)} positioned to the east. +{\bf DXv}, {\bf DYf} and {\bf rAw}. +\marginpar{$A_w$: {\bf rAw}} +\marginpar{$\Delta x_v$: {\bf DXv}} +\marginpar{$\Delta y_f$: {\bf DYf}} +The ``v'' suffix indicates that the length is measured between the +v-points, the ``f'' suffix indicates that the length is measured +between the (tracer) cell faces and the ``w'' suffix associates points +with the u-points (w stands for west). The quantities are staggered in +space and the indexing is such that {\bf DXv(i,j)} is positioned to +the south of {\bf rAw(i,j)} and {\bf DYf(i,j)} positioned to the east. -\marginpar{$A_s$: {\bf rAs}} -\marginpar{$\Delta x_f$: {\bf DXf}} -\marginpar{$\Delta y_u$: {\bf DYu}} Fig.~\ref{fig:hgrid}d shows the ``v'' or southern (s) cell. The length of the northern edge, $\Delta x_f$, western edge, $\Delta y_u$ and surface area, $A_s$, presented in the vertical are stored in arrays -{\bf DXf}, {\bf DYu} and {\bf rAs}. The ``u'' suffix indicates that -the length is measured between the u-points, the ``f'' suffix -indicates that the length is measured between the (tracer) cell faces -and the ``s'' suffix associates points with the v-points (s stands for -south). The quantities are staggered in space and the indexing is such -that {\bf DXf(i,j)} is positioned to the north of {\bf rAs(i,j)} and -{\bf DYu(i,j)} positioned to the west. +{\bf DXf}, {\bf DYu} and {\bf rAs}. +\marginpar{$A_s$: {\bf rAs}} +\marginpar{$\Delta x_f$: {\bf DXf}} +\marginpar{$\Delta y_u$: {\bf DYu}} +The ``u'' suffix indicates that the length is measured between the +u-points, the ``f'' suffix indicates that the length is measured +between the (tracer) cell faces and the ``s'' suffix associates points +with the v-points (s stands for south). The quantities are staggered +in space and the indexing is such that {\bf DXf(i,j)} is positioned to +the north of {\bf rAs(i,j)} and {\bf DYu(i,j)} positioned to the west. \fbox{ \begin{minipage}{4.75in} {\em S/R INI\_CARTESIAN\_GRID} ({\em @@ -348,6 +376,76 @@ \end{minipage} } +\subsection{Topography: partially filled cells} + +\begin{figure} +\centerline{ +\resizebox{4.5in}{!}{\includegraphics{part2/vgrid-xz.eps}} +} +\caption{ +A schematic of the x-r plane showing the location of the +non-dimensional fractions $h_c$ and $h_w$. The physical thickness of a +tracer cell is given by $h_c(i,j,k) \Delta r_f(k)$ and the physical +thickness of the open side is given by $h_w(i,j,k) \Delta r_f(k)$.} +\label{fig:hfacs} +\end{figure} + +\cite{Adcroft97} presented two alternatives to the step-wise finite +difference representation of topography. The method is known to the +engineering community as {\em intersecting boundary method}. It +involves allowing the boundary to intersect a grid of cells thereby +modifying the shape of those cells intersected. We suggested allowing +the topgoraphy to take on a peice-wise linear representation (shaved +cells) or a simpler piecewise constant representaion (partial step). +Both show dramatic improvements in solution compared to the +traditional full step representation, the piece-wise linear being the +best. However, the storage requirements are excessive so the simpler +piece-wise constant or partial-step method is all that is currently +supported. + +Fig.~\ref{fig:hfacs} shows a schematic of the x-r plane indicating how +the thickness of a level is determined at tracer and u points. +\marginpar{$h_c$: {\bf hFacC}} +\marginpar{$h_w$: {\bf hFacW}} +\marginpar{$h_s$: {\bf hFacS}} +The physical thickness of a tracer cell is given by $h_c(i,j,k) \Delta +r_f(k)$ and the physical thickness of the open side is given by +$h_w(i,j,k) \Delta r_f(k)$. Three 3-D discriptors $h_c$, $h_w$ and +$h_s$ are used to describe the geometry: {\bf hFacC}, {\bf hFacW} and +{\bf hFacS} respectively. These are calculated in subroutine {\em +INI\_MASKS\_ETC} along with there reciprocals {\bf RECIP\_hFacC}, {\bf +RECIP\_hFacW} and {\bf RECIP\_hFacS}. + +The non-dimensional fractions (or h-facs as we call them) are +calculated from the model depth array and then processed to avoid tiny +volumes. The rule is that if a fraction is less than {\bf hFacMin} +then it is rounded to the nearer of $0$ or {\bf hFacMin} or if the +physical thickness is less than {\bf hFacMinDr} then it is similarly +rounded. The larger of the two methods is used when there is a +conflict. By setting {\bf hFacMinDr} equal to or larger than the +thinnest nominal layers, $\min{(\Delta z_f)}$, but setting {\bf +hFacMin} to some small fraction then the model will only lop thick +layers but retain stability based on the thinnest unlopped thickness; +$\min{(\Delta z_f,\mbox{\bf hFacMinDr})}$. + +\fbox{ \begin{minipage}{4.75in} +{\em S/R INI\_MASKS\_ETC} ({\em model/src/ini\_masks\_etc.F}) + +$h_c$: {\bf hFacC} ({\em GRID.h}) + +$h_w$: {\bf hFacW} ({\em GRID.h}) + +$h_s$: {\bf hFacS} ({\em GRID.h}) + +$h_c^{-1}$: {\bf RECIP\_hFacC} ({\em GRID.h}) + +$h_w^{-1}$: {\bf RECIP\_hFacW} ({\em GRID.h}) + +$h_s^{-1}$: {\bf RECIP\_hFacS} ({\em GRID.h}) + +\end{minipage} } + + \subsection{Continuity and horizontal pressure gradient terms} The core algorithm is based on the ``C grid'' discretization of the @@ -428,724 +526,3 @@ atmospheric/oceanic form is selected based on the string variable {\bf buoyancyRelation}. -\subsection{Flux-form momentum equations} - -The original finite volume model was based on the Eulerian flux form -momentum equations. This is the default though the vector invariant -form is optionally available (and recommended in some cases). - -The ``G's'' (our colloquial name for all terms on rhs!) are broken -into the various advective, Coriolis, horizontal dissipation, vertical -dissipation and metric forces: -\marginpar{$G_u$: {\bf Gu} } -\marginpar{$G_v$: {\bf Gv} } -\marginpar{$G_w$: {\bf Gw} } -\begin{eqnarray} -G_u & = & G_u^{adv} + G_u^{cor} + G_u^{h-diss} + G_u^{v-diss} + -G_u^{metric} + G_u^{nh-metric} \\ -G_v & = & G_v^{adv} + G_v^{cor} + G_v^{h-diss} + G_v^{v-diss} + -G_v^{metric} + G_v^{nh-metric} \\ -G_w & = & G_w^{adv} + G_w^{cor} + G_w^{h-diss} + G_w^{v-diss} + -G_w^{metric} + G_w^{nh-metric} -\end{eqnarray} -In the hydrostatic limit, $G_w=0$ and $\epsilon_{nh}=0$, reducing the -vertical momentum to hydrostatic balance. - -These terms are calculated in routines called from subroutine {\em -CALC\_MOM\_RHS} a collected into the global arrays {\bf Gu}, {\bf Gv}, -and {\bf Gw}. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_fluxform/calc\_mom\_rhs.F}) - -$G_u$: {\bf Gu} ({\em DYNVARS.h}) - -$G_v$: {\bf Gv} ({\em DYNVARS.h}) - -$G_w$: {\bf Gw} ({\em DYNVARS.h}) -\end{minipage} } - - -\subsubsection{Advection of momentum} - -The advective operator is second order accurate in space: -\begin{eqnarray} -{\cal A}_w \Delta r_f h_w G_u^{adv} & = & - \delta_i \overline{ U }^i \overline{ u }^i -+ \delta_j \overline{ V }^i \overline{ u }^j -+ \delta_k \overline{ W }^i \overline{ u }^k \\ -{\cal A}_s \Delta r_f h_s G_v^{adv} & = & - \delta_i \overline{ U }^j \overline{ v }^i -+ \delta_j \overline{ V }^j \overline{ v }^j -+ \delta_k \overline{ W }^j \overline{ v }^k \\ -{\cal A}_c \Delta r_c G_w^{adv} & = & - \delta_i \overline{ U }^k \overline{ w }^i -+ \delta_j \overline{ V }^k \overline{ w }^j -+ \delta_k \overline{ W }^k \overline{ w }^k \\ -\end{eqnarray} -and because of the flux form does not contribute to the global budget -of linear momentum. The quantities $U$, $V$ and $W$ are volume fluxes -defined: -\marginpar{$U$: {\bf uTrans} } -\marginpar{$V$: {\bf vTrans} } -\marginpar{$W$: {\bf rTrans} } -\begin{eqnarray} -U & = & \Delta y_g \Delta r_f h_w u \\ -V & = & \Delta x_g \Delta r_f h_s v \\ -W & = & {\cal A}_c w -\end{eqnarray} -The advection of momentum takes the same form as the advection of -tracers but by a translated advective flow. Consequently, the -conservation of second moments, derived for tracers later, applies to -$u^2$ and $v^2$ and $w^2$ so that advection of momentum correctly -conserves kinetic energy. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_ADV\_UU} ({\em mom\_u\_adv\_uu.F}) - -{\em S/R MOM\_U\_ADV\_VU} ({\em mom\_u\_adv\_vu.F}) - -{\em S/R MOM\_U\_ADV\_WU} ({\em mom\_u\_adv\_wu.F}) - -{\em S/R MOM\_U\_ADV\_UV} ({\em mom\_u\_adv\_uv.F}) - -{\em S/R MOM\_U\_ADV\_VV} ({\em mom\_u\_adv\_vv.F}) - -{\em S/R MOM\_U\_ADV\_WV} ({\em mom\_u\_adv\_wv.F}) - -$uu$, $uv$, $vu$, $vv$: {\bf aF} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - - -\subsubsection{Coriolis terms} - -The ``pure C grid'' Coriolis terms (i.e. in absence of C-D scheme) are -discretized: -\begin{eqnarray} -{\cal A}_w \Delta r_f h_w G_u^{Cor} & = & - \overline{ f {\cal A}_c \Delta r_f h_c \overline{ v }^j }^i -- \epsilon_{nh} \overline{ f' {\cal A}_c \Delta r_f h_c \overline{ w }^k }^i \\ -{\cal A}_s \Delta r_f h_s G_v^{Cor} & = & -- \overline{ f {\cal A}_c \Delta r_f h_c \overline{ u }^i }^j \\ -{\cal A}_c \Delta r_c G_w^{Cor} & = & - \epsilon_{nh} \overline{ f' {\cal A}_c \Delta r_f h_c \overline{ u }^i }^k -\end{eqnarray} -where the Coriolis parameters $f$ and $f'$ are defined: -\begin{eqnarray} -f & = & 2 \Omega \sin{\phi} \\ -f' & = & 2 \Omega \cos{\phi} -\end{eqnarray} -when using spherical geometry, otherwise the $\beta$-plane definition is used: -\begin{eqnarray} -f & = & f_o + \beta y \\ -f' & = & 0 -\end{eqnarray} - -This discretization globally conserves kinetic energy. It should be -noted that despite the use of this discretization in former -publications, all calculations to date have used the following -different discretization: -\begin{eqnarray} -G_u^{Cor} & = & - f_u \overline{ v }^{ji} -- \epsilon_{nh} f_u' \overline{ w }^{ik} \\ -G_v^{Cor} & = & -- f_v \overline{ u }^{ij} \\ -G_w^{Cor} & = & - \epsilon_{nh} f_w' \overline{ u }^{ik} -\end{eqnarray} -\marginpar{Need to change the default in code to match this} -where the subscripts on $f$ and $f'$ indicate evaluation of the -Coriolis parameters at the appropriate points in space. The above -discretization does {\em not} conserve anything, especially energy. An -option to recover this discretization has been retained for backward -compatibility testing (set run-time logical {\bf -useNonconservingCoriolis} to {\em true} which otherwise defaults to -{\em false}). - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_CDSCHEME} ({\em mom\_cdscheme.F}) - -{\em S/R MOM\_U\_CORIOLIS} ({\em mom\_u\_coriolis.F}) - -{\em S/R MOM\_V\_CORIOLIS} ({\em mom\_v\_coriolis.F}) - -$G_u^{Cor}$, $G_v^{Cor}$: {\bf cF} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Curvature metric terms} - -The most commonly used coordinate system on the sphere is the -geographic system $(\lambda,\phi)$. The curvilinear nature of these -coordinates on the sphere lead to some ``metric'' terms in the -component momentum equations. Under the thin-atmosphere and -hydrostatic approximations these terms are discretized: -\begin{eqnarray} -{\cal A}_w \Delta r_f h_w G_u^{metric} & = & - \overline{ \frac{ \overline{u}^i }{a} \tan{\phi} {\cal A}_c \Delta r_f h_c \overline{ v }^j }^i \\ -{\cal A}_s \Delta r_f h_s G_v^{metric} & = & -- \overline{ \frac{ \overline{u}^i }{a} \tan{\phi} {\cal A}_c \Delta r_f h_c \overline{ u }^i }^j \\ -G_w^{metric} & = & 0 -\end{eqnarray} -where $a$ is the radius of the planet (sphericity is assumed) or the -radial distance of the particle (i.e. a function of height). It is -easy to see that this discretization satisfies all the properties of -the discrete Coriolis terms since the metric factor $\frac{u}{a} -\tan{\phi}$ can be viewed as a modification of the vertical Coriolis -parameter: $f \rightarrow f+\frac{u}{a} \tan{\phi}$. - -However, as for the Coriolis terms, a non-energy conserving form has -exclusively been used to date: -\begin{eqnarray} -G_u^{metric} & = & \frac{u \overline{v}^{ij} }{a} \tan{\phi} \\ -G_v^{metric} & = & \frac{ \overline{u}^{ij} \overline{u}^{ij}}{a} \tan{\phi} -\end{eqnarray} -where $\tan{\phi}$ is evaluated at the $u$ and $v$ points -respectively. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_METRIC\_SPHERE} ({\em mom\_u\_metric\_sphere.F}) - -{\em S/R MOM\_V\_METRIC\_SPHERE} ({\em mom\_v\_metric\_sphere.F}) - -$G_u^{metric}$, $G_v^{metric}$: {\bf mT} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - - -\subsubsection{Non-hydrostatic metric terms} - -For the non-hydrostatic equations, dropping the thin-atmosphere -approximation re-introduces metric terms involving $w$ and are -required to conserve anglular momentum: -\begin{eqnarray} -{\cal A}_w \Delta r_f h_w G_u^{metric} & = & -- \overline{ \frac{ \overline{u}^i \overline{w}^k }{a} {\cal A}_c \Delta r_f h_c }^i \\ -{\cal A}_s \Delta r_f h_s G_v^{metric} & = & -- \overline{ \frac{ \overline{v}^j \overline{w}^k }{a} {\cal A}_c \Delta r_f h_c}^j \\ -{\cal A}_c \Delta r_c G_w^{metric} & = & - \overline{ \frac{ {\overline{u}^i}^2 + {\overline{v}^j}^2}{a} {\cal A}_c \Delta r_f h_c }^k -\end{eqnarray} - -Because we are always consistent, even if consistently wrong, we have, -in the past, used a different discretization in the model which is: -\begin{eqnarray} -G_u^{metric} & = & -- \frac{u}{a} \overline{w}^{ik} \\ -G_v^{metric} & = & -- \frac{v}{a} \overline{w}^{jk} \\ -G_w^{metric} & = & - \frac{1}{a} ( {\overline{u}^{ik}}^2 + {\overline{v}^{jk}}^2 ) -\end{eqnarray} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_METRIC\_NH} ({\em mom\_u\_metric\_nh.F}) - -{\em S/R MOM\_V\_METRIC\_NH} ({\em mom\_v\_metric\_nh.F}) - -$G_u^{metric}$, $G_v^{metric}$: {\bf mT} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Lateral dissipation} - -Historically, we have represented the SGS Reynolds stresses as simply -down gradient momentum fluxes, ignoring constraints on the stress -tensor such as symmetry. -\begin{eqnarray} -{\cal A}_w \Delta r_f h_w G_u^{h-diss} & = & - \delta_i \Delta y_f \Delta r_f h_c \tau_{11} -+ \delta_j \Delta x_v \Delta r_f h_\zeta \tau_{12} \\ -{\cal A}_s \Delta r_f h_s G_v^{h-diss} & = & - \delta_i \Delta y_u \Delta r_f h_\zeta \tau_{21} -+ \delta_j \Delta x_f \Delta r_f h_c \tau_{22} -\end{eqnarray} -\marginpar{Check signs of stress definitions} - -The lateral viscous stresses are discretized: -\begin{eqnarray} -\tau_{11} & = & A_h c_{11\Delta}(\phi) \frac{1}{\Delta x_f} \delta_i u - -A_4 c_{11\Delta^2}(\phi) \frac{1}{\Delta x_f} \delta_i \nabla^2 u \\ -\tau_{12} & = & A_h c_{12\Delta}(\phi) \frac{1}{\Delta y_u} \delta_j u - -A_4 c_{12\Delta^2}(\phi)\frac{1}{\Delta y_u} \delta_j \nabla^2 u \\ -\tau_{21} & = & A_h c_{21\Delta}(\phi) \frac{1}{\Delta x_v} \delta_i v - -A_4 c_{21\Delta^2}(\phi) \frac{1}{\Delta x_v} \delta_i \nabla^2 v \\ -\tau_{22} & = & A_h c_{22\Delta}(\phi) \frac{1}{\Delta y_f} \delta_j v - -A_4 c_{22\Delta^2}(\phi) \frac{1}{\Delta y_f} \delta_j \nabla^2 v -\end{eqnarray} -where the non-dimensional factors $c_{lm\Delta^n}(\phi), \{l,m,n\} \in -\{1,2\}$ define the ``cosine'' scaling with latitude which can be -applied in various ad-hoc ways. For instance, $c_{11\Delta} = -c_{21\Delta} = (\cos{\phi})^{3/2}$, $c_{12\Delta}=c_{22\Delta}=0$ would -represent the an-isotropic cosine scaling typically used on the -``lat-lon'' grid for Laplacian viscosity. -\marginpar{Need to tidy up method for controlling this in code} - -It should be noted that dispite the ad-hoc nature of the scaling, some -scaling must be done since on a lat-lon grid the converging meridians -make it very unlikely that a stable viscosity parameter exists across -the entire model domain. - -The Laplacian viscosity coefficient, $A_h$ ({\bf viscAh}), has units -of $m^2 s^{-1}$. The bi-harmonic viscosity coefficient, $A_4$ ({\bf -viscA4}), has units of $m^4 s^{-1}$. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_XVISCFLUX} ({\em mom\_u\_xviscflux.F}) - -{\em S/R MOM\_U\_YVISCFLUX} ({\em mom\_u\_yviscflux.F}) - -{\em S/R MOM\_V\_XVISCFLUX} ({\em mom\_v\_xviscflux.F}) - -{\em S/R MOM\_V\_YVISCFLUX} ({\em mom\_v\_yviscflux.F}) - -$\tau_{11}$, $\tau_{12}$, $\tau_{22}$, $\tau_{22}$: {\bf vF}, {\bf -v4F} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - -Two types of lateral boundary condition exist for the lateral viscous -terms, no-slip and free-slip. - -The free-slip condition is most convenient to code since it is -equivalent to zero-stress on boundaries. Simple masking of the stress -components sets them to zero. The fractional open stress is properly -handled using the lopped cells. - -The no-slip condition defines the normal gradient of a tangential flow -such that the flow is zero on the boundary. Rather than modify the -stresses by using complicated functions of the masks and ``ghost'' -points (see \cite{Adcroft+Marshall98}) we add the boundary stresses as -an additional source term in cells next to solid boundaries. This has -the advantage of being able to cope with ``thin walls'' and also makes -the interior stress calculation (code) independent of the boundary -conditions. The ``body'' force takes the form: -\begin{eqnarray} -G_u^{side-drag} & = & -\frac{4}{\Delta z_f} \overline{ (1-h_\zeta) \frac{\Delta x_v}{\Delta y_u} }^j -\left( A_h c_{12\Delta}(\phi) u - A_4 c_{12\Delta^2}(\phi) \nabla^2 u \right) -\\ -G_v^{side-drag} & = & -\frac{4}{\Delta z_f} \overline{ (1-h_\zeta) \frac{\Delta y_u}{\Delta x_v} }^i -\left( A_h c_{21\Delta}(\phi) v - A_4 c_{21\Delta^2}(\phi) \nabla^2 v \right) -\end{eqnarray} - -In fact, the above discretization is not quite complete because it -assumes that the bathymetry at velocity points is deeper than at -neighbouring vorticity points, e.g. $1-h_w < 1-h_\zeta$ - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_SIDEDRAG} ({\em mom\_u\_sidedrag.F}) - -{\em S/R MOM\_V\_SIDEDRAG} ({\em mom\_v\_sidedrag.F}) - -$G_u^{side-drag}$, $G_v^{side-drag}$: {\bf vF} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Vertical dissipation} - -Vertical viscosity terms are discretized with only partial adherence -to the variable grid lengths introduced by the finite volume -formulation. This reduces the formal accuracy of these terms to just -first order but only next to boundaries; exactly where other terms -appear such as linar and quadratic bottom drag. -\begin{eqnarray} -G_u^{v-diss} & = & -\frac{1}{\Delta r_f h_w} \delta_k \tau_{13} \\ -G_v^{v-diss} & = & -\frac{1}{\Delta r_f h_s} \delta_k \tau_{23} \\ -G_w^{v-diss} & = & \epsilon_{nh} -\frac{1}{\Delta r_f h_d} \delta_k \tau_{33} -\end{eqnarray} -represents the general discrete form of the vertical dissipation terms. - -In the interior the vertical stresses are discretized: -\begin{eqnarray} -\tau_{13} & = & A_v \frac{1}{\Delta r_c} \delta_k u \\ -\tau_{23} & = & A_v \frac{1}{\Delta r_c} \delta_k v \\ -\tau_{33} & = & A_v \frac{1}{\Delta r_f} \delta_k w -\end{eqnarray} -It should be noted that in the non-hydrostatic form, the stress tensor -is even less consistent than for the hydrostatic (see Wazjowicz -\cite{Waojz}). It is well known how to do this properly (see Griffies -\cite{Griffies}) and is on the list of to-do's. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F}) - -{\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F}) - -$\tau_{13}$: {\bf urf} (local to {\em calc\_mom\_rhs.F}) - -$\tau_{23}$: {\bf vrf} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -As for the lateral viscous terms, the free-slip condition is -equivalent to simply setting the stress to zero on boundaries. The -no-slip condition is implemented as an additional term acting on top -of the interior and free-slip stresses. Bottom drag represents -additional friction, in addition to that imposed by the no-slip -condition at the bottom. The drag is cast as a stress expressed as a -linear or quadratic function of the mean flow in the layer above the -topography: -\begin{eqnarray} -\tau_{13}^{bottom-drag} & = & -\left( -2 A_v \frac{1}{\Delta r_c} -+ r_b -+ C_d \sqrt{ \overline{2 KE}^i } -\right) u \\ -\tau_{23}^{bottom-drag} & = & -\left( -2 A_v \frac{1}{\Delta r_c} -+ r_b -+ C_d \sqrt{ \overline{2 KE}^j } -\right) v -\end{eqnarray} -where these terms are only evaluated immediately above topography. -$r_b$ ({\bf bottomDragLinear}) has units of $m s^{-1}$ and a typical value -of the order 0.0002 $m s^{-1}$. $C_d$ ({\bf bottomDragQuadratic}) is -dimensionless with typical values in the range 0.001--0.003. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_BOTTOMDRAG} ({\em mom\_u\_bottomdrag.F}) - -{\em S/R MOM\_V\_BOTTOMDRAG} ({\em mom\_v\_bottomdrag.F}) - -$\tau_{13}^{bottom-drag}$, $\tau_{23}^{bottom-drag}$: {\bf vf} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - - - - -\subsection{Tracer equations} - -The tracer equations are discretized consistantly with the continuity -equation to facilitate conservation properties analogous to the -continuum: -\begin{equation} -{\cal A}_c \Delta r_f h_c \partial_\theta -+ \delta_i U \overline{ \theta }^i -+ \delta_j V \overline{ \theta }^j -+ \delta_k W \overline{ \theta }^k -= {\cal A}_c \Delta r_f h_c {\cal S}_\theta + \theta {\cal A}_c \delta_k (P-E)_{r=0} -\end{equation} -The quantities $U$, $V$ and $W$ are volume fluxes defined: -\marginpar{$U$: {\bf uTrans} } -\marginpar{$V$: {\bf vTrans} } -\marginpar{$W$: {\bf rTrans} } -\begin{eqnarray} -U & = & \Delta y_g \Delta r_f h_w u \\ -V & = & \Delta x_g \Delta r_f h_s v \\ -W & = & {\cal A}_c w -\end{eqnarray} -${\cal S}$ represents the ``parameterized'' SGS processes and -physics associated with the tracer. For instance, potential -temperature equation in the ocean has is forced by surface and -partially penetrating heat fluxes: -\begin{equation} -{\cal A}_c \Delta r_f h_c {\cal S}_\theta = \frac{1}{c_p \rho_o} \delta_k {\cal A}_c {\cal Q} -\end{equation} -while the salt equation has no real sources, ${\cal S}=0$, which -leaves just the $P-E$ term. - -The continuity equation can be recovered by setting ${\cal Q}=0$ and -$\theta=1$. The term $\theta (P-E)_{r=0}$ is required to retain local -conservation of $\theta$. Global conservation is not possible using -the flux-form (as here) and a linearized free-surface -(\cite{Griffies00,Campin02}). - - - - -\subsection{Derivation of discrete energy conservation} - -These discrete equations conserve kinetic plus potential energy using the -following definitions: -\begin{equation} -KE = \frac{1}{2} \left( \overline{ u^2 }^i + \overline{ v^2 }^j + -\epsilon_{nh} \overline{ w^2 }^k \right) -\end{equation} - - -\subsection{Vector invariant momentum equations} - -The finite volume method lends itself to describing the continuity and -tracer equations in curvilinear coordinate systems but the appearance -of new metric terms in the flux-form momentum equations makes -generalizing them far from elegant. The vector invariant form of the -momentum equations are exactly that; invariant under coordinate -transformations. - -The non-hydrostatic vector invariant equations read: -\begin{equation} -\partial_t \vec{v} + ( 2\vec{\Omega} + \vec{\zeta}) \wedge \vec{v} -- b \hat{r} -+ \vec{\nabla} B = \vec{\nabla} \cdot \vec{\bf \tau} -\end{equation} -which describe motions in any orthogonal curvilinear coordinate -system. Here, $B$ is the Bernoulli function and $\vec{\zeta}=\nabla -\wedge \vec{v}$ is the vorticity vector. We can take advantage of the -elegance of these equations when discretizing them and use the -discrete definitions of the grad, curl and divergence operators to -satisfy constraints. We can also consider the analogy to forming -derived equations, such as the vorticity equation, and examine how the -discretization can be adjusted to give suitable vorticity advection -among other things. - -The underlying algorithm is the same as for the flux form -equations. All that has changed is the contents of the ``G's''. For -the time-being, only the hydrostatic terms have been coded but we will -indicate the points where non-hydrostatic contributions will enter: -\begin{eqnarray} -G_u & = & G_u^{fv} + G_u^{\zeta_3 v} + G_u^{\zeta_2 w} + G_u^{\partial_x B} -+ G_u^{\partial_z \tau^x} + G_u^{h-dissip} + G_u^{v-dissip} \\ -G_v & = & G_v^{fu} + G_v^{\zeta_3 u} + G_v^{\zeta_1 w} + G_v^{\partial_y B} -+ G_v^{\partial_z \tau^y} + G_v^{h-dissip} + G_v^{v-dissip} \\ -G_w & = & G_w^{fu} + G_w^{\zeta_1 v} + G_w^{\zeta_2 u} + G_w^{\partial_z B} -+ G_w^{h-dissip} + G_w^{v-dissip} -\end{eqnarray} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_vecinv/calc\_mom\_rhs.F}) - -$G_u$: {\bf Gu} ({\em DYNVARS.h}) - -$G_v$: {\bf Gv} ({\em DYNVARS.h}) - -$G_w$: {\bf Gw} ({\em DYNVARS.h}) -\end{minipage} } - -\subsubsection{Relative vorticity} - -The vertical component of relative vorticity is explicitly calculated -and use in the discretization. The particular form is crucial for -numerical stablility; alternative definitions break the conservation -properties of the discrete equations. - -Relative vorticity is defined: -\begin{equation} -\zeta_3 = \frac{\Gamma}{A_\zeta} -= \frac{1}{{\cal A}_\zeta} ( \delta_i \Delta y_c v - \delta_j \Delta x_c u ) -\end{equation} -where ${\cal A}_\zeta$ is the area of the vorticity cell presented in -the vertical and $\Gamma$ is the circulation about that cell. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_VI\_CALC\_RELVORT3} ({\em mom\_vi\_calc\_relvort3.F}) - -$\zeta_3$: {\bf vort3} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Kinetic energy} - -The kinetic energy, denoted $KE$, is defined: -\begin{equation} -KE = \frac{1}{2} ( \overline{ u^2 }^i + \overline{ v^2 }^j -+ \epsilon_{nh} \overline{ w^2 }^k ) -\end{equation} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_VI\_CALC\_KE} ({\em mom\_vi\_calc\_ke.F}) - -$KE$: {\bf KE} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Coriolis terms} - -The potential enstrophy conserving form of the linear Coriolis terms -are written: -\begin{eqnarray} -G_u^{fv} & = & -\frac{1}{\Delta x_c} -\overline{ \frac{f}{h_\zeta} }^j \overline{ \overline{ \Delta x_g h_s v }^j }^i \\ -G_v^{fu} & = & - -\frac{1}{\Delta y_c} -\overline{ \frac{f}{h_\zeta} }^i \overline{ \overline{ \Delta y_g h_w u }^i }^j -\end{eqnarray} -Here, the Coriolis parameter $f$ is defined at vorticity (corner) -points. -\marginpar{$f$: {\bf fCoriG}} -\marginpar{$h_\zeta$: {\bf hFacZ}} - -The potential enstrophy conserving form of the non-linear Coriolis -terms are written: -\begin{eqnarray} -G_u^{\zeta_3 v} & = & -\frac{1}{\Delta x_c} -\overline{ \frac{\zeta_3}{h_\zeta} }^j \overline{ \overline{ \Delta x_g h_s v }^j }^i \\ -G_v^{\zeta_3 u} & = & - -\frac{1}{\Delta y_c} -\overline{ \frac{\zeta_3}{h_\zeta} }^i \overline{ \overline{ \Delta y_g h_w u }^i }^j -\end{eqnarray} -\marginpar{$\zeta_3$: {\bf vort3}} - -The Coriolis terms can also be evaluated together and expressed in -terms of absolute vorticity $f+\zeta_3$. The potential enstrophy -conserving form using the absolute vorticity is written: -\begin{eqnarray} -G_u^{fv} + G_u^{\zeta_3 v} & = & -\frac{1}{\Delta x_c} -\overline{ \frac{f + \zeta_3}{h_\zeta} }^j \overline{ \overline{ \Delta x_g h_s v }^j }^i \\ -G_v^{fu} + G_v^{\zeta_3 u} & = & - -\frac{1}{\Delta y_c} -\overline{ \frac{f + \zeta_3}{h_\zeta} }^i \overline{ \overline{ \Delta y_g h_w u }^i }^j -\end{eqnarray} - -\marginpar{Run-time control needs to be added for these options} The -disctinction between using absolute vorticity or relative vorticity is -useful when constructing higher order advection schemes; monotone -advection of relative vorticity behaves differently to monotone -advection of absolute vorticity. Currently the choice of -relative/absolute vorticity, centered/upwind/high order advection is -available only through commented subroutine calls. - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_VI\_CORIOLIS} ({\em mom\_vi\_coriolis.F}) - -{\em S/R MOM\_VI\_U\_CORIOLIS} ({\em mom\_vi\_u\_coriolis.F}) - -{\em S/R MOM\_VI\_V\_CORIOLIS} ({\em mom\_vi\_v\_coriolis.F}) - -$G_u^{fv}$, $G_u^{\zeta_3 v}$: {\bf uCf} (local to {\em calc\_mom\_rhs.F}) - -$G_v^{fu}$, $G_v^{\zeta_3 u}$: {\bf vCf} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Shear terms} - -The shear terms ($\zeta_2w$ and $\zeta_1w$) are are discretized to -guarantee that no spurious generation of kinetic energy is possible; -the horizontal gradient of Bernoulli function has to be consistent -with the vertical advection of shear: -\marginpar{N-H terms have not been tried!} -\begin{eqnarray} -G_u^{\zeta_2 w} & = & -\frac{1}{ {\cal A}_w \Delta r_f h_w } \overline{ -\overline{ {\cal A}_c w }^i ( \delta_k u - \epsilon_{nh} \delta_j w ) -}^k \\ -G_v^{\zeta_1 w} & = & -\frac{1}{ {\cal A}_s \Delta r_f h_s } \overline{ -\overline{ {\cal A}_c w }^i ( \delta_k u - \epsilon_{nh} \delta_j w ) -}^k -\end{eqnarray} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_VI\_U\_VERTSHEAR} ({\em mom\_vi\_u\_vertshear.F}) - -{\em S/R MOM\_VI\_V\_VERTSHEAR} ({\em mom\_vi\_v\_vertshear.F}) - -$G_u^{\zeta_2 w}$: {\bf uCf} (local to {\em calc\_mom\_rhs.F}) - -$G_v^{\zeta_1 w}$: {\bf vCf} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - - -\subsubsection{Gradient of Bernoulli function} - -\begin{eqnarray} -G_u^{\partial_x B} & = & -\frac{1}{\Delta x_c} \delta_i ( \phi' + KE ) \\ -G_v^{\partial_y B} & = & -\frac{1}{\Delta x_y} \delta_j ( \phi' + KE ) -%G_w^{\partial_z B} & = & -%\frac{1}{\Delta r_c} h_c \delta_k ( \phi' + KE ) -\end{eqnarray} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_VI\_U\_GRAD\_KE} ({\em mom\_vi\_u\_grad\_ke.F}) - -{\em S/R MOM\_VI\_V\_GRAD\_KE} ({\em mom\_vi\_v\_grad\_ke.F}) - -$G_u^{\partial_x KE}$: {\bf uCf} (local to {\em calc\_mom\_rhs.F}) - -$G_v^{\partial_y KE}$: {\bf vCf} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - - -\subsubsection{Horizontal dissipation} - -The horizontal divergence, a complimentary quantity to relative -vorticity, is used in parameterizing the Reynolds stresses and is -discretized: -\begin{equation} -D = \frac{1}{{\cal A}_c h_c} ( - \delta_i \Delta y_g h_w u -+ \delta_j \Delta x_g h_s v ) -\end{equation} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_VI\_CALC\_HDIV} ({\em mom\_vi\_calc\_hdiv.F}) - -$D$: {\bf hDiv} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Horizontal dissipation} - -The following discretization of horizontal dissipation conserves -potential vorticity (thickness weighted relative vorticity) and -divergence and dissipates energy, enstrophy and divergence squared: -\begin{eqnarray} -G_u^{h-dissip} & = & - \frac{1}{\Delta x_c} \delta_i ( A_D D - A_{D4} D^*) -- \frac{1}{\Delta y_u h_w} \delta_j h_\zeta ( A_\zeta \zeta - A_{\zeta4} \zeta^* ) -\\ -G_v^{h-dissip} & = & - \frac{1}{\Delta x_v h_s} \delta_i h_\zeta ( A_\zeta \zeta - A_\zeta \zeta^* ) -+ \frac{1}{\Delta y_c} \delta_j ( A_D D - A_{D4} D^* ) -\end{eqnarray} -where -\begin{eqnarray} -D^* & = & \frac{1}{{\cal A}_c h_c} ( - \delta_i \Delta y_g h_w \nabla^2 u -+ \delta_j \Delta x_g h_s \nabla^2 v ) \\ -\zeta^* & = & \frac{1}{{\cal A}_\zeta} ( - \delta_i \Delta y_c \nabla^2 v -- \delta_j \Delta x_c \nabla^2 u ) -\end{eqnarray} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_VI\_HDISSIP} ({\em mom\_vi\_hdissip.F}) - -$G_u^{h-dissip}$: {\bf uDiss} (local to {\em calc\_mom\_rhs.F}) - -$G_v^{h-dissip}$: {\bf vDiss} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} } - - -\subsubsection{Vertical dissipation} - -Currently, this is exactly the same code as the flux form equations. -\begin{eqnarray} -G_u^{v-diss} & = & -\frac{1}{\Delta r_f h_w} \delta_k \tau_{13} \\ -G_v^{v-diss} & = & -\frac{1}{\Delta r_f h_s} \delta_k \tau_{23} -\end{eqnarray} -represents the general discrete form of the vertical dissipation terms. - -In the interior the vertical stresses are discretized: -\begin{eqnarray} -\tau_{13} & = & A_v \frac{1}{\Delta r_c} \delta_k u \\ -\tau_{23} & = & A_v \frac{1}{\Delta r_c} \delta_k v -\end{eqnarray} - -\fbox{ \begin{minipage}{4.75in} -{\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F}) - -{\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F}) - -$\tau_{13}$: {\bf urf} (local to {\em calc\_mom\_rhs.F}) - -$\tau_{23}$: {\bf vrf} (local to {\em calc\_mom\_rhs.F}) -\end{minipage} }