|
|
|||
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 UTC4f2617d475 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
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated from https://github.com/darwinproject/darwin3 by the 2.3.7-MITgcm-0.1 LXR engine. The LXR team |
|