Back to home page

MITgcm

 
 

    


Warning, /doc/examples/held_suarez_cs/held_suarez_cs.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
1c8cebb321 Jeff*0001 .. _sec_held_suarez_cs:
                0002 
                0003 Held-Suarez Atmosphere
                0004 ======================
d67096e55c Jeff*0005 
                0006 (in directory: :filelink:`verification/tutorial_held_suarez_cs/`)
                0007 
                0008 This example illustrates the use of the MITgcm as an atmospheric GCM,
                0009 using simple Held and Suarez (1994) :cite:`held-suar:94` forcing to simulate
                0010 atmospheric dynamics on global scale. The set-up uses the rescaled
                0011 pressure coordinate (:math:`p^*`) of Adcroft and Campin (2004) :cite:`adcroft:04a` in
                0012 the vertical direction, with 20 equally-spaced levels, and the conformal
                0013 cube-sphere grid (C32) described in Adcroft et al. (2004) :cite:`adcroft:04b`.
                0014 
                0015 Overview
                0016 --------
                0017 
                0018 This example demonstrates using the MITgcm to simulate the planetary
                0019 atmospheric circulation, with flat orography and simplified forcing. In
                0020 particular, only dry air processes are considered and radiation effects
                0021 are represented by a simple Newtonian cooling, Thus, this example does
                0022 not rely on any particular atmospheric physics package. This kind of
                0023 simplified atmospheric simulation has been widely used in GFD-type
                0024 experiments and in intercomparison projects of AGCM dynamical cores
                0025 (Held and Suarez 1994 :cite:`held-suar:94`).
                0026 
                0027 The horizontal grid is obtain from the projection of a uniform gridded
                0028 cube to the sphere. Each of the 6 faces has the same resolution, with
                0029 32 :math:`\times` 32 grid points. The equator coincides with a grid
                0030 line and crosses through the middle in 4 of the 6 faces, leaving 2 faces
                0031 for the northern and southern polar regions. This curvilinear grid
                0032 requires the use of the 2\ :sup:`nd` generation exchange topology (:filelink:`pkg/exch2`)
                0033 to connect tile and face edges, but without any limitation on the number
                0034 of processors.
                0035 
                0036 The use of the :math:`p^*` coordinate with 20 equally spaced levels
                0037 (20 :math:`\times` 50 mb, from :math:`p^*=1000` mb to
                0038 :math:`0` at the top of the atmosphere) follows the choice of
                0039 Held and Suarez (1994) :cite:`held-suar:94`. Note that without topography, the
                0040 :math:`p^*` coordinate and the normalized pressure coordinate
                0041 (:math:`\sigma_p`) coincide exactly. Both viscosity and diffusivity are
                0042 set to zero here, but an 8\ :sup:`th` order Shapiro (1970) :cite:`shapiro:70`
                0043 filter is applied to both momentum and potential temperature, to remove
                0044 selectively grid scale noise. Apart from the horizontal grid, this
                0045 experiment is made very similar to the grid-point model case used in
                0046 the Held and Suarez (1994) :cite:`held-suar:94` study.
                0047 
                0048 At this resolution, the configuration can be integrated forward for
                0049 many years on a single processor desktop computer.
                0050 
                0051 Forcing
                0052 -------
                0053 
                0054 The model is forced by relaxation to a radiative equilibrium temperature
                0055 from Held and Suarez (1994) :cite:`held-suar:94`. A linear frictional drag
                0056 (Rayleigh damping) is applied in the lower part of the atmosphere and
                0057 accounts for surface friction and momentum dissipation in the boundary
                0058 layer. Altogether, this yields the following forcing from
                0059 Held and Suarez (1994) :cite:`held-suar:94` that is applied to the fluid:
                0060 
                0061 .. math::
0bad585a21 Navi*0062    \vec{\boldsymbol{\cal F}_\mathbf{v}} = -k_\mathbf{v}(p)\vec{\mathbf{v}}_h
d67096e55c Jeff*0063    :label: eg-hs-global_forcing_fv
                0064 
                0065 .. math::
                0066    {\cal F}_{\theta} = -k_{\theta}(\varphi,p)[\theta-\theta_{eq}(\varphi,p)]
                0067   :label: eg-hs-global_forcing_ft
                0068 
0bad585a21 Navi*0069 where :math:`\vec{\boldsymbol{\cal F}_\mathbf{v}}`, :math:`{\cal F}_{\theta}`, are
d67096e55c Jeff*0070 the forcing terms in the zonal and meridional momentum and in the
                0071 potential temperature equations, respectively. The term
                0072 :math:`k_\mathbf{v}` in :eq:`eg-hs-global_forcing_fv`
                0073 applies a Rayleigh damping that is active within the planetary boundary
                0074 layer. It is defined so as to decay as pressure decreases according to
                0075 
                0076 .. math::
                0077 
                0078    \begin{aligned}
                0079    \label{eq:eg-hs-define_kv}
0bad585a21 Navi*0080    k_\mathbf{v} & = k_{f}~\max[0,~(p^*/P^{0}_{s}-\sigma_{b})/(1-\sigma_{b})]
d67096e55c Jeff*0081    \\
0bad585a21 Navi*0082    \sigma_{b} & = 0.7 ~~{\rm and}~~
d67096e55c Jeff*0083    k_{f}  =  1/86400 ~{\rm s}^{-1}\end{aligned}
                0084 
                0085 where :math:`p^*` is the pressure level of the cell center and
                0086 :math:`P^{0}_{s}` is the pressure at the base of the atmospheric column,
                0087 which is constant and uniform here (:math:`= 10^5 {\rm Pa}`), in the
                0088 absence of topography.
                0089 
                0090 The equilibrium temperature :math:`\theta_{eq}` and relaxation time
                0091 scale :math:`k_{\theta}` are set to:
                0092 
                0093 .. math::
                0094    \theta_{eq}(\varphi,p^*)  = \max \{ 200 (P^{0}_{s}/p^*)^\kappa,
                0095    \nonumber \hspace{2mm} 315 - \Delta T_y~\sin^2(\varphi)
                0096      - \Delta \theta_z \cos^2(\varphi) \log(p^*/P^{0}_s) \}
                0097    :label: eg-hs-define_Teq
                0098 
                0099 .. math::
                0100    k_{\theta}(\varphi,p^*) =
                0101    k_a + (k_s -k_a)~\cos^4(\varphi)~\max \{ 0,\nonumber \hspace{2mm} (p^*/P^{0}_{s}-\sigma_{b})/(1-\sigma_{b}) \}
                0102    :label: eg-hs-define_kT
                0103 
                0104 with:
                0105 
                0106 .. math::
                0107 
                0108    \begin{aligned}
                0109     \Delta T_y = 60 \text{ K, }  k_a &= 1/(40 \cdot 86400) ~{\rm s}^{-1}\\
                0110    \Delta \theta_z = 10 \text{ K, }  k_s &= 1/(4 \cdot 86400) ~{\rm s}^{-1}\end{aligned}
                0111 
                0112 Initial conditions correspond to a resting state with horizontally
                0113 uniform stratified fluid. The initial temperature profile is simply the
                0114 horizontal average of the radiative equilibrium temperature.
                0115 
                0116 Set-up description
                0117 ------------------
                0118 
                0119 The model is configured in hydrostatic form, using non-Boussinesq
                0120 :math:`p^*` coordinate. The vertical resolution is uniform,
                0121 :math:`\Delta p^* = 50 \times 10^2` Pa, with 20 levels, from
                0122 :math:`p^*=10^5` Pa to :math:`0` at the top. The domain is discretized
                0123 using the C32 cube-sphere grid (see Adcroft et al. 2004 :cite:`adcroft:04b`) that covers
                0124 the whole sphere with a relatively uniform grid spacing. The resolution
                0125 at the equator or along the Greenwich meridian is similar to a
                0126 128 :math:`\times` 64 equally spaced longitude-latitude grid, but
                0127 requires 25% less grid points. Grid spacing and grid-point
                0128 location are not computed by the model, but instead read from files.
                0129 
                0130 The vector-invariant form of the momentum equation (see :numref:`vec_invar_mom_eqs`)
                0131 is used so that no explicit metrics are necessary.
                0132 
                0133 Applying the vector-invariant discretization to the atmospheric
                0134 equations :eq:`atmos-prime`, and adding the forcing terms
                0135 :eq:`eg-hs-global_forcing\_fv`, :eq:`eg-hs-global_forcing_ft` on the
                0136 right-hand-side, leads to the set of equations that are solved in this
                0137 configuration:
                0138 
                0139 .. math::
                0140    \frac{\partial \vec{\mathbf{v}}_h}{\partial t}
0bad585a21 Navi*0141    +(f + \zeta)\hat{\boldsymbol{k}} \times \vec{\mathbf{v}}_h
                0142    + \nabla_{p} (\mathrm{KE})
d67096e55c Jeff*0143    + \omega \frac{\partial \vec{\mathbf{v}}_h }{\partial p}
0bad585a21 Navi*0144    + \nabla_p \Phi ^{\prime }
                0145    = -k_\mathbf{v} \vec{\mathbf{v}}_h
d67096e55c Jeff*0146    :label: eg-hs-model_equations
                0147 
                0148 .. math::
                0149    \frac{\partial \Phi ^{\prime }}{\partial p}
                0150    +\frac{\partial \Pi }{\partial p}\theta ^{\prime } =0
                0151 
                0152 .. math::
0bad585a21 Navi*0153     \nabla _{p}\cdot \vec{\mathbf{v}}_h+\frac{\partial \omega }{
d67096e55c Jeff*0154    \partial p} =0
                0155 
                0156 .. math::
                0157    \frac{\partial \theta }{\partial t}
0bad585a21 Navi*0158    +  \nabla _{p}\cdot (\theta \vec{\mathbf{v}}_h)
d67096e55c Jeff*0159    + \frac{\partial (\theta \omega)}{\partial p}
0bad585a21 Navi*0160    = -k_{\theta}[\theta-\theta_{\rm eq}]
d67096e55c Jeff*0161 
                0162 where :math:`\vec{\mathbf{v}}_h` and :math:`\omega = \frac{Dp}{Dt}` are
                0163 the horizontal velocity vector and the vertical velocity in pressure
                0164 coordinate, :math:`\zeta` is the relative vorticity and :math:`f` the
0bad585a21 Navi*0165 Coriolis parameter, :math:`\hat{\boldsymbol{k}}` is the vertical unity
                0166 vector, :math:`\mathrm{KE}` is the kinetic energy, :math:`\Phi` is the geopotential, and
d67096e55c Jeff*0167 :math:`\Pi` the Exner function
                0168 (:math:`\Pi = C_p (p/p_c)^\kappa` with :math:`p_c = 10^5` Pa). Primed variables
                0169 correspond to anomaly from the resting, uniformly
                0170 stratified state.
                0171 
                0172 As described in :numref:`discret_algorithm`, the continuity equation is integrated vertically,
                0173 to give a prognostic equation for the surface pressure :math:`p_s`:
                0174 
                0175 .. math::
                0176    \frac{\partial p_s}{\partial t} + \nabla_{h}\cdot \int_{0}^{p_s} \vec{\mathbf{v}}_h dp = 0
                0177 
                0178 The implicit free surface form of the pressure equation described in
                0179 Marshall et al. (1997) :cite:`marshall:97a` is employed to solve for :math:`p_s`;
                0180 Vertically integrating the hydrostatic balance gives the geopotential
                0181 :math:`\Phi'` and allows one to step forward the momentum equation
                0182 :eq:`eg-hs-model_equations`. The potential temperature,
                0183 :math:`\theta`, is stepped forward using the new velocity field
                0184 (see :numref:`adams-bashforth-staggered`).
                0185 
                0186 Numerical Stability Criteria
                0187 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0188 
                0189 The numerical stability for inertial oscillations
                0190 (see Adcroft 1995 :cite:`adcroft:95`):
                0191 
                0192 .. math::
0bad585a21 Navi*0193     S_{\rm inert} = f^{2} {\Delta t}^2
d67096e55c Jeff*0194     :label: eg-hs-inertial_stability
                0195 
                0196 evaluates to :math:`4 \times10^{-3}` at the poles, for
                0197 :math:`f=2\Omega\sin(\pi / 2) = 1.45\times10^{-4}~{\rm s}^{-1}`, which
0bad585a21 Navi*0198 is well below the :math:`S_{\rm inert} < 1` upper limit for stability.
d67096e55c Jeff*0199 The advective CFL (Adcroft 1995 :cite:`adcroft:95`) for a extreme maximum
0bad585a21 Navi*0200 horizontal flow speed of :math:`| \vec{\mathbf{u}} | = 90 {\rm m/s}`  and the
d67096e55c Jeff*0201 smallest horizontal grid spacing :math:`\Delta x = 1.1\times10^5 {\rm m}`:
                0202 
                0203 .. math::
0bad585a21 Navi*0204    S_{\rm adv} = \frac{| \vec{\mathbf{u}} | \Delta t}{ \Delta x}
d67096e55c Jeff*0205    :label: eg-hs-cfl_stability
                0206 
                0207 evaluates to 0.37, which is close to the stability limit of 0.5.
                0208 The stability parameter for internal gravity waves propagating with a
                0209 maximum speed of :math:`c_{g}=100~{\rm m/s}` (Adcroft 1995 :cite:`adcroft:95`)
                0210 
                0211 .. math::
                0212    S_{c} = \frac{c_{g} \Delta t}{ \Delta x}
                0213    :label: eg-hs-gfl_stability
                0214 
                0215 evaluates to :math:`4 \times 10^{-1}`. This is close to the linear
                0216 stability limit of 0.5.
                0217 
                0218 Experiment Configuration
                0219 ------------------------
                0220 
                0221 The model configuration for this experiment resides under the directory
                0222 :filelink:`verification/tutorial_held_suarez_cs/`. The experiment files
                0223 
                0224 -  :filelink:`verification/tutorial_held_suarez_cs/input/data`
                0225 
                0226 -  :filelink:`verification/tutorial_held_suarez_cs/input/data.pkg`
                0227 
                0228 -  :filelink:`verification/tutorial_held_suarez_cs/input/data.shap`
                0229 
                0230 -  :filelink:`verification/tutorial_held_suarez_cs/input/eedata`
                0231 
                0232 -  :filelink:`verification/tutorial_held_suarez_cs/code/packages.conf`
                0233 
                0234 -  :filelink:`verification/tutorial_held_suarez_cs/code/CPP_OPTIONS.h`
                0235 
                0236 -  :filelink:`verification/tutorial_held_suarez_cs/code/SIZE.h`
                0237 
                0238 -  :filelink:`verification/tutorial_held_suarez_cs/code/DIAGNOSTICS_SIZE.h`
                0239 
                0240 -  :filelink:`verification/tutorial_held_suarez_cs/code/apply_forcing.F`,
                0241 
                0242 contain the code customizations and parameter settings for these
                0243 experiments. Below we describe the customizations to these files
                0244 associated with this experiment.
                0245 
                0246 File :filelink:`input/data <verification/tutorial_held_suarez_cs/input/data>`
                0247 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0248 
                0249 .. literalinclude:: ../../../verification/tutorial_held_suarez_cs/input/data
                0250     :linenos:
                0251     :caption: verification/tutorial_held_suarez_cs/input/data
                0252 
                0253 This file specifies the main parameters
                0254 for the experiment. The parameters that are significant for this
                0255 configuration are:
                0256 
                0257 -  Lines 7-8,
                0258 
                0259    ::
                0260 
                0261         tRef=295.2, 295.5, 295.9, 296.3, 296.7, 297.1, 297.6, 298.1, 298.7, 299.3,
                0262              300.0, 300.7, 301.9, 304.1, 308.0, 315.1, 329.5, 362.3, 419.2, 573.8,
                0263 
                0264    set reference values for potential temperature (in kelvins) at
                0265    each model level. The entries are ordered like model level, from
                0266    surface up to the top. Density is calculated from anomalies at each
                0267    level evaluated with respect to the reference values set here.
                0268 
                0269 -  Line 10,
                0270 
                0271    ::
                0272 
                0273         no_slip_sides=.FALSE.,
                0274 
                0275    this line selects a free-slip lateral boundary condition for the
                0276    horizontal Laplacian friction operator, e.g.,
                0277    :math:`\frac{\partial u}{\partial y}`\ =0 along boundaries in
                0278    :math:`y` and :math:`\frac{\partial v}{\partial x}`\ =0 along
                0279    boundaries in :math:`x`.
                0280 
                0281 -  Line 11,
                0282 
                0283    ::
                0284 
                0285         no_slip_bottom=.FALSE.,
                0286 
                0287    this line selects a free-slip boundary condition at the top, in the
                0288    vertical Laplacian friction operator, e.g.,
                0289    :math:`\frac{\partial u}{\partial p} = \frac{\partial v}{\partial p} = 0`.
                0290 
                0291 -  Line 12,
                0292 
                0293    ::
                0294 
                0295         buoyancyRelation='ATMOSPHERIC',
                0296 
                0297    this line sets the type of fluid and the type of vertical coordinate
                0298    to use, which, in this case, is air with a pressure-like coordinate
                0299    (:math:`p` or :math:`p^*`).
                0300 
                0301 -  Line 13,
                0302 
                0303    ::
                0304 
                0305         eosType='IDEALG',
                0306 
                0307    Selects the ideal gas equation of state.
                0308 
                0309 -  Line 15,
                0310 
                0311    ::
                0312 
                0313         implicitFreeSurface=.TRUE.,
                0314 
                0315    Selects the way the barotropic equation is solved, here using the
                0316    implicit free-surface formulation.
                0317 
                0318 -  Line 16,
                0319 
                0320    ::
                0321 
                0322         exactConserv=.TRUE.,
                0323 
                0324    Explicitly calculate (again) the surface pressure changes from the
                0325    divergence of the vertically integrated horizontal flow, after the
                0326    implicit free surface solver and filters are applied.
                0327 
                0328 -  Lines 17-18,
                0329 
                0330    ::
                0331 
                0332         nonlinFreeSurf=4,
                0333         select_rStar=2,
                0334 
                0335    Select the non-linear free surface formulation, using :math:`r^*`
                0336    vertical coordinate (here :math:`p^*`). Note that, except for the
                0337    default (= 0), other values of those two parameters are only
                0338    permitted for testing/debugging purpose.
                0339 
                0340 -  Line 21,
                0341 
                0342    ::
                0343 
                0344         uniformLin_PhiSurf=.FALSE.,
                0345 
                0346    Select the linear relation between surface geopotential anomaly and
                0347    surface pressure anomaly to be evaluated from
0bad585a21 Navi*0348    :math:`\frac{\partial \Phi_s}{\partial p_s} = 1/\rho(\theta_{\rm ref})`
d67096e55c Jeff*0349    (see :numref:`nonlinear-freesurface`). Note that using the default
                0350    (``=.TRUE.``), the constant :math:`1/\rho_0` is used instead, and is not
                0351    necessarily consistent with other parts of the geopotential that
0bad585a21 Navi*0352    rely on :math:`\theta_{\rm ref}`.
d67096e55c Jeff*0353 
                0354 -  Line 23-24,
                0355 
                0356    ::
                0357 
                0358         saltStepping=.FALSE.,
                0359         momViscosity=.FALSE.,
                0360 
                0361    Do not step forward water vapor and do not compute viscous terms.
                0362    This saves computer time.
                0363 
                0364 -  Line 25,
                0365 
                0366    ::
                0367 
                0368         vectorInvariantMomentum=.TRUE.,
                0369 
                0370    Select the vector-invariant form to solve the momentum equation.
                0371 
                0372 -  Line 26,
                0373 
                0374    ::
                0375 
                0376         staggerTimeStep=.TRUE.,
                0377 
                0378    Select the staggered time-stepping (rather than synchronous time
                0379    stepping).
                0380 
                0381 -  Lines 27-28,
                0382 
                0383    ::
                0384 
                0385         readBinaryPrec=64,
                0386         writeBinaryPrec=64,
                0387 
                0388    Sets format for reading binary input datasets and writing output
                0389    fields to use 64-bit representation for floating-point numbers.
                0390 
                0391 -  Line 33,
                0392 
                0393    ::
                0394 
                0395         cg2dMaxIters=200,
                0396 
                0397    Sets maximum number of iterations the 2-D conjugate
                0398    gradient solver will use, **irrespective of convergence criteria
                0399    being met**.
                0400 
                0401 -  Line 35,
                0402 
                0403    ::
                0404 
                0405         cg2dTargetResWunit=1.E-17,
                0406 
                0407    Sets the tolerance (in units of :math:`\omega`) which the
                0408    2-D conjugate gradient solver will use to test for
                0409    convergence in equation :eq:`elliptic-backward-free-surface` to
                0410    :math:`1 \times 10^{-17}` Pa/s. Solver will iterate until tolerance
                0411    falls below this value or until the maximum number of solver
                0412    iterations is reached.
                0413 
                0414 -  Line 40,
                0415 
                0416    ::
                0417 
                0418         deltaT=450.,
                0419 
                0420    Sets the timestep :math:`\Delta t` used in the model to
                0421    450 seconds (= 1/8 hour).
                0422 
                0423 -  Line 42,
                0424 
                0425    ::
                0426 
                0427         startTime=124416000.,
                0428 
                0429    Sets the starting time, in seconds, for the model time counter. A
                0430    non-zero starting time requires the initial state read from a
                0431    pickup file. By default the pickup file is named according to the
                0432    integer number (:varlink:`nIter0`) of time steps in the :varlink:`startTime` value
                0433    (nIter0 = startTime / deltaT).
                0434 
                0435 -  Line 44,
                0436 
                0437    ::
                0438 
                0439        #nTimeSteps=69120,
                0440 
                0441    A commented out setting for the length of the simulation (in number
                0442    of timesteps) that corresponds to 1-year simulation.
                0443 
                0444 -  Lines 54-55,
                0445 
                0446    ::
                0447 
                0448         nTimeSteps=16,
                0449         monitorFreq=1.,
                0450 
                0451    Sets the length of the simulation (in number of timesteps) and the
                0452    frequency (in seconds) for “monitor” output to 16 iterations and 1
                0453    seconds respectively. This choice corresponds to a short simulation
                0454    test.
                0455 
                0456 -  Line 48,
                0457 
                0458    ::
                0459 
                0460         pChkptFreq=31104000.,
                0461 
                0462    Sets the time interval, in seconds, between 2 consecutive “permanent”
                0463    pickups (“permanent checkpoint frequency”) that are used to restart
                0464    the simulation, to 1 year.
                0465 
                0466 -  Line 48,
                0467 
                0468    ::
                0469 
                0470         chkptFreq=2592000.,
                0471 
                0472    Sets the time interval, in seconds, between two consecutive “temporary”
                0473    pickups (“checkpoint frequency”) to one month. The “temporary” pickup
                0474    file name is alternatively “ckptA” and “ckptB”; these pickups (as
                0475    opposed to the permanent ones) are designed to be over-written by the
                0476    model as the simulation progresses.
                0477 
                0478 -  Line 50,
                0479 
                0480    ::
                0481 
                0482         dumpFreq=2592000.,
                0483 
                0484    Set the frequency (in seconds) for the snapshot output to 1 month.
                0485 
                0486 -  Line 51,
                0487 
                0488    ::
                0489 
                0490        #monitorFreq=43200.,
                0491 
                0492    A commented out line setting the frequency (in seconds) for the
                0493    “monitor” output to 12 h. This frequency fits better with the longer
                0494    simulation of one year.
                0495 
                0496 -  Line 60,
                0497 
                0498    ::
                0499 
                0500         usingCurvilinearGrid=.TRUE.,
                0501 
                0502    Set the horizontal type of grid to curvilinear grid.
                0503 
                0504 -  Line 61,
                0505 
                0506    ::
                0507 
                0508         horizGridFile='grid_cs32',
                0509 
                0510    Set the root for the grid file name to ``grid_cs32``. The
                0511    grid-file names are derived from the root, adding a suffix with the
                0512    face number (e.g., ``.face001.bin``, ``.face002.bin`` :math:`\cdots` )
                0513 
                0514 -  Lines 63,
                0515 
                0516    ::
                0517 
                0518         delR=20*50.E2,
                0519 
                0520    This line sets the increments in pressure
                0521    units to 20 equally thick levels of
                0522    :math:`50 \times 10^2` Pa each.
                0523    This defines the origin (interface :math:`k=1`) of the vertical
                0524    pressure axis, with decreasing pressure as the level index
                0525    :math:`k` increases.
                0526 
                0527 -  Line 68,
                0528 
                0529    ::
                0530 
                0531        #topoFile='topo.cs.bin'
                0532 
                0533    This commented out line would set the file name of a 2-D
                0534    orography file, in units of meters, to ``topo.cs.bin``.
                0535 
                0536 Other lines in the file :filelink:`input/data <verification/tutorial_held_suarez_cs/input/data>`
                0537 are standard values that are
                0538 described in :numref:`chap_getting_started`..
                0539 
                0540 File :filelink:`input/data.pkg <verification/tutorial_held_suarez_cs/input/data.pkg>`
                0541 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0542 
                0543 .. literalinclude:: ../../../verification/tutorial_held_suarez_cs/input/data.pkg
                0544     :linenos:
                0545     :caption: verification/tutorial_held_suarez_cs/input/data.pkg
                0546 
                0547 This file specifies the additional
                0548 packages that the model uses for the experiment. Note that some packages
                0549 are used by default (e.g., :filelink:`pkg/generic_advdiff`) and some others are
                0550 selected according to parameter in :filelink:`input/data.pkg <verification/tutorial_held_suarez_cs/input/data.pkg>` (e.g.,
                0551 :filelink:`pkg/mom_vecinv`). The additional packages that are used for this
                0552 configuration are
                0553 
                0554 -  Line 3,
                0555 
                0556    ::
                0557 
                0558         useSHAP_FILT=.TRUE.,
                0559 
                0560    This line selects the Shapiro filter (Shapiro 1970 :cite:`shapiro:70`)
                0561    (:filelink:`pkg/shap_filt`) to be used in this experiment.
                0562 
                0563 -  Line 4,
                0564 
                0565    ::
                0566 
                0567         useDiagnostics=.TRUE.,
                0568 
                0569    This line selects :filelink:`pkg/diagnostics` to be used in this
                0570    experiment.
                0571 
                0572 -  Line 5,
                0573 
                0574    ::
                0575 
                0576        #useMNC=.TRUE.,
                0577 
                0578    This line  would select :filelink:`pkg/mnc` for I/O but is commented out.
                0579 
                0580 File :filelink:`input/data.shap <verification/tutorial_held_suarez_cs/input/data.shap>`
                0581 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0582 
                0583 .. literalinclude:: ../../../verification/tutorial_held_suarez_cs/input/data.shap
                0584     :linenos:
                0585     :caption: verification/tutorial_held_suarez_cs/input/data.shap
                0586 
                0587 This file specifies the parameters that
                0588 the model uses for the Shapiro filter package
                0589 (Shapiro 1970 :cite:`shapiro:70`), see :numref:`shapiro_filter`. The
                0590 parameters that are significant for this configuration are:
                0591 
                0592 -  Line 5,
                0593 
                0594    ::
                0595 
                0596         Shap_funct=2,
                0597 
                0598    This line selects which Shapiro filter function to use, here S2, for this
                0599    experiment (see :numref:`shapiro_filter`).
                0600 
                0601 -  Lines 6-7,
                0602 
                0603    ::
                0604 
                0605         nShapT=0,
                0606         nShapUV=4,
                0607 
                0608    These lines select the order of the Shapiro filter for active tracers
                0609    (:math:`\theta` and :math:`q`) and momentum (:math:`u,v`)
                0610    respectively. In this case, no filter is applied to active tracers.
                0611    Regarding the momentum, this sets the integer parameter :math:`n` to
                0612    4, in the equations of :numref:`shapiro_filter`, which
                0613    corresponds to a 8th order filter.
                0614 
                0615 -  Line 9,
                0616 
                0617    ::
                0618 
                0619         nShapUVPhys=4,
                0620 
                0621    This line selects the order of the physical space filter (filter
                0622    function S2g, see :numref:`shapiro_filter`) that applies to
                0623    :math:`u,v`. The difference :varlink:`nShapUV` - :varlink:`nShapUVPhys` corresponds to
                0624    the order of the computational filter (filter function S2c, see :numref:`shapiro_filter`).
                0625 
                0626 -  Lines 12-13,
                0627 
                0628    ::
                0629 
                0630        #Shap_Trtau=5400.,
                0631        #Shap_uvtau=1800.,
                0632 
                0633    These commented lines would have set the time scale of the filter (in
                0634    seconds), for :math:`\theta`, :math:`q` and for :math:`u`,
                0635    :math:`v` respectively, to 5400 s (90 min) and 1800 s (30 min).
                0636    Without explicitly setting those timescales, the
                0637    default is used, which corresponds to the model timestep.
                0638 
                0639 File :filelink:`input/eedata <verification/tutorial_held_suarez_cs/input/eedata>`
                0640 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0641 
                0642 .. literalinclude:: ../../../verification/tutorial_held_suarez_cs/input/eedata
                0643     :linenos:
                0644     :caption: verification/tutorial_held_suarez_cs/input/eedata
                0645 
                0646 This file uses standard default values except line 6:
                0647 
                0648 ::
                0649 
                0650      useCubedSphereExchange=.TRUE.,
                0651 
                0652 This line selects the cubed-sphere specific exchanges to to connect
                0653 tiles and faces edges.
                0654 
                0655 File :filelink:`code/SIZE.h <verification/tutorial_held_suarez_cs/code/SIZE.h>`
                0656 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0657 
                0658 .. literalinclude:: ../../../verification/tutorial_held_suarez_cs/code/SIZE.h
                0659     :linenos:
                0660     :caption: verification/tutorial_held_suarez_cs/code/SIZE.h
                0661 
                0662 Four lines are customized in this file for the current experiment
                0663 
                0664 -  Line 45,
                0665 
                0666    ::
                0667 
                0668         sNx=32,
                0669 
                0670    sets the lateral domain extent in grid points along the :math:`x`-direction,
                0671    for one face.
                0672 
                0673 -  Line 46,
                0674 
                0675    ::
                0676 
                0677         sNy=32,
                0678 
                0679    sets the lateral domain extent in grid points along the :math:`y`-direction,
                0680    for one face.
                0681 
                0682 -  Line 49,
                0683 
                0684    ::
                0685 
                0686         nSx=6,
                0687 
                0688    sets the number of tiles in the :math:`x`-direction, for the model domain
                0689    decomposition. In this simple case (single processor, with one tile per
                0690    face), this number corresponds to the total number of faces.
                0691 
                0692 -  Line 55,
                0693 
                0694    ::
                0695 
                0696         Nr=20,
                0697 
                0698    sets the vertical domain extent in grid points.
                0699 
                0700 File :filelink:`code/packages.conf <verification/tutorial_held_suarez_cs/code/packages.conf>`
                0701 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0702 
                0703 .. literalinclude:: ../../../verification/tutorial_held_suarez_cs/code/packages.conf
                0704     :linenos:
                0705     :caption: verification/tutorial_held_suarez_cs/input/code/packages.conf
                0706 
                0707 This file specifies the packages that are
                0708 compiled and made available for this experiment. The additional packages
                0709 that are used for this configuration are
                0710 
                0711 -  Line 1,
                0712 
                0713    ::
                0714 
                0715         gfd
                0716 
                0717    This line selects the standard set of packages that are used by
                0718    default.
                0719 
                0720 -  Line 2,
                0721 
                0722    ::
                0723 
                0724         shap_filt
                0725 
                0726    This line makes the Shapiro filter package available for this
                0727    experiment.
                0728 
                0729 -  Line 3,
                0730 
                0731    ::
                0732 
                0733         exch2
                0734 
                0735    This line selects :filelink:`pkg/exch2` to be compiled and used in this
                0736    experiment. Note that at present, no such
                0737    parameter ``useEXCH2`` exists and therefore this package is
                0738    always used when it is compiled.
                0739 
                0740 -  Line 4,
                0741 
                0742    ::
                0743 
                0744         diagnostics
                0745 
                0746    This line selects  :filelink:`pkg/diagnostics` to be compiled, and makes it
                0747    available for this experiment.
                0748 
                0749 -  Line 5,
                0750 
                0751    ::
                0752 
                0753         mnc
                0754 
                0755    This line selects the :filelink:`pkg/mnc` to be compiled, and makes it
                0756    available for this experiment.
                0757 
                0758 File :filelink:`code/CPP_OPTIONS.h <verification/tutorial_held_suarez_cs/code/CPP_OPTIONS.h>`
                0759 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                0760 
                0761 This file uses the standard default except for:
                0762 
                0763 ::
                0764 
                0765     #define NONLIN_FRSURF
                0766 
                0767 This line enables the non-linear free-surface part of the code,
                0768 which is required for the :math:`p^*` coordinate formulation.
                0769 
                0770 Other Files
                0771 ~~~~~~~~~~~~
                0772 
                0773 Other files relevant to this experiment are
                0774 
                0775 -  :filelink:`code/apply_forcing.F <verification/tutorial_held_suarez_cs/code/apply_forcing.F>`
                0776 
                0777 -  ``input/grid_cs32.face00[n].bin``, with :math:`n=1,2,3,4,5,6`
                0778 
                0779 contain the code customizations and binary input files for this experiment.
                0780 The file :filelink:`apply_forcing.F <verification/tutorial_held_suarez_cs/code/apply_forcing.F>`
                0781 contains four subroutines that
                0782 calculate the forcing terms (i.e., right-hand side terms) in the momentum
                0783 equation :eq:`eg-hs-global_forcing_fv`, :varlink:`EXTERNAL_FORCING_U`
                0784 and :varlink:`EXTERNAL_FORCING_V` and in the potential temperature equation
                0785 :eq:`eg-hs-global_forcing_ft`, :varlink:`EXTERNAL_FORCING_T`. The
                0786 water-vapor forcing subroutine (:varlink:`EXTERNAL_FORCING_S`) is left
                0787 empty for this experiment.
                0788 The grid-files ``input/grid_cs32.face00[n].bin``, with
                0789 :math:`n=1,2,3,4,5,6`, are binary files (direct-access, big-endian
                0790 64 bit reals) that contains all the cubed-sphere grid lengths, areas
                0791 and grid-point positions, with one file per face. Each file contains
                0792 18 2-D arrays (dimension 33 :math:`\times` 33) that correspond to the
                0793 model variables: *XC YC DXF DYF RA XG YG DXV DYU RAZ DXC DYC RAW RAS
                0794 DXG DYG AngleCS AngleSN* (see :filelink:`model/inc/GRID.h`)