/[MITgcm]/manual/s_algorithm/text/time_stepping.tex
ViewVC logotype

Diff of /manual/s_algorithm/text/time_stepping.tex

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

revision 1.9 by cnh, Thu Oct 25 18:36:53 2001 UTC revision 1.16 by edhill, Thu Aug 7 18:27:52 2003 UTC
# Line 1  Line 1 
1  % $Header$  % $Header$
2  % $Name$  % $Name$
3    
4    This chapter lays out the numerical schemes that are
5    employed in the core MITgcm algorithm. Whenever possible
6    links are made to actual program code in the MITgcm implementation.
7    The chapter begins with a discussion of the temporal discretization
8    used in MITgcm. This discussion is followed by sections that
9    describe the spatial discretization. The schemes employed for momentum
10    terms are described first, afterwards the schemes that apply to
11    passive and dynamically active tracers are described.
12    
13    
14    \section{Time-stepping}
15  The equations of motion integrated by the model involve four  The equations of motion integrated by the model involve four
16  prognostic equations for flow, $u$ and $v$, temperature, $\theta$, and  prognostic equations for flow, $u$ and $v$, temperature, $\theta$, and
17  salt/moisture, $S$, and three diagnostic equations for vertical flow,  salt/moisture, $S$, and three diagnostic equations for vertical flow,
# Line 70  temporary.} Line 81  temporary.}
81  \begin{figure}  \begin{figure}
82  \begin{center} \fbox{ \begin{minipage}{4.5in} \begin{tabbing}  \begin{center} \fbox{ \begin{minipage}{4.5in} \begin{tabbing}
83  aaa \= aaa \= aaa \= aaa \= aaa \= aaa \kill  aaa \= aaa \= aaa \= aaa \= aaa \= aaa \kill
84  FORWARD\_STEP \\  \filelink{FORWARD\_STEP}{model-src-forward_step.F} \\
85  \> DYNAMICS \\  \> DYNAMICS \\
86  \>\> TIMESTEP \` $u^*$,$v^*$ (\ref{eq:ustar-rigid-lid},\ref{eq:vstar-rigid-lid}) \\  \>\> TIMESTEP \` $u^*$,$v^*$ (\ref{eq:ustar-rigid-lid},\ref{eq:vstar-rigid-lid}) \\
87  \> SOLVE\_FOR\_PRESSURE \\  \> SOLVE\_FOR\_PRESSURE \\
# Line 80  FORWARD\_STEP \\ Line 91  FORWARD\_STEP \\
91  \>\> CALC\_GRAD\_PHI\_SURF \` $\nabla \eta^{n+1}$ \\  \>\> CALC\_GRAD\_PHI\_SURF \` $\nabla \eta^{n+1}$ \\
92  \>\> CORRECTION\_STEP \` $u^{n+1}$,$v^{n+1}$ (\ref{eq:un+1-rigid-lid},\ref{eq:vn+1-rigid-lid})  \>\> CORRECTION\_STEP \` $u^{n+1}$,$v^{n+1}$ (\ref{eq:un+1-rigid-lid},\ref{eq:vn+1-rigid-lid})
93  \end{tabbing} \end{minipage} } \end{center}  \end{tabbing} \end{minipage} } \end{center}
94  \caption{Calling tree for the pressure method algorihtm}  \caption{Calling tree for the pressure method algorithm
95      (\filelink{FORWARD\_STEP}{model-src-forward_step.F})}
96  \label{fig:call-tree-pressure-method}  \label{fig:call-tree-pressure-method}
97  \end{figure}  \end{figure}
98    
# Line 162  The correspondence to the code is as fol Line 174  The correspondence to the code is as fol
174  \item  \item
175  the prognostic phase, equations \ref{eq:ustar-rigid-lid} and \ref{eq:vstar-rigid-lid},  the prognostic phase, equations \ref{eq:ustar-rigid-lid} and \ref{eq:vstar-rigid-lid},
176  stepping forward $u^n$ and $v^n$ to $u^{*}$ and $v^{*}$ is coded in  stepping forward $u^n$ and $v^n$ to $u^{*}$ and $v^{*}$ is coded in
177  {\em TIMESTEP.F}  \filelink{TIMESTEP()}{model-src-timestep.F}
178  \item  \item
179  the vertical integration, $H \widehat{u^*}$ and $H  the vertical integration, $H \widehat{u^*}$ and $H
180  \widehat{v^*}$, divergence and inversion of the elliptic operator in  \widehat{v^*}$, divergence and inversion of the elliptic operator in
181  equation \ref{eq:elliptic} is coded in {\em  equation \ref{eq:elliptic} is coded in
182  SOLVE\_FOR\_PRESSURE.F}  \filelink{SOLVE\_FOR\_PRESSURE()}{model-src-solve_for_pressure.F}
183  \item  \item
184  finally, the new flow field at time level $n+1$ given by equations  finally, the new flow field at time level $n+1$ given by equations
185  \ref{eq:un+1-rigid-lid} and \ref{eq:vn+1-rigid-lid} is calculated in {\em CORRECTION\_STEP.F}.  \ref{eq:un+1-rigid-lid} and \ref{eq:vn+1-rigid-lid} is calculated in
186    \filelink{CORRECTION\_STEP()}{model-src-correction_step.F}.
187  \end{itemize}  \end{itemize}
188  The calling tree for these routines is given in  The calling tree for these routines is given in
189  Fig.~\ref{fig:call-tree-pressure-method}.  Fig.~\ref{fig:call-tree-pressure-method}.
# Line 554  is activated with the run-time flag {\bf Line 567  is activated with the run-time flag {\bf
567  {\em PARM01} of {\em data}.  {\em PARM01} of {\em data}.
568    
569  The only difficulty with this approach is apparent in equation  The only difficulty with this approach is apparent in equation
570  $\ref{eq:Gt-n-staggered}$ and illustrated by the dotted arrow  \ref{eq:Gt-n-staggered} and illustrated by the dotted arrow
571  connecting $u,v^n$ with $G_\theta^{n-1/2}$. The flow used to advect  connecting $u,v^n$ with $G_\theta^{n-1/2}$. The flow used to advect
572  tracers around is not naturally located in time. This could be avoided  tracers around is not naturally located in time. This could be avoided
573  by applying the Adams-Bashforth extrapolation to the tracer field  by applying the Adams-Bashforth extrapolation to the tracer field
574  itself and advection that around but this is not yet available. We're  itself and advecting that around but this approach is not yet
575  not aware of any detrimental effect of this feature. The difficulty  available. We're not aware of any detrimental effect of this
576  lies mainly in interpretation of what time-level variables and terms  feature. The difficulty lies mainly in interpretation of what
577  correspond to.  time-level variables and terms correspond to.
578    
579    
580  \section{Non-hydrostatic formulation}  \section{Non-hydrostatic formulation}
581  \label{sect:non-hydrostatic}  \label{sect:non-hydrostatic}
582    
583  [to be written...]  The non-hydrostatic formulation re-introduces the full vertical
584    momentum equation and requires the solution of a 3-D elliptic
585    equations for non-hydrostatic pressure perturbation. We still
586    intergrate vertically for the hydrostatic pressure and solve a 2-D
587    elliptic equation for the surface pressure/elevation for this reduces
588    the amount of work needed to solve for the non-hydrostatic pressure.
589    
590    The momentum equations are discretized in time as follows:
591    \begin{eqnarray}
592    \frac{1}{\Delta t} u^{n+1} + g \partial_x \eta^{n+1} + \partial_x \phi_{nh}^{n+1}
593    & = & \frac{1}{\Delta t} u^{n} + G_u^{(n+1/2)} \label{eq:discrete-time-u-nh} \\
594    \frac{1}{\Delta t} v^{n+1} + g \partial_y \eta^{n+1} + \partial_y \phi_{nh}^{n+1}
595    & = & \frac{1}{\Delta t} v^{n} + G_v^{(n+1/2)} \label{eq:discrete-time-v-nh} \\
596    \frac{1}{\Delta t} w^{n+1} + \partial_r \phi_{nh}^{n+1}
597    & = & \frac{1}{\Delta t} w^{n} + G_w^{(n+1/2)} \label{eq:discrete-time-w-nh} \\
598    \end{eqnarray}
599    which must satisfy the discrete-in-time depth integrated continuity,
600    equation~\ref{eq:discrete-time-backward-free-surface} and the local continuity equation
601    \begin{equation}
602    \partial_x u^{n+1} + \partial_y v^{n+1} + \partial_r w^{n+1} = 0
603    \label{eq:non-divergence-nh}
604    \end{equation}
605    As before, the explicit predictions for momentum are consolidated as:
606    \begin{eqnarray*}
607    u^* & = & u^n + \Delta t G_u^{(n+1/2)} \\
608    v^* & = & v^n + \Delta t G_v^{(n+1/2)} \\
609    w^* & = & w^n + \Delta t G_w^{(n+1/2)}
610    \end{eqnarray*}
611    but this time we introduce an intermediate step by splitting the
612    tendancy of the flow as follows:
613    \begin{eqnarray}
614    u^{n+1} = u^{**} - \Delta t \partial_x \phi_{nh}^{n+1}
615    & &
616    u^{**} = u^{*} - \Delta t g \partial_x \eta^{n+1} \\
617    v^{n+1} = v^{**} - \Delta t \partial_y \phi_{nh}^{n+1}
618    & &
619    v^{**} = v^{*} - \Delta t g \partial_y \eta^{n+1}
620    \end{eqnarray}
621    Substituting into the depth integrated continuity
622    (equation~\ref{eq:discrete-time-backward-free-surface}) gives
623    \begin{equation}
624    \partial_x H \partial_x \left( g \eta^{n+1} + \widehat{\phi}_{nh}^{n+1} \right)
625    +
626    \partial_y H \partial_y \left( g \eta^{n+1} + \widehat{\phi}_{nh}^{n+1} \right)
627     - \frac{\epsilon_{fs}\eta^*}{\Delta t^2}
628    = - \frac{\eta^*}{\Delta t^2}
629    \end{equation}
630    which is approximated by equation
631    \ref{eq:elliptic-backward-free-surface} on the basis that i)
632    $\phi_{nh}^{n+1}$ is not yet known and ii) $\nabla \widehat{\phi}_{nh}
633    << g \nabla \eta$. If \ref{eq:elliptic-backward-free-surface} is
634    solved accurately then the implication is that $\widehat{\phi}_{nh}
635    \approx 0$ so that thet non-hydrostatic pressure field does not drive
636    barotropic motion.
637    
638    The flow must satisfy non-divergence
639    (equation~\ref{eq:non-divergence-nh}) locally, as well as depth
640    integrated, and this constraint is used to form a 3-D elliptic
641    equations for $\phi_{nh}^{n+1}$:
642    \begin{equation}
643    \partial_{xx} \phi_{nh}^{n+1} + \partial_{yy} \phi_{nh}^{n+1} +
644    \partial_{rr} \phi_{nh}^{n+1} =
645    \partial_x u^{**} + \partial_y v^{**} + \partial_r w^{*}
646    \end{equation}
647    
648    The entire algorithm can be summarized as the sequential solution of
649    the following equations:
650    \begin{eqnarray}
651    u^{*} & = & u^{n} + \Delta t G_u^{(n+1/2)} \label{eq:ustar-nh} \\
652    v^{*} & = & v^{n} + \Delta t G_v^{(n+1/2)} \label{eq:vstar-nh} \\
653    w^{*} & = & w^{n} + \Delta t G_w^{(n+1/2)} \label{eq:wstar-nh} \\
654    \eta^* & = & \epsilon_{fs} \left( \eta^{n} +P-E+R \right)- \Delta t
655      \partial_x H \widehat{u^{*}}
656    + \partial_y H \widehat{v^{*}}
657    \\
658      \partial_x g H \partial_x \eta^{n+1}
659    + \partial_y g H \partial_y \eta^{n+1}
660    - \frac{\epsilon_{fs} \eta^{n+1}}{\Delta t^2}
661    & = &
662    - \frac{\eta^*}{\Delta t^2}
663    \label{eq:elliptic-nh}
664    \\
665    u^{**} & = & u^{*} - \Delta t g \partial_x \eta^{n+1} \label{eq:unx-nh}\\
666    v^{**} & = & v^{*} - \Delta t g \partial_y \eta^{n+1} \label{eq:vnx-nh}\\
667    \partial_{xx} \phi_{nh}^{n+1} + \partial_{yy} \phi_{nh}^{n+1} +
668    \partial_{rr} \phi_{nh}^{n+1} & = &
669    \partial_x u^{**} + \partial_y v^{**} + \partial_r w^{*} \\
670    u^{n+1} & = & u^{**} - \Delta t \partial_x \phi_{nh}^{n+1} \label{eq:un+1-nh}\\
671    v^{n+1} & = & v^{**} - \Delta t \partial_y \phi_{nh}^{n+1} \label{eq:vn+1-nh}\\
672    \partial_r w^{n+1} & = & - \partial_x u^{n+1} - \partial_y v^{n+1}
673    \end{eqnarray}
674    where the last equation is solved by vertically integrating for
675    $w^{n+1}$.
676    
677    
678    
# Line 611  $\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h) Line 715  $\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h)
715    
716    
717  Once ${\eta}^{n+1}$ has been found, substituting into  Once ${\eta}^{n+1}$ has been found, substituting into
718  \ref{eq-tDsC-Hmom} yields $\vec{\bf v}^{n+1}$ if the model is  \ref{eq:discrete-time-u,eq:discrete-time-v} yields $\vec{\bf v}^{n+1}$ if the model is
719  hydrostatic ($\epsilon_{nh}=0$):  hydrostatic ($\epsilon_{nh}=0$):
720  $$  $$
721  \vec{\bf v}^{n+1} = \vec{\bf v}^{*}  \vec{\bf v}^{n+1} = \vec{\bf v}^{*}
# Line 621  $$ Line 725  $$
725  This is known as the correction step. However, when the model is  This is known as the correction step. However, when the model is
726  non-hydrostatic ($\epsilon_{nh}=1$) we need an additional step and an  non-hydrostatic ($\epsilon_{nh}=1$) we need an additional step and an
727  additional equation for $\phi'_{nh}$. This is obtained by substituting  additional equation for $\phi'_{nh}$. This is obtained by substituting
728  \ref{eq-tDsC-Hmom} and \ref{eq-tDsC-Vmom} into  \ref{eq:discrete-time-u-nh}, \ref{eq:discrete-time-v-nh} and \ref{eq:discrete-time-w-nh}
729  \ref{eq-tDsC-cont}:  into continuity:
730  \begin{equation}  \begin{equation}
731  \left[ {\bf \nabla}_h^2 + \partial_{rr} \right] {\phi'_{nh}}^{n+1}  \left[ {\bf \nabla}_h^2 + \partial_{rr} \right] {\phi'_{nh}}^{n+1}
732  = \frac{1}{\Delta t} \left(  = \frac{1}{\Delta t} \left(
# Line 702  In the code, $\beta,\gamma$ are defined Line 806  In the code, $\beta,\gamma$ are defined
806  {\it implicSurfPress}, {\it implicDiv2DFlow}. They are read from  {\it implicSurfPress}, {\it implicDiv2DFlow}. They are read from
807  the main data file "{\it data}" and are set by default to 1,1.  the main data file "{\it data}" and are set by default to 1,1.
808    
809  Equations \ref{eq-tDsC-Hmom} and \ref{eq-tDsC-eta} are modified as follows:  Equations \ref{eq:ustar-backward-free-surface} --
810    \ref{eq:vn+1-backward-free-surface} are modified as follows:
811  $$  $$
812  \frac{ \vec{\bf v}^{n+1} }{ \Delta t }  \frac{ \vec{\bf v}^{n+1} }{ \Delta t }
813  + {\bf \nabla}_h b_s [ \beta {\eta}^{n+1} + (1-\beta) {\eta}^{n} ]  + {\bf \nabla}_h b_s [ \beta {\eta}^{n+1} + (1-\beta) {\eta}^{n} ]

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.22