Published: Nov 27, 2023 by The PISM Authors
We are pleased to announce the release of PISM v2.1.
Notable changes compared to v2.0
Some of these were included in 2.0.x bug fix releases.
Mass transport
-
Added a flux limiter that ensures strict preservation of non-negativity of ice thickness and therefore mass conservation up to rounding error.
This is a Zalesak-style limiter described in
P. K. Smolarkiewicz, “Comment on “A Positive Definite Advection Scheme Obtained by Nonlinear Renormalization of the Advective Fluxes”,” Monthly Weather Review, vol. 117, no. 11, pp. 2626–2632, 1989, doi: 10.1175/1520-0493(1989)117<2626:COPDAS>2.0.CO;2.
Note that this approach (unlike modifications of the discretization of SIA diffusivity in the Jarosch et al. paper mentioned below) works with all stress balance models.
-
Implemented a benchmark verifying mass conservation in an “isothermal SIA + mass continuity” setup with “rough” bed topography.
This benchmark is described in
A. H. Jarosch, C. G. Schoof, and F. S. Anslow, “Restoring mass conservation to shallow ice flow models over complex terrain,” The Cryosphere, vol. 7, no. 1, pp. 229–240, Feb. 2013, doi: 10.5194/tc-7-229-2013.
Isochrone tracing
- Implemented an isochronal layer tracing scheme (see A. Born and A. Robinson, “Modeling the Greenland englacial stratigraphy,” The Cryosphere, vol. 15, no. 9, pp. 4539-4556, 2021, doi: 10.5194/tc-15-4539-2021.)
Surface processes
- Implemented the diurnal energy balance model dEBM-simple (see M. Zeitz, R. Reese, J. Beckmann, U. Krebs-Kanzow, and R. Winkelmann, “Impact of the melt-albedo feedback on the future evolution of the Greenland Ice Sheet with PISM-dEBM-simple,” The Cryosphere, vol. 15, no. 12, pp. 5739-5764, Dec. 2021, doi: 10.5194/tc-15-5739-2021.)
Atmosphere forcing
- Added support for 2D precipitation offsets in
-atmosphere ...,delta_P
. If the input file set usingatmosphere.delta_P.file
contains a scalar time seriesdelta_P
, use that as a time-dependent constant-in-space forcing. If the input file contains a 2D variabledelta_P
, use that as a time-and-space-dependent forcing. - Added support for 2D air temperature offsets in
-atmosphere ...,delta_T
. If the input file set usingatmosphere.delta_T.file
contains a scalar time seriesdelta_T
, use that as a time-dependent constant-in-space forcing. If the input file contains a 2D variabledelta_T
, use that as a time-and-space-dependent forcing. - Added support for piecewise-constant temporal interpolation of near-surface air
temperatures in
-atmosphere given
: setatmosphere.given.air_temperature_interpolation
topiecewise_constant
.
Ocean forcing
- Added the ability to use ocean model components implemented in Python (see
examples/python/pism.py
)
Calving
- Fixed a bug reported by Christian Rodehacke: calving mechanisms should not remove ice at ice fronts adjacent to isolated patches of ice-free water (see issue #521).
Stress balance
- Improved the initial guess of sliding velocity used when the ice front advances by
extrapolating velocity computed by the
SSAFD
solver during the previous time step (setstress_balance.ssa.fd.extrapolate_at_margins
tofalse
to disable).
Energy conservation
-
PISM no longer attempts to correct energy conservation by freezing basal water.
At each time step PISM checks basal enthalpy and if necessary modifies it to ensure continuity of temperature in each
bedrock+ice
column. Sometimes this modification creates energy; prior to this change PISM attempted to remove an equivalent amount of energy by modifying the basal melt rate to freeze water stored at the base.Under some conditions this basal melt rate adjustment created mass by freezing more water than available and even led to crashes with error messages stating that ice thickness exceeds
Lz
.
Input and output, diagnostics
- Added diagnostics
tendency_of_ice_{amount,mass}_due_to_frontal_melt
andtendency_of_ice_{amount,mass}_due_to_forced_retreat
. Renamed diagnosticmax_sliding_vel
tomax_horizontal_vel
.
Bug fixes
- Added time bounds to scalar forcing files in
examples/std-greenland
. -
Fixed a bug in the code ensuring non-negativity of ice thickness. (The old code added too much ice in an attempt to ensure non-negativity – so much so that sometimes this caused crashes with error messages stating that ice thickness exceeds
Lz
.)Note that this “projection step” (
ice_thickness = max(tentative_ice_thickness, 0)
) should have no effect now: the flux limiter mentioned above is designed to ensure non-negativity. We keep this step, however, to maintain the ability to keep track of ice thickness changes due to conservation errors (if they ever happen). - Fixed bugs in scalar diagnostics
ice_volume_cold
andice_volume_temperate
. - Use CF-compliant units “
common_years
” in forcing files.
Other
- Added CITATION.cff to properly acknowledge all contributions and to make it easier to cite PISM.
- Implemented UNO2, UNO3 and a couple of related transport methods (not used, but available for future use; see J.-G. Li, “Upstream Nonoscillatory Advection Schemes,” Monthly Weather Review, vol. 136, no. 12, pp. 4709-4729, Dec. 2008, doi: 10.1175/2008mwr2451.1.).
- Use
realpath()
to resolve relative file names. Now configuration parameters ending in.file
, when saved to output files and in PISM output tostdout
, contain absolute file names. This will make it easier to reproduce runs based on an output file. - Added support for checkpointing the HTCondor way (see commit 3740c41df).
- Use
-list_diagnostics all
to print the list of all diagnostics,-list_diagnostics spatial
for 2D and 3D variables, and-list_diagnostics scalar
for scalar time series. - Added code to generate
pism.pc
andpismicebin.pc
for use withpkg-config
. This will make it easier to use PISM as a library (to couple to a GCM, for example). - PISM’s build system uses
pkg-config
to look for some of the required libraries. - Refactored utility classes used to store 2D and 3D arrays.
- Replaced
examples/searise-antarctica
withexamples/antarctica
based on ALBMAP v1 data. This avoids a dependency on SeaRISE data formerly hosted by the University of Montana.