|
PISM, A Parallel Ice Sheet Model
stable v0.5
|
In PISM all fields in the ice, including enthalpy, age, velocity, and so on, evolve within an ice fluid domain of changing geometry. See figure freebdry. In particular, the upper and lower surfaces of the ice fluid move with respect to the geoid.
The
coordinates in figure freebdry are supposed to be from an orthogonal coordinate system with
in the direction anti-parallel to gravity, so this is a flat-earth approximation. In practice, the data inputs to PISM are in some particular projection, of course.
We make a change of the independent variable
which simplifies how PISM deals with the changing geometry of the ice, especially in the cases of a non-flat or moving bed. We replace the vertical coordinate relative to the geoid with the vertical coordinate relative to the base of the ice. Let
where
is the ice thickness.
Now we make the change of variables
throughout the PISM code. This replaces
by
as the equation of the base surface of the ice. The ice fluid domain in the new coordinates only has a free upper surface as shown in figure sfreebdry.
In PISM the computational domain (region)
is divided into a three-dimensional grid. See IceGrid.
The change of variable
used here is not the [Jenssen] change of variable
. That change causes the conservation of energy equation to become singular at the boundaries of the ice sheet. Specifically, the Jenssen change replaces the vertical conduction term by a manifestly-singular term at ice sheet margins where
, because
A singular coefficient of this type can be assumed to affect the stability of all time-stepping schemes. The current change
has no such singularizing effect though the change does result in added advection terms in the conservation of energy equation, which we now address. See the page BOMBPROOF, PISM's numerical scheme for conservation of energy for more general considerations about the conservation of energy equation.
The new coordinates
are not orthogonal.
Recall that if
is a function written in the old variables and if
is the "same" function written in the new variables, equivalently
, then
Similarly,
On the other hand,
The following table records some important changes to formulae related to conservation of energy:
Note
is the ice enthalpy and
is the ice temperature (which is a function of the enthalpy; see EnthalpyConverter),
is the ice pressure (assumed hydrostatic),
is the depth-dependent horizontal velocity, and
is the strain-heating term.
Now the vertical velocity is computed by IceModel::vertVelocityFromIncompressibility(). In the old coordinates
it has this formula:
Here
is the basal melt rate, positive when ice is being melted (= IceModel::vbmr). We have used the basal kinematical equation and integrated the incompressibility statement
In the new coordinates we have
(Note that the term
evaluates the horizontal velocity at level
and not at the base.)
Let
This quantity is the vertical velocity of the ice relative to the location on the bed immediately below it. In particular,
for a slab sliding down a non-moving inclined plane at constant horizontal velocity, if there is no basal melt rate. Also,
is nonzero only if there is basal melting or freeze-on, i.e. when
. Within PISM,
is the IceModelVec3 with name IceModel::w3, and it is written with name wvel_rel into an input file. Comparing the last two equations, we see how IceModel::vertVelocityFromIncompressibility() computes
:
The conservation of energy equation is now, in the new coordinate
and newly-defined relative vertical velocity,
Thus it looks just like the conservation of energy equation in the original vertical velocity
. This is the form of the equation solved by IceModel::enthalpyAndDrainageStep().
Under option -o_size big, all of these vertical velocity fields are available as fields in the output NetCDFfile. The vertical velocity relative to the geoid, as a three-dimensional field, uis writtenas the diagnostic variable wvel. This is the "actual" vertical velocity
. Its surface value is written as wvelsurf, and its basal value as wvelbase. The relative vertical velocity
is written to the NetCDF output file as wvel_rel.
1.7.5.1