tindex.rst - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
 (HTM) git clone git://src.adamsgaard.dk/pism
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       tindex.rst (9155B)
       ---
            1 .. include:: ../../global.txt
            2 
            3 .. _sec-verif:
            4 
            5 Verification
            6 ============
            7 
            8   Two types of errors may be distinguished: modeling errors and numerical errors. Modeling
            9   errors arise from not solving the right equations. Numerical errors result from not
           10   solving the equations right. The assessment of modeling errors is *validation*, whereas
           11   the assessment of numerical errors is called *verification*... Validation makes sense
           12   only after verification, otherwise agreement between measured and computed results may
           13   well be fortuitous.
           14 
           15   P. Wesseling, (2001) *Principles of Computational Fluid Dynamics*, pp. 560--561
           16   :cite:`Wesseling`
           17 
           18 Verification is the essentially mathematical task of checking that the predictions of the
           19 numerical code are close to the predictions of a continuum model, the one which the
           20 numerical code claims to approximate. It is a crucial task for a code as complicated as
           21 PISM. In verification there is no comparison between model output and observations of
           22 nature. Instead, one compares exact solutions of the continuum model, in circumstances in
           23 which they are available, to their numerical approximations.
           24 
           25 Reference :cite:`Roache` gives a broad discussion of verification and validation in
           26 computational fluid dynamics. See :cite:`BLKCB` and :cite:`BBL` for discussion of verification
           27 issues for the isothermal and thermomechanically coupled shallow ice approximation (SIA),
           28 respectively, and for exact solutions to these models, and :cite:`BBssasliding`,
           29 :cite:`SchoofStream` for verification using an exact solution to the SSA equations for ice
           30 streams.
           31 
           32 In PISM there is a separate executable ``pismv`` which is used for SIA-related
           33 verification, and there are additional scripts for SSA-related verification. The source
           34 codes which are verified by ``pismv`` are, however, exactly the same source files as are
           35 run by the normal PISM executable ``pismr``. In technical terms, ``pismv`` runs a derived
           36 class of the PISM base class.
           37 
           38 .. list-table:: Exact solutions for verification
           39    :header-rows: 1
           40    :name: tab-tests
           41    :widths: 1,4,2,4
           42 
           43    * - Test
           44      - Continuum model tested
           45      - Reference
           46      - Comments
           47    * - A
           48      - isothermal SIA, steady,  flat bed, constant accumulation
           49      - :cite:`BLKCB`
           50      -
           51    * - B
           52      - isothermal SIA, flat bed, zero accumulation
           53      - :cite:`BLKCB`, :cite:`Halfar83`
           54      - similarity solution
           55    * - C
           56      - isothermal SIA, flat bed, growing accumulation
           57      - :cite:`BLKCB`
           58      - similarity solution
           59    * - D
           60      - isothermal SIA, flat bed, oscillating accumulation
           61      - :cite:`BLKCB`
           62      - uses compensatory accumulation
           63    * - E
           64      - isothermal SIA; as A, but with sliding in a sector
           65      - :cite:`BLKCB`
           66      - uses compensatory accumulation
           67    * - F
           68      - thermomechanically coupled SIA (mass and energy conservation), steady, flat bed
           69      - :cite:`BB`, :cite:`BBL`
           70      - uses compensatory accumulation and heating
           71    * - G
           72      - thermomechanically coupled SIA; as F  but with oscillating accumulation
           73      - :cite:`BB`, :cite:`BBL`
           74      - ditto
           75    * - H
           76      - bed deformation coupled with isothermal SIA
           77      - :cite:`BLKfastearth`
           78      - joined similarity solution
           79    * - I
           80      - stream velocity computation using SSA (plastic till)
           81      - :cite:`SchoofStream`, :cite:`BBssasliding`
           82      -
           83    * - J
           84      - shelf velocity computation using SSA
           85      - (source code)
           86      -
           87    * - K
           88      - pure conduction in ice and bedrock
           89      - :cite:`BuelerTestK`
           90      -
           91    * - L
           92      - isothermal SIA, steady, non-flat bed
           93      - (source code)
           94      - numerical ODE solution
           95 
           96 .. csv-table:: Canonical PISM verification runs using the exact solutions listed in
           97                :numref:`tab-tests`.
           98    :header: Test, Example invocation
           99    :name: tab-tests-exec
          100    :widths: auto
          101 
          102    A, ``pismv -test A -Mx 61 -My 61 -Mz 11 -y 25000``
          103    B, ``pismv -test B -Mx 61 -My 61 -Mz 11 -ys 422.45 -y 25000``
          104    C, ``pismv -test C -Mx 61 -My 61 -Mz 11 -y 15208.0``
          105    D, ``pismv -test D -Mx 61 -My 61 -Mz 11 -y 25000``
          106    E, ``pismv -test E -Mx 61 -My 61 -Mz 11 -y 25000``
          107    F, ``pismv -test F -Mx 61 -My 61 -Mz 61 -y 25000``
          108    G, ``pismv -test G -Mx 61 -My 61 -Mz 61 -y 25000``
          109    H, ``pismv -test H -Mx 61 -My 61 -Mz 11 -y 40034 -bed_def iso``
          110    I, ``ssa_testi -ssa_method fd -Mx 5 -My 500 -ssafd_picard_rtol 1e-6 -ssafd_ksp_rtol 1e-11``
          111    J, ``ssa_testj -ssa_method fd -Mx 60 -My 60 -ssafd_ksp_rtol 1e-12``
          112    K, ``pismv -test K -Mx 6 -My 6 -Mz 401 -Mbz 101 -y 130000``
          113    L, ``pismv -test L -Mx 61 -My 61 -Mz 31 -y 25000``
          114 
          115 .. csv-table:: ``pismv`` command-line options
          116    :header: Option, Description
          117    :name: tab-pismv-options
          118 
          119    ``-test``,        Choose verification test by single character name; see :numref:`tab-tests`.
          120    ``-no_report``,   Do not report errors at the end of a verification run.
          121    ``-eo``,          Only evaluate the exact solution; no numerical approximation at all.
          122    ``-report_file``, Save error report to a netCDF file.
          123    ``-append``,      Append to a report file.
          124 
          125 :numref:`tab-tests` summarizes the many exact solutions currently available in PISM. Most
          126 of these exact solutions are solutions of *free boundary problems* for partial
          127 differential equations; only Tests A, E, J, K are fixed boundary value problems.
          128 
          129 :numref:`tab-tests-exec` shows how to run each of them on a coarse grids. Note that tests
          130 I and J require special executables ``ssa_testi,ssa_testj`` which are built with
          131 configuration flag ``Pism_BUILD_EXTRA_EXECS`` equal to ``ON``. :numref:`tab-pismv-options`
          132 gives the special verification-related options of the ``pismv`` executable.
          133 
          134 Numerical errors are not, however, the dominant reasons why ice sheet models give
          135 imperfect results. The largest sources of errors include those from using the wrong (e.g.
          136 over-simplified or incorrectly-parameterized) continuum model, and from observational or
          137 pre-processing errors present in input data. Our focus here on numerical errors has a
          138 model-maintenance goal. It is *easier* to maintain code by quantitatively confirming that
          139 it produces small errors in cases where those can be measured, rather than "eyeballing"
          140 results to see that they are "right" according to human judgment.
          141 
          142 The goal of verification is not generally to see that the error is zero at any particular
          143 resolution, or even to show that the error is small in a predetermined absolute sense.
          144 Rather the goals are
          145 
          146 - to see that the error *is* decreasing,
          147 - to measure the rate at which it decreases, and
          148 - to develop a sense of the magnitude of numerical error before doing realistic ice sheet
          149   model runs.
          150 
          151 Knowing the error decay rate may give a prediction of how fine a grid is necessary to
          152 achieve a desired smallness for the numerical error.
          153 
          154 Therefore one must "go down" a grid refinement "path" and measure numerical error for each
          155 grid :cite:`Roache`. The refinement path is defined by a sequence of spatial grid cell sizes
          156 which decrease toward the refinement limit of zero size :cite:`MortonMayers`. In PISM the
          157 timestep :math:`\Delta t` is determined adaptively by a stability criterion (see
          158 section :ref:`sec-adapt`). In PISM one specifies the number of grid points, thus the
          159 grid cell sizes because the overall dimensions of the computational box are normally
          160 fixed; see section :ref:`sec-coords`. By "measuring the error for each grid" we mean
          161 computing a norm (or norms) of the difference between the numerical solution and the exact
          162 solution.
          163 
          164 For a grid refinement path example, in tests of the thermomechanically-coupled SIA model
          165 one refines in three dimensions, and these runs produced Figures 13, 14, and 15 of :cite:`BBL`:
          166 
          167 .. code-block:: none
          168 
          169    pismv -test G -max_dt 10.0 -y 25000 -Mx 61 -My 61 -Mz 61 -z_spacing equal
          170    pismv -test G -max_dt 10.0 -y 25000 -Mx 91 -My 91 -Mz 91 -z_spacing equal
          171    pismv -test G -max_dt 10.0 -y 25000 -Mx 121 -My 121 -Mz 121 -z_spacing equal
          172    pismv -test G -max_dt 10.0 -y 25000 -Mx 181 -My 181 -Mz 181 -z_spacing equal
          173    pismv -test G -max_dt 10.0 -y 25000 -Mx 241 -My 241 -Mz 241 -z_spacing equal
          174    pismv -test G -max_dt 10.0 -y 25000 -Mx 361 -My 361 -Mz 361 -z_spacing equal
          175 
          176 The last two runs require a supercomputer! In fact the :math:`361\times 361\times 361` run
          177 involves more than :math:`100` million unknowns, updated at each of millions of time
          178 steps. Appropriate use of parallelism (``mpiexec -n NN pismv``) and of the ``-skip``
          179 modification to adaptive timestepping accelerates such fine-grid runs; see section
          180 :ref:`sec-adapt`.
          181 
          182 Figures :numref:`fig-thickerrsB` through :numref:`fig-velerrsI` in
          183 :ref:`sec-convergence-plots` show a sampling of the results of verifying PISM using the
          184 tests described above. These figures were produced automatically using Python scripts
          185 ``test/vfnow.py`` and ``test/vnreport.py``. See section :ref:`sec-scripts`.
          186 
          187 These figures *do not* show outstanding rates of convergence, relative to textbook partial
          188 differential equation examples. For the errors in tests B and G, see the discussion of
          189 free margin shape in :cite:`BLKCB`. For the errors in test I, the exact continuum solution is
          190 not very smooth at the free boundary :cite:`SchoofStream`.
          191 
          192 .. toctree::
          193 
          194    convergence-figures.rst