Back to home page

darwin3

 
 

    


Warning, /doc/algorithm/nonlinear-freesurf.rst is written in an unsupported language. File is not indexed.

view on githubraw file Latest commit 0bad585a on 2022-02-16 18:55:09 UTC
4f2617d475 Jeff*0001 .. _nonlinear-freesurface:
                0002 
                0003 Non-linear free-surface
                0004 -----------------------
                0005 
                0006 Options have been added to the model that concern the free surface formulation.
                0007 
                0008 Pressure/geo-potential and free surface
                0009 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0010 
0bad585a21 Navi*0011 For the atmosphere, since :math:`\phi = \phi_{\rm topo} - \int^p_{p_s} \alpha dp`, subtracting the
4f2617d475 Jeff*0012 reference state defined in section :numref:`hpe-p-geo-potential-split` :
                0013 
                0014 
                0015 .. math::
0bad585a21 Navi*0016      \phi_o = \phi_{\rm topo} - \int^p_{p_o} \alpha_o dp
                0017      \hspace{5mm}\mathrm{with}\hspace{3mm} \phi_o(p_o)=\phi_{\rm topo}
4f2617d475 Jeff*0018 
                0019 we get:
                0020 
                0021 .. math:: \phi' = \phi - \phi_o = \int^{p_s}_p \alpha dp - \int^{p_o}_p \alpha_o dp
                0022 
                0023 For the ocean, the reference state is simpler since :math:`\rho_c`
                0024 does not dependent on :math:`z` (:math:`b_o=g`) and the surface
                0025 reference position is uniformly :math:`z=0` (:math:`R_o=0`), and the
                0026 same subtraction leads to a similar relation. For both fluids, using
                0027 the isomorphic notations, we can write:
                0028 
0bad585a21 Navi*0029 .. math:: \phi' = \int^{r_{\rm surf}}_r b~ dr - \int^{R_o}_r b_o dr
4f2617d475 Jeff*0030 
                0031 and re-write as:
                0032 
                0033 .. math::
0bad585a21 Navi*0034      \phi' = \int^{r_{\rm surf}}_{R_o} b~ dr + \int^{R_o}_r (b - b_o) dr
4f2617d475 Jeff*0035      :label: split-phi-Ro
                0036 
                0037 or:
                0038 
                0039 .. math::
0bad585a21 Navi*0040     \phi' = \int^{r_{surf}}_{R_o} b_o dr + \int^{r_{\rm surf}}_r (b - b_o) dr
4f2617d475 Jeff*0041     :label: split-phi-bo
                0042 
                0043 In section :numref:`finding_the_pressure_field`, following
                0044 eq. :eq:`split-phi-Ro`, the pressure/geo-potential :math:`\phi'` has been
                0045 separated into surface (:math:`\phi_s`), and hydrostatic anomaly
0bad585a21 Navi*0046 (:math:`\phi'_{\rm hyd}`). In this section, the split between :math:`\phi_s`
                0047 and :math:`\phi'_{\rm hyd}` is made according to equation :eq:`split-phi-bo`.
4f2617d475 Jeff*0048 This slightly different definition reflects the actual implementation in
                0049 the code and is valid for both linear and non-linear free-surface
                0050 formulation, in both r-coordinate and r\*-coordinate.
                0051 
                0052 Because the linear free-surface approximation ignores the tracer
                0053 content of the fluid parcel between :math:`R_o` and
0bad585a21 Navi*0054 :math:`r_{\rm surf}=R_o+\eta`, for consistency reasons, this part is also
                0055 neglected in :math:`\phi'_{\rm hyd}` :
4f2617d475 Jeff*0056 
0bad585a21 Navi*0057 .. math:: \phi'_{\rm hyd} = \int^{r_{\rm surf}}_r (b - b_o) dr \simeq \int^{R_o}_r (b - b_o) dr
4f2617d475 Jeff*0058 
                0059 Note that in this case, the two definitions of :math:`\phi_s` and
0bad585a21 Navi*0060 :math:`\phi'_{\rm hyd}` from equations :eq:`split-phi-Ro` and
4f2617d475 Jeff*0061 :eq:`split-phi-bo` converge toward the same (approximated) expressions:
0bad585a21 Navi*0062 :math:`\phi_s = \int^{r_{\rm surf}}_{R_o} b_o dr` and
                0063 :math:`\phi'_{\rm hyd}=\int^{R_o}_r b' dr`.
dcaaa42497 Jeff*0064 On the contrary, the unapproximated formulation
                0065 (see :numref:`free_surf_effect_col_thick`) retains the full expression:
0bad585a21 Navi*0066 :math:`\phi'_{\rm hyd} = \int^{r_{\rm surf}}_r (b - b_o) dr` . This is
4f2617d475 Jeff*0067 obtained by selecting :varlink:`nonlinFreeSurf` =4 in parameter file ``data``.
                0068 Regarding the surface potential:
                0069 
                0070 .. math::
                0071     \phi_s = \int_{R_o}^{R_o+\eta} b_o dr = b_s \eta
                0072      \hspace{5mm}\mathrm{with}\hspace{5mm}
                0073      b_s = \frac{1}{\eta} \int_{R_o}^{R_o+\eta} b_o dr
                0074 
                0075 :math:`b_s \simeq b_o(R_o)` is an excellent approximation (better
                0076 than the usual numerical truncation, since generally :math:`|\eta|` is
                0077 smaller than the vertical grid increment).
                0078 
                0079 For the ocean, :math:`\phi_s = g \eta` and :math:`b_s = g` is uniform.
                0080 For the atmosphere, however, because of topographic effects, the
                0081 reference surface pressure :math:`R_o=p_o` has large spatial variations
                0082 that are responsible for significant :math:`b_s` variations (from 0.8 to
0bad585a21 Navi*0083 1.2 :math:`\rm [m^3/kg]`). For this reason, when :varlink:`uniformLin_PhiSurf`
4f2617d475 Jeff*0084 =.FALSE. (parameter file ``data``, namelist ``PARAM01``) a non-uniform
                0085 linear coefficient :math:`b_s` is used and computed (:filelink:`INI_LINEAR_PHISURF <model/src/ini_linear_phisurf.F>`)
                0086 according to the reference surface pressure :math:`p_o`:
0bad585a21 Navi*0087 :math:`b_s = b_o(R_o) = c_p \kappa (p_o / P^o_{\rm SLP})^{(\kappa - 1)} \theta_{ref}(p_o)`,
                0088 with :math:`P^o_{\rm SLP}` the mean sea-level pressure.
4f2617d475 Jeff*0089 
dcaaa42497 Jeff*0090 .. _free_surf_effect_col_thick:
                0091 
4f2617d475 Jeff*0092 Free surface effect on column total thickness (Non-linear free-surface)
                0093 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0094 
0bad585a21 Navi*0095 The total thickness of the fluid column is :math:`r_{\rm surf} - R_{\rm fixed} =
                0096 \eta + R_o - R_{\rm fixed}`. In most applications, the free surface
4f2617d475 Jeff*0097 displacements are small compared to the total thickness
0bad585a21 Navi*0098 :math:`\eta \ll H_o = R_o - R_{\rm fixed}`. In the previous sections and in
4f2617d475 Jeff*0099 older version of the model, the linearized free-surface approximation
0bad585a21 Navi*0100 was made, assuming :math:`r_{\rm surf} - R_{\rm fixed} \simeq H_o` when
4f2617d475 Jeff*0101 computing horizontal transports, either in the continuity equation or in
                0102 tracer and momentum advection terms. This approximation is dropped when
                0103 using the non-linear free-surface formulation and the total thickness,
                0104 including the time varying part :math:`\eta`, is considered when
                0105 computing horizontal transports. Implications for the barotropic part
                0106 are presented hereafter. In section :numref:`tracer-cons-nonlinear-freesurface`
                0107 consequences for tracer conservation is briefly discussed (more details
                0108 can be found in Campin et al. (2004) :cite:`cam:04`) ; the general
                0109 time-stepping is presented in section :numref:`nonlin-freesurf-timestepping`
                0110 with some limitations regarding the vertical resolution in section
                0111 :numref:`nonlin-freesurf-dzsurf`.
                0112 
                0113 In the non-linear formulation, the continuous form of the model
                0114 equations remains unchanged, except for the 2D continuity equation
                0115 :eq:`discrete-time-backward-free-surface` which is now integrated from
0bad585a21 Navi*0116 :math:`R_{\rm fixed}(x,y)` up to :math:`r_{\rm surf}=R_o+\eta` :
4f2617d475 Jeff*0117 
                0118 .. math::
0bad585a21 Navi*0119    \epsilon_{\rm fs} \partial_t \eta =
                0120    \left. \dot{r} \right|_{r=r_{\rm surf}} + \epsilon_{\rm fw} ({\mathcal{P-E}}) =
                0121    - {\bf \nabla}_h \cdot \int_{R_{\rm fixed}}^{R_o+\eta} \vec{\bf v} dr
94151a9b18 Jeff*0122    + \epsilon_{fw} ({\mathcal{P-E}})
4f2617d475 Jeff*0123 
                0124 Since :math:`\eta` has a direct effect on the horizontal velocity
0bad585a21 Navi*0125 (through :math:`\nabla_h \Phi_{\rm surf}`), this adds a non-linear term to
4f2617d475 Jeff*0126 the free surface equation. Several options for the time discretization
                0127 of this non-linear part can be considered, as detailed below.
                0128 
                0129 If the column thickness is evaluated at time step :math:`n`, and with
                0130 implicit treatment of the surface potential gradient, equations
                0131 :eq:`eq-solve2D` and :eq:`eq-solve2D_rhs` become:
                0132 
                0133 .. math::
                0134 
                0135    \begin{aligned}
0bad585a21 Navi*0136    \epsilon_{\rm fs} {\eta}^{n+1} -
                0137    {\bf \nabla}_h \cdot \Delta t^2 (\eta^{n}+R_o-R_{\rm fixed})
4f2617d475 Jeff*0138    {\bf \nabla}_h b_s {\eta}^{n+1}
                0139    = {\eta}^*\end{aligned}
                0140 
                0141 where
                0142 
                0143 .. math::
                0144 
                0145    \begin{aligned}
0bad585a21 Navi*0146    {\eta}^* = \epsilon_{\rm fs} \: {\eta}^{n} -
                0147    \Delta t {\bf \nabla}_h \cdot \int_{R_{\rm fixed}}^{R_o+\eta^n} \vec{\bf v}^* dr
                0148    \: + \: \epsilon_{\rm fw} \Delta_t ({\mathcal{P-E}})^{n}\end{aligned}
4f2617d475 Jeff*0149 
                0150 This method requires us to update the solver matrix at each time step.
                0151 
                0152 Alternatively, the non-linear contribution can be evaluated fully
                0153 explicitly:
                0154 
                0155 .. math::
                0156 
                0157    \begin{aligned}
0bad585a21 Navi*0158    \epsilon_{\rm fs} {\eta}^{n+1} -
                0159    {\bf \nabla}_h \cdot \Delta t^2 (R_o-R_{\rm fixed})
4f2617d475 Jeff*0160    {\bf \nabla}_h b_s {\eta}^{n+1}
                0161    = {\eta}^*
                0162    +{\bf \nabla}_h \cdot \Delta t^2 (\eta^{n})
                0163    {\bf \nabla}_h b_s {\eta}^{n}\end{aligned}
                0164 
                0165 This formulation allows one to keep the initial solver matrix unchanged
                0166 though throughout the integration, since the non-linear free surface
                0167 only affects the RHS.
                0168 
                

** Warning **

Wide character in print at /usr/local/share/lxr/source line 1030, <$git> line 170.

0169 Finally, another option is a “linearized” formulation where the total 0170 column thickness appears only in the integral term of the RHS 0171 :eq:`eq-solve2D_rhs` but not directly in the equation :eq:`eq-solve2D`. 0172 0173 Those different options (see :numref:`nonlinFreeSurf-flags`) have 0174 been tested and show little differences. However, we recommend the use 0175 of the most precise method (:varlink:`nonlinFreeSurf` =4) since the computation cost 0176 involved in the solver matrix update is negligible. 0177 0178 .. table:: Non-linear free-surface flags 0179 :name: nonlinFreeSurf-flags 0180 0bad585a21 Navi*0181 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0182 | Parameter | Value | Description | 0183 +===========================+=========+=========================================================================================+ 0184 | :varlink:`nonlinFreeSurf` | -1 | linear free-surface, restart from a pickup file | 0185 | | | produced with #undef :varlink:`EXACT_CONSERV` code | 0186 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0187 | | 0 | linear free-surface (= default) | 0188 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0189 | | 4 | full non-linear free-surface | 0190 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0191 | | 3 | same as 4 but neglecting :math:`\int_{R_o}^{R_o+\eta} b' dr` in :math:`\Phi'_{\rm hyd}` | 0192 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0193 | | 2 | same as 3 but do not update cg2d solver matrix | 0194 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0195 | | 1 | same as 2 but treat momentum as in linear free-surface | 0196 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0197 | :varlink:`select_rStar` | 0 | do not use :math:`r^*` vertical coordinate (= default) | 0198 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0199 | | 2 | use :math:`r^*` vertical coordinate | 0200 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 0201 | | 1 | same as 2 but without the contribution of the | 0202 | | | slope of the coordinate in :math:`\nabla \Phi` | 0203 +---------------------------+---------+-----------------------------------------------------------------------------------------+ 4f2617d475 Jeff*0204 0205 0206 .. _tracer-cons-nonlinear-freesurface: 0207 0208 Tracer conservation with non-linear free-surface 0209 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0210 0211 To ensure global tracer conservation (i.e., the total amount) as well as 0212 local conservation, the change in the surface level thickness must be 0213 consistent with the way the continuity equation is integrated, both in 0214 the barotropic part (to find :math:`\eta`) and baroclinic part (to find 0215 :math:`w = \dot{r}`). 0216 0217 To illustrate this, consider the shallow water model, with a source of 94151a9b18 Jeff*0218 fresh water (:math:`\mathcal{P}`): 4f2617d475 Jeff*0219 0bad585a21 Navi*0220 .. math:: \partial_t h + \nabla \cdot h \vec{\bf v} = \mathcal{P} 4f2617d475 Jeff*0221 0222 where :math:`h` is the total thickness of the water column. To conserve 0223 the tracer :math:`\theta` we have to discretize: 0224 0225 .. math:: 0bad585a21 Navi*0226 \partial_t (h \theta) + \nabla \cdot ( h \theta \vec{\bf v}) 0227 = \mathcal{P} \theta_{\rm rain} 4f2617d475 Jeff*0228 0229 Using the implicit (non-linear) free surface described above 0230 (:numref:`press_meth_linear`) we have: 0231 0232 .. math:: 0233 \begin{aligned} 0bad585a21 Navi*0234 h^{n+1} = h^{n} - \Delta t \nabla \cdot (h^n \, \vec{\bf v}^{n+1} ) + \Delta t \mathcal{P} \\\end{aligned} 4f2617d475 Jeff*0235

** Warning **

Wide character in print at /usr/local/share/lxr/source line 1030, <$git> line 237.

0236 The discretized form of the tracer equation must adopt the same “form” 0237 in the computation of tracer fluxes, that is, the same value of 0238 :math:`h`, as used in the continuity equation: 0239 0240 .. math:: 0241 \begin{aligned} 0242 h^{n+1} \, \theta^{n+1} = h^n \, \theta^n 0bad585a21 Navi*0243 - \Delta t \nabla \cdot (h^n \, \theta^n \, \vec{\bf v}^{n+1}) 0244 + \Delta t \mathcal{P} \theta_{\rm rain}\end{aligned} 4f2617d475 Jeff*0245 0246 The use of a 3 time-levels time-stepping scheme such as the 0247 Adams-Bashforth make the conservation sightly tricky. The current 0248 implementation with the Adams-Bashforth time-stepping provides an exact 0249 local conservation and prevents any drift in the global tracer content 0250 (Campin et al. (2004) :cite:`cam:04`). Compared to the linear free-surface 0251 method, an additional step is required: the variation of the water 0252 column thickness (from :math:`h^n` to :math:`h^{n+1}`) is not 0253 incorporated directly into the tracer equation. Instead, the model uses 0254 the :math:`G_\theta` terms (first step) as in the linear free surface

** Warning **

Wide character in print at /usr/local/share/lxr/source line 1030, <$git> line 256.

0255 formulation (with the “*surface correction*” turned “on”, see tracer 0256 section): 0257 0258 .. math:: 0bad585a21 Navi*0259 G_\theta^n = \left(- \nabla \cdot (h^n \, \theta^n \, \vec{\bf v}^{n+1}) 0260 - \dot{r}_{\rm surf}^{n+1} \theta^n \right) / h^n 4f2617d475 Jeff*0261 0262 Then, in a second step, the thickness variation (expansion/reduction) 0263 is taken into account: 0264 0265 .. math:: 0266 \theta^{n+1} = \theta^n + \Delta t \frac{h^n}{h^{n+1}} 94151a9b18 Jeff*0267 \left( G_\theta^{(n+1/2)} + \mathcal{P} (\theta_{\mathrm{rain}} - \theta^n )/h^n \right) 4f2617d475 Jeff*0268 0269 Note that with a simple forward time step (no Adams-Bashforth), these 0270 two formulations are equivalent, since 0bad585a21 Navi*0271 :math:`(h^{n+1} - h^{n})/ \Delta t = \mathcal{P} - \nabla \cdot (h^n \, \vec{\bf v}^{n+1} ) = P + \dot{r}_{\rm surf}^{n+1}` 4f2617d475 Jeff*0272 0273 .. _nonlin-freesurf-timestepping: 0274 0275 Time stepping implementation of the non-linear free-surface 0276 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0277 0278 The grid cell thickness was hold constant with the linear free-surface; 0279 with the non-linear free-surface, it is now varying in time, at least at 0280 the surface level. This implies some modifications of the general 0281 algorithm described earlier in sections :numref:`adams-bashforth-sync` and 0282 :numref:`adams-bashforth-staggered`. 0283 0284 A simplified version of the staggered in time, non-linear free-surface 0285 algorithm is detailed hereafter, and can be compared to the equivalent 0286 linear free-surface case (eq. :eq:`Gv-n-staggered` to 0287 :eq:`t-n+1-staggered`) and can also be easily transposed to the 0288 synchronous time-stepping case. Among the simplifications, salinity 0289 equation, implicit operator and detailed elliptic equation are 0290 omitted. Surface forcing is explicitly written as fluxes of 0291 temperature, fresh water and momentum, 94151a9b18 Jeff*0292 :math:`\mathcal{Q}^{n+1/2}, \mathcal{P}^{n+1/2}, \mathcal{F}_{\bf v}^n` respectively. :math:`h^n` 4f2617d475 Jeff*0293 and :math:`dh^n` are the column and grid box thickness in 0294 r-coordinate. 0295 0296 .. math:: 0bad585a21 Navi*0297 \phi^{n}_{\rm hyd} = \int b(\theta^{n},S^{n},r) dr 4f2617d475 Jeff*0298 :label: phi-hyd-nlfs 0299 0300 .. math:: 0301 \vec{\bf G}_{\vec{\bf v}}^{n-1/2}\hspace{-2mm} = 0302 \vec{\bf G}_{\vec{\bf v}} (dh^{n-1},\vec{\bf v}^{n-1/2}) 0303 \hspace{+2mm};\hspace{+2mm} 0304 \vec{\bf G}_{\vec{\bf v}}^{(n)} = 0305 \frac{3}{2} \vec{\bf G}_{\vec{\bf v}}^{n-1/2} 0306 - \frac{1}{2} \vec{\bf G}_{\vec{\bf v}}^{n-3/2} 0307 :label: Gv-n-nlfs 0308 0309 .. math:: 0310 \vec{\bf v}^{*} = \vec{\bf v}^{n-1/2} + \Delta t \frac{dh^{n-1}}{dh^{n}} \left( 0311 \vec{\bf G}_{\vec{\bf v}}^{(n)} + F_{\vec{\bf v}}^{n}/dh^{n-1} \right) 0bad585a21 Navi*0312 - \Delta t \nabla \phi_{\rm hyd}^{n} 4f2617d475 Jeff*0313 :label: vstar-nlfs 0314 0315 .. math:: 0bad585a21 Navi*0316 \longrightarrow \rm update \phantom{x} \rm model \phantom{x} \rm geometry : {\bf hFac}(dh^n) 4f2617d475 Jeff*0317 0318 .. math:: 0319 \begin{aligned} 0320 \eta^{n+1/2} \hspace{-1mm} & = 0321 \eta^{n-1/2} + \Delta t P^{n+1/2} - \Delta t 0bad585a21 Navi*0322 \nabla \cdot \int \vec{\bf v}^{n+1/2} dh^{n} \\ 4f2617d475 Jeff*0323 & = \eta^{n-1/2} + \Delta t P^{n+1/2} - \Delta t 0bad585a21 Navi*0324 \nabla \cdot \int \!\!\! \left( \vec{\bf v}^* - g \Delta t \nabla \eta^{n+1/2} \right) dh^{n}\end{aligned} 4f2617d475 Jeff*0325 :label: nstar-nlfs 0326 0327 .. math:: 0328 \vec{\bf v}^{n+1/2}\hspace{-2mm} = 0329 \vec{\bf v}^{*} - g \Delta t \nabla \eta^{n+1/2} 0330 :label: v-n+1-nlfs 0331 0332 .. math:: 0333 h^{n+1} = h^{n} + \Delta t P^{n+1/2} - \Delta t 0bad585a21 Navi*0334 \nabla \cdot \int \vec{\bf v}^{n+1/2} dh^{n} 4f2617d475 Jeff*0335 :label: h-n+1-nlfs 0336 0337 .. math:: 0338 G_{\theta}^{n} = G_{\theta} ( dh^{n}, u^{n+1/2}, \theta^{n} ) 0339 \hspace{+2mm};\hspace{+2mm} 0340 G_{\theta}^{(n+1/2)} = \frac{3}{2} G_{\theta}^{n} - \frac{1}{2} G_{\theta}^{n-1} 0341 :label: Gt-n-nlfs 0342 0343 .. math:: 0344 \theta^{n+1} =\theta^{n} + \Delta t \frac{dh^n}{dh^{n+1}} \left( 0345 G_{\theta}^{(n+1/2)} 94151a9b18 Jeff*0346 +( P^{n+1/2} (\theta_{\mathrm{rain}}-\theta^n) + \mathcal{Q}^{n+1/2})/dh^n \right) 4f2617d475 Jeff*0347 :label: t-n+1-nlfs 0348 0349 Two steps have been added to linear free-surface algorithm (eq. 0350 :eq:`Gv-n-staggered` to :eq:`t-n+1-staggered`): Firstly, the model

** Warning **

Wide character in print at /usr/local/share/lxr/source line 1030, <$git> line 352.

0351 “geometry” (here the **hFacC,W,S**) is updated just before entering 0352 :filelink:`SOLVE_FOR_PRESSURE <model/src/solve_for_pressure.F>`, 0353 using the current :math:`dh^{n}` field. 0354 Secondly, the vertically integrated continuity equation 0355 :eq:`h-n+1-nlfs` has been added (:varlink:`exactConserv` =.TRUE., in 0356 parameter file ``data``, namelist ``PARM01``) just before computing the 0357 vertical velocity, in subroutine :filelink:`INTEGR_CONTINUITY <model/src/integr_continuity.F>`. Although this 0358 equation might appear redundant with :eq:`nstar-nlfs`, the 0359 integrated column thickness :math:`h^{n+1}` will be different from 0360 :math:`\eta^{n+1/2} + H`  in the following cases: 0361 0362 - when Crank-Nicolson time-stepping is used (see :numref:`crank-nicolson_baro`). 0363 0364 - when filters are applied to the flow field, after :eq:`v-n+1-nlfs`, 0365 and alter the divergence of the flow. 0366 0367 - when the solver does not iterate until convergence; for example, 0368 because a too large residual target was set (:varlink:`cg2dTargetResidual`, 0369 parameter file ``data``, namelist ``PARM02``). 0370 0371 In this staggered time-stepping algorithm, the momentum tendencies are 0372 computed using :math:`dh^{n-1}` geometry factors :eq:`Gv-n-nlfs` 0373 and then rescaled in subroutine :filelink:`TIMESTEP <model/src/timestep.F>`, :eq:`vstar-nlfs`, 0374 similarly to tracer tendencies (see :numref:`tracer-cons-nonlinear-freesurface`). 0375 The tracers are stepped forward later, 0376 using the recently updated flow field :math:`{\bf v}^{n+1/2}` and the 0377 corresponding model geometry :math:`dh^{n}` to compute the tendencies 0378 :eq:`Gt-n-nlfs`; then the tendencies are rescaled by 0379 :math:`dh^n/dh^{n+1}` to derive the new tracers values 0380 :math:`(\theta,S)^{n+1}` (:eq:`t-n+1-nlfs`, in subroutines :filelink:`CALC_GT <model/src/calc_gt.F>`, 0381 :filelink:`CALC_GS <model/src/calc_gs.F>`). 0382 0383 Note that the fresh-water input is added in a consistent way in the 0384 continuity equation and in the tracer equation, taking into account the 0385 fresh-water temperature :math:`\theta_{\mathrm{rain}}`. 0386 0387 Regarding the restart procedure, two 2D fields :math:`h^{n-1}` and 0388 :math:`(h^n-h^{n-1})/\Delta t` in addition to the standard state 0389 variables and tendencies (:math:`\eta^{n-1/2}`, 0390 :math:`{\bf v}^{n-1/2}`, :math:`\theta^n`, :math:`S^n`, 0391 :math:`{\bf G}_{\bf v}^{n-3/2}`, :math:`G_{\theta,S}^{n-1}`) are

** Warning **

Wide character in print at /usr/local/share/lxr/source line 1030, <$git> line 393.

0392 stored in a “*pickup*” file. The model restarts reading this 0393 pickup file, then updates the model geometry according to 0394 :math:`h^{n-1}`, and compute :math:`h^n` and the vertical velocity 0395 before starting the main calling sequence (eq. :eq:`phi-hyd-nlfs` to 0396 :eq:`t-n+1-nlfs`, :filelink:`FORWARD_STEP <model/src/forward_step.F>`). 0397 0398 .. admonition:: S/R :filelink:`INTEGR_CONTINUITY <model/src/integr_continuity.F>` 0399 :class: note 0400 0401 | :math:`h^{n+1} - H_o` : :varlink:`etaH` ( :filelink:`DYNVARS.h <model/inc/DYNVARS.h>` ) 0402 | :math:`h^n - H_o` : :varlink:`etaHnm1` ( :filelink:`SURFACE.h <model/inc/SURFACE.h>` ) 0403 | :math:`(h^{n+1} - h^n ) / \Delta t` : :varlink:`dEtaHdt` ( :filelink:`SURFACE.h <model/inc/SURFACE.h>` ) 0404 0405 0406 .. _nonlin-freesurf-dzsurf: 0407 0408 Non-linear free-surface and vertical resolution 0409 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0410 0411 When the amplitude of the free-surface variations becomes as large as 0412 the vertical resolution near the surface, the surface layer thickness 0413 can decrease to nearly zero or can even vanish completely. This later 0414 possibility has not been implemented, and a minimum relative thickness 0415 is imposed (:varlink:`hFacInf`, parameter file ``data``, namelist ``PARM01``) to 0416 prevent numerical instabilities caused by very thin surface level. 0417 0418 A better alternative to the vanishing level problem relies on a different vertical coordinate 0419 :math:`r^*` : The time variation of the total column thickness becomes 0420 part of the :math:`r^*` coordinate motion, as in a :math:`\sigma_{z},\sigma_{p}` 0421 model, but the fixed part related to topography is treated as in a 0422 height or pressure coordinate model. A complete description is given in 0423 Adcroft and Campin (2004) :cite:`adcroft:04a`. 0424 0425 The time-stepping implementation of the :math:`r^*` coordinate is 0426 identical to the non-linear free-surface in :math:`r` coordinate, and 0427 differences appear only in the spacial discretization. 0428