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.
Notable changes
New logo
PISM has a new logo designed by Julius Garbe.
New website
The new website at www.pism.io replaces the old version.
Stress balance
- 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.)
Basal strength
- 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 withbasal_yield_stress.slippery_grounding_lines
unnecessary. - 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.
Bed deformation
- The new
-bed_def given
component 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 parameterbed_deformation.given.file
andbed_deformation.given.reference_file
, respectively.
Calving
- Implemented scaling of calving rates using a time-dependent factor.
Set
calving.rate_scaling.file
to the name of the file containingfrac_calving_rate
(units: “1”). - Ice thickness
threshold
read in from
calving.thickness_calving.file
can 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).
Atmosphere forcing
- Support 2D precipitation
scaling
in
-atmosphere ...,frac_P
. If the input file set usingatmosphere.frac_P.file
contains a scalar time seriesfrac_P
, use that as a time-dependent constant-in-space forcing. If the input file contains a 2D variablefrac_P
, use that as a time-and-space-dependent forcing. - Added surface elevation smoothing to the orographic precipitation
model.
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
results. Set
atmosphere.orographic_precipitation.smoothing_standard_deviation
(in meters) to smooth the ice surface elevation to reduce this effect. - Added
atmosphere.elevation_change.precipitation.temp_lapse_rate
to the-atmosphere ...,elevation_change
modifier. Now this parameter is used to compute the temperature changedT
used to scale precipitation by a factorexp(C * dT)
withC = 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.-atmosphere pik,elevation_change
.
Ocean forcing
- The three-equation ocean
model
-ocean th
uses constant salinity (seeconstants.sea_water.salinity
) ifsalinity_ocean
is not present in the forcing file. - Added a new ocean
modifier:
-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.)
- Added
sea_level.constant.value
. This sets the default sea level elevation used with-sea_level constant
. - Removed
ocean.always_grounded
. Setsea_level.constant.value
to a large negative value to ensure that all ice is grounded. - Removed
ocean.melange_back_pressure_fraction
: it is no longer needed.
Input and output, diagnostics
- Added a new
output.format
value:netcdf4_serial
andoutput.compression_level
. Use-o_format netcdf4_serial -output.compression_level N
(N
between 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_level
to enable compression. - Stop with an error message if some values of a variable read from a file match the
_FillValue
attribute (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_extrapolation
to “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
-y
,-ys
,-ye
,-max_dt
and corresponding configuration parameters use units of365 days
instead ofyears
. The latter has the meaning of the mean tropical year, i.e. the constant used to convert from1/s
to1/year
. Use-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
-skip
and runs with-skip
in which-max_dt
is active).
Other
- 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 isN
times finer. - 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:
-Lz 1000
,-Lz 1000m
,-Lz 1km
. - Added a new NetCDF variable
thk_bc_mask
prescribing locations where the ice thickness is kept fixed. This mask is combined withvel_bc_mask
: we keep ice thickness fixed at all the locations where the sliding (usually SSA) velocity is fixed. - Renamed NetCDF variables
bc_mask
tovel_bc_mask
andu_ssa_bc
andv_ssa_bc
tou_bc
andv_bc
. - Removed the
pisms
executable. Runpismr -eisII X
to run EISMINT-II experimentX
. fill_missing_petsc.py
uses homogeneous Neumann BC at domain boundaries.- Added optional arguments
time_units
andcalendar
toPISM.util.prepare_output()
in the Python bindings.