Published: Dec 3, 2021 by The PISM Authors
PISM developers have been hard at work to bring you a brand new version of PISM, packed with new features. After years of development, PISM finally includes a Blatter solver, warranting a new major version: PISM 2.0.
PISM has a new logo designed by Julius Garbe.
- Implemented a FEM solver for the first order approximation of the Stokes equations due to Blatter (1995). This solver supports multigrid preconditioners (see Brown et al 2013) and includes 5 verification test based on manufactured solutions.
- Implemented experiments A,B,C,D,E from the ISMIP-HOM intercomparison.
- Fixed the approximation of the driving stress at floating ice margins in the SSA solver. (This fix was contributed by Ronja Reese and Torsten Albrecht; see these notes for details.)
- Implemented regularized Coulomb sliding as in Zoet & Iverson, 2020, A slip law for glaciers on deformable beds, equation 3.
- Assume that in the “ocean” areas the till at the base is saturated with water, i.e. the
till water amount is equal to
hydrology.tillwat_max. This change should improve grounding line movement and make the basal yield stress modification turned on with
- Implemented a mechanism for “optimizing” the till friction angle used by the Mohr-Coulomb yield stress model. The implementation is based on the code contributed by T. Albrecht.
- The new
-bed_def givencomponent reads in a prescribed bed deformation history from a file (e.g. from a solid-Earth model) relative to a (high-resolution) reference topography, indicated by configuration parameter
- Implemented scaling of calving rates using a time-dependent factor.
calving.rate_scaling.fileto the name of the file containing
- Ice thickness
read in from
calving.thickness_calving.filecan be both space- and time-dependent.
Fracture density model
- Implemented the fracture density growth parameterization due to Borstad et al (equation 4 in Borstad et al, 2016). Code contributed by T. Albrecht).
- Support 2D precipitation
-atmosphere ...,frac_P. If the input file set using
atmosphere.frac_P.filecontains a scalar time series
frac_P, use that as a time-dependent constant-in-space forcing. If the input file contains a 2D variable
frac_P, use that as a time-and-space-dependent forcing.
- Added surface elevation smoothing to the orographic precipitation
High-frequency modes in the surface elevation that can develop in
runs with evolving ice geometry (consider grounded ice margins) may
cause oscillations in the computed precipitation field (probably due
to the Gibbs phenomenon). These oscillations may result in an even
rougher topography, triggering a feedback loop polluting model
atmosphere.orographic_precipitation.smoothing_standard_deviation(in meters) to smooth the ice surface elevation to reduce this effect.
-atmosphere ...,elevation_changemodifier. Now this parameter is used to compute the temperature change
dTused to scale precipitation by a factor
exp(C * dT)with
C = atmosphere.precip_exponential_factor_for_temperature. We need a separate temperature lapse rate parameter to be able to use this modifier with atmosphere models that include an elevation-dependent near-surface air temperature parameterizations, e.g.
- The three-equation ocean
-ocean thuses constant salinity (see
salinity_oceanis not present in the forcing file.
- Added a new ocean
-ocean ...,delta_MBP. This component reads scalar time-dependent melange pressure offsets (units: Pa) and uses them in the calving front boundary condition for the SSA.
- Adjusted PICO ocean input average across covered basins, in which the ice shelf has in fact a connection to the ocean. Large ice shelves spanning two basins that do not share an ocean boundary are split into two separate ice shelf instances. (This code was contributed by Torsten Albrecht.)
sea_level.constant.value. This sets the default sea level elevation used with
sea_level.constant.valueto a large negative value to ensure that all ice is grounded.
ocean.melange_back_pressure_fraction: it is no longer needed.
Input and output, diagnostics
- Added a new
-o_format netcdf4_serial -output.compression_level N(
Nbetween 1 and 9) to write compressed NetCDF from rank 0.
- Support writing compressed NetCDF in parallel with NetCDF 4.7.4 or newer and HDF5 1.10.3
or newer. Set
output.compression_levelto enable compression.
- Stop with an error message if some values of a variable read from a file match the
_FillValueattribute (PISM expects input files to contain data at all grid points within the domain).
- Now PISM stops with an error message if time-dependent forcing data read from a file do
not span the whole length of a simulation. Set
input.forcing.time_extrapolationto “true” to disable this check.
- Removed the configuration parameter
input.forcing.evaluations_per_year. Now the code evaluates exact values of time averages of time-dependent forcing inputs.
- Major improvement in the handling of time-dependent forcing. A file containing periodic forcing has to contain exactly one period. The start and the length of the period are derived from time bounds read from this file. This makes it easier to use periodic forcing and adds supports for arbitrary period lengths. See the manual section about time-dependent inputs.
- All time-dependent forcing files have to contain time bounds.
- Now PISM always respects the reference date in input files.
- Improved the approximation of the grounding line flux (scalar and 2D diagnostics
grounding_line_flux): the flux through the grounding line should be zero if its direction is parallel to the grounding line. Unfortunately this is impossible to achieve for an arbitrary grounding line shape if the grounding line is approximated by a mask on a uniform grid (as in PISM). This change improves the approximation for some combinations of grounding line shapes and grid resolutions. (This issue was reported by Ronja Reese.)
Model time and time stepping
- Added a new parameter:
time_stepping.resolution. PISM rounds time step lengths down to a multiple of this number (default: 1 second). This reduces the influence of rounding errors on time step lengths.
- Command-line options
-max_dtand corresponding configuration parameters use units of
365 daysinstead of
years. The latter has the meaning of the mean tropical year, i.e. the constant used to convert from
-y 1000years, etc to reproduce the old behavior.
- Fixed a bug in the code managing time step restrictions (this
affected the last time step of runs using
-skipand runs with
- Added the new command-line option
-refinement_factor N. Use this to select a regional modeling domain using
-x_range ... -y_range ..., then use a grid that is
- Added support for automatic unit conversion in command-line options.
If an option argument is a number PISM assumes that it uses PISM’s
internal units. If it is a number followed by a units string
recognized by UDUNITS it is automatically converted to PISM’s
internal units. For example, the following are equivalent:
- Added a new NetCDF variable
thk_bc_maskprescribing locations where the ice thickness is kept fixed. This mask is combined with
vel_bc_mask: we keep ice thickness fixed at all the locations where the sliding (usually SSA) velocity is fixed.
- Renamed NetCDF variables
- Removed the
pismr -eisII Xto run EISMINT-II experiment
fill_missing_petsc.pyuses homogeneous Neumann BC at domain boundaries.
- Added optional arguments
PISM.util.prepare_output()in the Python bindings.