tCHANGES.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
---
tCHANGES.rst (41197B)
---
1 .. default-role:: literal
2
3 Changes from v1.2.1 to v1.2.2
4 =============================
5
6 - Use `time.time()` instead of `time.clock()` in `examples/python/ssa_forward.py`
7 (contributed by Moritz Kreuzer).
8 - von Mises calving is applied at both floating and grounded ice fronts.
9 - Update the list of Debian (Ubuntu) packages in the installation manual.
10 - Use "python3" instead of "python" in all Python scripts. This is needed
11 to support Ubuntu 20.04, for example.
12 - Support Clang 10.0 and GCC 9.3.
13 - Formally require PROJ 6.0 or newer. PISM v1.2 required PROJ 5.0 or later, but it turns
14 out that there are significant differences between PROJ 5.x and 6.x that make supporting
15 both version too complicated.
16 - Fix `issue 462`_ (asymmetric `gl_mask` even though ice geometry is symmetric).
17 - Update the minimal NetCDF version required by PISM (4.4 instead of 4.1).
18
19 Changes from v1.2 to v1.2.1
20 ===========================
21
22 - Use better notation for different lapse rates in the manual.
23 - Fix bugs in the fracture density code and a related scrips.
24 - Fix the orographic precipitation model.
25 - Continue after warning about missing "units" in an input file
26 - Stop if `-ocean_kill_file` is set.
27 - Update all scripts that used `-ocean_kill_file` and use `-front_retreat_file` instead.
28 - Improve regression tests.
29 - Remove some old or unused code.
30 - Fix #454 (PICO initialization fails with dummy values).
31 - Use high yield stress in all ice-free areas (see #456).
32 - Set stress_balance.ssa.fd.max_speed to about the speed of light. See #455. The default
33 value of this parameter should be high enough to disable this mechanism.
34
35 Changes from v1.1 to v1.2
36 =========================
37
38 Front retreat
39 ^^^^^^^^^^^^^
40
41 - Implement the ISMIP6 front retreat parameterization. Reads a time-dependent ice extent
42 mask (variable name: `land_ice_area_fraction_retreat`) from a file specified using the
43 configuration parameter `geometry.front_retreat.prescribed.file`. This mechanism
44 replaces the old "`ocean_kill`" calving code.
45 - Rename configuration parameters controlling front retreat because they are not
46 calving-specific (`calving.front_retreat.use_cfl` to `geometry.front_retreat.use_cfl`
47 and `calving.front_retreat.wrap_around` to `geometry.front_retreat.wrap_around`).
48 Corresponding command-line options are renamed to `-front_retreat_cfl` and
49 `-front_retreat_wrap_around`.
50 - Implement 3 frontal melt models: constant in time and space (`constant`), reading
51 frontal melt from a file (`given`), and using time- and space-dependent thermal ocean
52 forcing and modeled subglacial water flux in an implementation of the frontal melt
53 parameterization in Rignot et al 2016 (`routing`).
54 - Now PISM combines retreat rates due to calving (eigen-calving and von Mises calving) and
55 a frontal melt parameterizations before using these to update ice geometry. This
56 simplifies and fixes the implementation of `geometry.front_retreat.use_cfl`.
57 - Add a configuration parameter `frontal_melt.include_floating_ice`: `true` means "apply
58 computed frontal melt rates at *both* grounded and floating ice margins", `false` means
59 "apply computed frontal melt rates at grounded margins only."
60
61 Subglacial hydrology
62 ^^^^^^^^^^^^^^^^^^^^
63
64 - Add a new subglacial hydrology model `steady`. It adds an approximation of the
65 subglacial water flux to the `null` model. This approximation uses the assumption that
66 the subglacial water system instantaneously reaches the steady state after a change in
67 the water input rate from the surface or a change in ice geometry. At high grid
68 resolutions (~1km and higher) this is likely to be cheaper than using the `routing`
69 model to obtain the flux needed by the frontal melt parameterization (above). Note that
70 *this is a different model* and so when switching to it *re-tuning of the frontal melt
71 parameterization will be necessary*.
72 - Variable `water_input_rate` containing water input rate for hydrology models (see
73 `hydrology.surface_input.file`) uses units of "kg m-2 s-1" instead of "m s-1".
74 - Rename `hydrology.surface_input_file` to `hydrology.surface_input.file`. Also, add
75 `hydrology.surface_input.period` and `hydrology.surface_input.reference_year` to support
76 periodic water input rates.
77 - Add the ability to pass surface runoff modeled by PISM to a subglacial hydrology model
78 (see `hydrology.surface_input_from_runoff`).
79 - Add a configuration parameter `hydrology.routing.include_floating_ice` to allow routing
80 of subglacial water under floating ice. This may be appropriate when an outlet glacier
81 has a small floating tongue. This also produces an extension of
82 `subglacial_water_flux_mag` to floating areas, which is needed to model frontal melt
83 using the `routing` model (see above).
84 - Add a configuration parameter `hydrology.add_water_input_to_till_storage`
85 (default: yes). If "yes", surface water input is added to till storage which (if it
86 overflows) then contributes to the amount of transportable subglacial water. If "no",
87 surface water input directly contributes to the amount of transportable water, bypassing
88 till storage. Basal melt rate always contributes to the amount of water stored in the
89 till.
90
91 Surface, atmosphere, ocean forcing
92 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
93
94 - Use linear interpolation in time for 2D time-dependent forcings that are interpreted as
95 "snapshots" of a quantity. For example: ice surface temperature is interpreted as a
96 snapshot while climatic mass balance is interpreted as a time-average over a specified
97 interval. (Flux forcing fields such as the SMB are interpreted as piecewise-constant in
98 time to simplify mass and flux accounting.) In particular, this change ensures that the
99 2D sea level forcing results in a smoothly changing sea level.
100 - Fix units of the precipitation lapse rate (`(kg m-2/year)/km` instead of `(m/year)/km`).
101 - PISM uses configuration parameters to select surface, atmosphere, ocean, sea level, and
102 frontal melt models. See `surface.models`, `atmosphere.models`, `ocean.models`,
103 `sea_level.models`, and `frontal_melt.models`.
104 - Implement orographic precipitation following Smith and Barstad, *A linear theory of
105 orographic precipitation*, 2004.
106 - Add regression tests for most of PISM's `surface`, `atmosphere`, `ocean`, and
107 `sea_level` components.
108 - Rename `ocean.constant.melange_back_pressure_fraction` to
109 `ocean.melange_back_pressure_fraction` and document its interaction with `-ocean
110 ...,frac_MBP`.
111 - Rename `-atmosphere paleo_precip` to `precip_scaling`. Precipitation scaling using air
112 temperature offsets is useful in other contexts, not just paleo-climate runs.
113 - Rename `-atmosphere lapse_rate` to `elevation_change`. This modifier includes
114 adjustments that depend on the change in surface elevation but are *not* lapse rates.
115 - Rename `atmosphere.elevation_change.precipitation_lapse_rate` to
116 `atmosphere.elevation_change.precipitation.lapse_rate` ("." instead of "_").
117 - Add `atmosphere.elevation_change.precipitation.method` (option `-precip_adjustment`).
118
119 Set it to "scale" to use scaling with `exp(C * dT)`, where
120
121 `C = atmosphere.precip_exponential_factor_for_temperature`
122
123 and `dT` is computed using provided reference surface elevation and
124 `atmosphere.elevation_change.temperature_lapse_rate`.
125
126 Set it to "shift" to use `atmosphere.elevation_change.precipitation.lapse_rate` instead.
127 - Rename `-surface lapse_rate` to `-surface elevation_change`: now this modifier includes
128 an adjustment that is not a lapse rate. Also, rename all related configuration
129 parameters.
130 - Add a configuration parameter `surface.elevation_change.smb.method`: "scale" to use the
131 exponential factor (see `surface.elevation_change.smb.exp_factor`); "shift" to use the
132 lapse rate (see `surface.elevation_change.smb.lapse_rate`).
133 - Add `surface.elevation_change.smb.exp_factor`:
134
135 `SMB = SMB_input * exp(C * dT),`
136
137 where `C = surface.elevation_change.smb.exp_factor` and `dT` is the change in surface
138 temperature computed using `surface.elevation_change.temperature_lapse_rate`.
139
140 Calving
141 ^^^^^^^
142
143 - Add configuration parameters `calving.vonmises_calving.use_custom_flow_law`,
144 `calving.vonmises_calving.flow_law`, and `calving.vonmises_calving.Glen_exponent`. This
145 makes it possible to use a different flow law (and so a different Glen exponent) in the
146 stress balance model and the tensile von Mises stress computation.
147
148 Energy balance
149 ^^^^^^^^^^^^^^
150
151 - Switch to an unconditionally-stable method for the approximation of the heat equation in
152 columns of the bedrock thermal layer (backward Euler time discretization instead of
153 explicit time stepping).
154 - Add a configuration parameter `energy.bedrock_thermal.file`. Use this to specify a
155 separate file containing the geothermal flux field (`bheatflx`). Leave it empty to read
156 `bheatflx` from the input file (`-i` and `input.file`).
157
158 Bed deformation
159 ^^^^^^^^^^^^^^^
160
161 - Fix the implementation of the elastic part of the Lingle-Clark bed deformation model.
162 See `issue 424`_. To update this model we need to compute the discrete convolution of
163 the current load with the load response matrix (the discrete equivalent of computing the
164 convolution of the load with the Green's function).
165
166 The load response matrix itself is approximated using quadrature and a one-dimensional
167 interpolant for the tabulated Green's function.
168
169 The old code used a "naive" implementation of the discrete convolution which was *both*
170 slow and broken. The new implementation uses FFT to compute the discrete convolution,
171 making it faster and (surprisingly) easier to implement.
172
173 PISM now includes a regression test covering this. Unfortunately we don't have an exact
174 solution to compare to, so the best we can do is this: a) compare PISM's FFT-based
175 convolution to `scipy.signal.fftconvolve()` and b) compare PISM's load response matrix
176 to an independent implementation using `scipy.integrate.dblquad()` (instead of
177 `adapt_integrate()` by Steven G. Johnson).
178 - The configuration parameter `bed_deformation.lc.elastic_model` is set to "on" by
179 default. This means that now `-bed_def lc` enables *both* the elastic and the viscous
180 part of the Lingle-Clark model. In previous PISM versions `-bed_def lc` turned on the
181 viscous part of the model and an extra command-line option (`-bed_def_lc_elastic_model`)
182 was required to turn on the elastic part.
183 - Rename `bed_deformation.update_interval` to `bed_deformation.lc.update_interval` and fix
184 its interpretation: before this change both bed deformation models (point-wise isostasy
185 and the Lingle-Clark model) updated *not more often than* every
186 `bed_deformation.update_interval` years. This lead to issues with stopped and re-started
187 simulations (see `issue 422`_). Now the point-wise isostasy model is updated every time
188 step (its computational cost is negligible) and the Lingle-Clark model is updated
189 *exactly* every `bed_deformation.lc.update_interval` years, limiting PISM's time step
190 length.
191
192 Regional modeling
193 ^^^^^^^^^^^^^^^^^
194
195 - Improve handling of domain edges in regional simulations.
196 - Fix PISM's `-regional` runs: disable ice flow, surface mass balance, and basal mass
197 balance effects on ice geometry in "no model" areas.
198
199 Stress balance
200 ^^^^^^^^^^^^^^
201
202 - Improve PISM's handling of ice margins at locations where an icy cell is next to an
203 ice-free cell that has surface elevation exceeding the surface elevation of ice (valley
204 glaciers, fjords, nunataks). Here we have to use one-sided finite differences to avoid
205 the influence of the surface elevation at ice-free locations on the estimate of the
206 driving stress. In the SSAFD code we also prescribe drag along the margin (see
207 `basal_resistance.beta_lateral_margin`) and a stress boundary condition assuming that at
208 these locations ice is in hydrostatic equilibrium with the rock next to it. In other
209 words, this boundary condition is the same as the calving front BC, but with a zero
210 pressure difference.
211 - Rename command-line options `-ssa_rtol` to `-ssafd_picard_rtol` and `-ssa_maxi` to
212 `-ssafd_picard_maxi` to make it clear that they control Picard iterations.
213
214 Basal strength
215 ^^^^^^^^^^^^^^
216
217 - Add the ability to use space- and time-dependent `delta` (minimum effective pressure on
218 till as a fraction of overburden pressure) in the Mohr-Coulomb basal yield stress
219 parameterization.
220 - Yield stress models can be time-dependent.
221 - Implement "regional" versions of all yield stress models (both Mohr-Coulomb and
222 constant). Previous versions did not support constant yield stress in regional model
223 configurations.
224
225 Diagnostics
226 ^^^^^^^^^^^
227
228 - Add configuration parameters `output.ISMIP6` (follow ISMIP6 conventions),
229 `output.use_MKS` (save output variables in MKS units), `output.ISMIP6_extra_variables`
230 (list of fields to report when `-extra_vars ismip6` is given), and
231 `output.ISMIP6_ts_variables` (list of scalar time series to report when `-ts_vars
232 ismip6` is given). When `output.ISMIP6` is set PISM saves spatially-variable diagnostics
233 at the beginning of the run (if requested).
234 - Bug fix: ensure that land ice area fraction (diagnostic variable `sftgif`) never
235 exceeds 1.
236 - Add the `hydraulic_potential` diagnostic to `routing` and `distributed` subglacial
237 hydrology models.
238 - Fix an unreported bug in the computation of the `flux` diagnostic. This bug affected
239 PISM's diagnostic variables `flux`, `velbar`, `velbar_mag`, and `vonmises_stress` (which
240 uses `velbar`).
241
242 It did *not* affect ice dynamics.
243 - Implement 2D and scalar grounding line flux diagnostics `grounding_line_flux`. See
244 `issue #300`_.
245 - Rename `ocean_pressure_difference` to `ice_margin_pressure_difference`.
246
247 Input and output
248 ^^^^^^^^^^^^^^^^
249
250 - Add a configuration flag `output.extra.stop_missing` (default: yes). Set this flag to
251 "no" to make PISM warn about `-extra_vars` diagnostics that are requested but not
252 available instead of stopping with an error message.
253 - Remove `output.variable_order`. Now PISM always uses `y,x,z` in output files.
254 - Allow using NCAR's ParallelIO library to write output files. If ParallelIO is compiled
255 with parallel NetCDF-4 and PnetCDF libraries, this adds four new choices for
256 `output.format`: `pio_pnetcdf` (parallel, using the CDF5 version of the NetCDF format),
257 `pio_netcdf4p` (parallel, using the HDF5-based NetCDF format), `pio_netcdf4c` (serial,
258 HDF5-based compressed NetCDF-4 format), `pio_netcdf` (serial).
259 - Fix `issue 327`_: now PISM uses mid-points of reporting intervals when saving to the
260 `-extra_file`. This makes PISM's output files easier to process using CDO.
261
262 Other
263 ^^^^^
264
265 - Provide better error messages when trying to read in a 2D field but the input file
266 contains a 3D variable (or trying to read a 3D field but the input contains a 2D
267 variable).
268 - Provide better error messages when trying to allocate more than 10000 records of a
269 forcing field.
270 - PISM supports CMake 3.1 again (v1.1 required CMake 3.13 for no good reason).
271 - Use `pism/pism_config.hh` and `pism_config.cc` that are generated by CMake to include
272 build information in the binary. This should take care of `issue 405`_.
273 - PISM uses the new (v5.x) PROJ API, so PROJ 5.0 or later is required to compute
274 longitude-latitude grid coordinates and cell bounds. (Tested using PROJ v5.2.0 and
275 v6.1.1.)
276 - Add contributing guidelines to the User's Manual.
277
278 Changes from v1.1.3 to v1.1.4
279 =============================
280
281 - PISM can be built with PROJ v6. (We define `ACCEPT_USE_OF_DEPRECATED_PROJ_API_H`. This
282 workaround will break once PROJ drops the deprecated API completely. See `issue 409`_.)
283 - Fix a minor bug in the `routing` hydrology model (improper indexing in the code
284 computing hydraulic conductivity).
285
286 Changes from v1.1.2 to v1.1.3
287 =============================
288
289 - Minor fixes of PISM's documentation.
290 - Fix an unreported bug in the computation of the `flux` diagnostic. This bug affected
291 PISM's diagnostic variables `flux`, `velbar`, `velbar_mag`, and `vonmises_stress` (which
292 uses `velbar`).
293
294 It did *not* affect ice dynamics.
295
296 Changes from v1.1.1 to v1.1.2
297 =============================
298
299 - Fix an unreported bug in `-surface ...,forcing`: PISM was ignoring the time step
300 restriction associated with this mechanism; large `surface.force_to_thickness.alpha`
301 could lead to uncontrolled growth of ice thickness.
302 - Update the `-atmosphere pik` temperature parameterization for compatibility with paleo
303 simulations by Albrecht et al.
304 - Switch to an unconditionally-stable method for the approximation of the heat equation in
305 columns of the bedrock thermal layer (backward Euler time discretization instead of
306 explicit time stepping).
307
308 Changes from v1.1 to v1.1.1
309 ===========================
310
311 - PISM supports CMake 3.1 again (v1.1 required CMake 3.13 for no good reason).
312 - Fix PISM's `-regional` runs: disable ice flow, surface mass balance, and basal mass
313 balance effects on ice geometry in "no model" areas.
314
315 Changes from v1.0 to v1.1
316 =========================
317
318 - PISM no longer attempts to use projection information to compute cell areas. This change
319 was prompted by better mass accounting: it is now clear that using numerical methods
320 designed for a uniform grid forces us to treat cells are equal in area. We may address
321 this issue later but do not have the resources to work on this topic in the near future.
322 Please use an equal-area projection for your simulations if distortions caused by
323 working in a projected coordinate system are a concern.
324 - Add 5 more parameterizations of near-surface air temperature to `-atmosphere pik`.
325 - PISM stops with an error message if the name of a parameter in a `-config_override` file
326 does not match any of the known PISM parameters.
327 - Fix `issue 375`_ (could not use `-config_override` to control the
328 bed-elevation-dependent parameterization of the till friction angle).
329 - PISM stops with an error message if the diffusivity of the SIA flow exceeds a given
330 threshold (see `stress_balance.sia.max_diffusivity`). Extremely high SIA diffusivities
331 often mean that the setup is not "shallow enough"; in a situation like this it might
332 make sense to re-evaluate model parameters before proceeding. (A short "smoothing" run
333 might be helpful, too, if high diffusivities occur at the beginning of a simulation
334 using ice thickness or bed topography not computed by PISM.)
335 - The SIA stress balance model limits computed diffusivity at
336 `stress_balance.sia.max_diffusivity` if
337 `stress_balance.sia.limit_diffusivity` is set. This makes it
338 possible to speed up simulations in which high diffusivities at a
339 few isolated grid points force PISM to take very short time steps.
340 *This implies sacrificing accuracy at these grid points. Use with
341 caution!*
342 - The SSAFD solver limits ice speed at a threshold specified by
343 `stress_balance.ssa.fd.max_speed`. This may be useful when the computed sliding speed is
344 abnormally high at a few isolated grid points, reducing the length of time steps PISM
345 can take. Capping ice speed makes it possible to ignore troublesome locations and speed
346 up some simulations. The default (500 km/year) is set high enough to deactivate this
347 mechanism.
348 - Discard requested snapshot times that are outside of the modeled time interval. (This
349 keeps PISM from overwriting a snapshot file written by one of the previous runs in a
350 re-started simulation.)
351 - Add a new configuration parameter `stress_balance.sia.bed_smoother.theta_min` for the
352 bed roughness parameterization in the SIA stress balance model.
353 - Added PICO, the *Potsdam Ice-shelf Cavity mOdel* (https://doi.org/10.5194/tc-2017-70).
354 Use `-ocean pico` to enable and see the documentation of PISM's `ocean models`_ in the User's
355 Manual for details.
356 - Added `-ocean ...,anomaly`, an ocean model *modifier* that reads spatially-variable
357 sub-shelf mass flux anomalies from an input file.
358 - Exclude ice shelves from the ocean load provided to bed deformation models. See `issue
359 363`_.
360 - Revert the change from v0.7 to v1.0 in the handling of energy conservation near ice
361 margins. PISM v0.7 and earlier ignored horizontal advection and strain heating terms in
362 the energy balance equation at grid points with neighbors below a given threshold ice
363 thickness. PISM v1.0 eliminated this adjustment at ice margins. This version restores
364 it, with the following additions.
365
366 Set `energy.margin_ice_thickness_limit` to control
367 the thickness limit used to trigger the special marginal treatment. Set parameters
368
369 - `energy.margin_exclude_horizontal_advection`,
370 - `energy.margin_exclude_vertical_advection`, and
371 - `energy.margin_exclude_strain_heating`
372
373 to control individual parts of this modification.
374
375 The underlying issue is that the gradient of the ice thickness is discontinuous at
376 grounded ice margins, and so its finite-difference approximation used by PISM is of poor
377 quality. (The same applies to the gradient of the top surface elevation.) Errors in
378 these approximations propagate to other quantities computed by PISM, notably the ice
379 velocity and the strain heating. The poor quality of approximation of *these* quantities
380 is the main reason for excluding them from the energy-balance computation.
381
382 Preliminary tests show that excluding the strain heating term near ice margins is the
383 most important modification.
384 - Fix `issue 400`_ (`viscous_bed_displacement` should not use the `coordinates`
385 attribute).
386 - Support older (< 1.7) OpenMPI versions.
387 - Add a work-around needed to use old-ish NetCDF (4.0 - 4.1) with OpenMPI.
388 - Fix `issue 222`_ (`-part_grid` residual redistribution code used to lose mass in
389 parallel runs).
390 - Add `geometry.part_grid.max_iterations` and increase it to 10.
391 - Fix a bug in `pismr -regional` (stored surface elevation was not initialized correctly)
392 - PDD model: add scalar diagnostics
393
394 - `surface_accumulation_rate`,
395 - `surface_melt_rate`,
396 - `surface_runoff_rate`.
397
398 See `issue 394`_. Also, rename `saccum`, `smelt`, `srunoff` to
399 `surface_accumulation_flux`, `surface_melt_flux`, `surface_runoff_flux`
400 respectively. Now PDD's climatic mass balance can be compared to the effective climatic
401 mass balance: use `surface_accumulation_flux - surface_runoff_flux`.
402
403 To save all these, use `-extra_vars` shortcuts `pdd_fluxes` and `pdd_rates`.
404 - PDD model: replace command-line options `-pdd_rand`, `-pdd_rand_repeatable` with one
405 configuration parameter: `surface.pdd.method` (select from `expectation_integral`,
406 `repeatable_random_process`, `random_process`).
407 - Fix `issue 74`_. (Now `basal_mass_flux_floating` is zero with the `float_kill`
408 calving mechanism, i.e. when `ice_area_glacierized_floating` is zero.)
409 - Refactor hydrology models, adding proper mass accounting.
410 - Implement 2D diagnostics quantities needed for mass conservation accounting in hydrology
411 models:
412
413 - `tendency_of_subglacial_water_mass`,
414 - `tendency_of_subglacial_water_mass_due_to_input`,
415 - `tendency_of_subglacial_water_mass_due_to_flow`,
416 - `tendency_of_subglacial_water_mass_due_to_conservation_error`,
417 - `tendency_of_subglacial_water_mass_at_grounded_margins`,
418 - `tendency_of_subglacial_water_mass_at_grounding_line`, and
419 - `tendency_of_subglacial_water_mass_at_domain_boundary`.
420
421 Use the shortcut `hydrology_fluxes` to save all these in an "extra file."
422 - Add `hydrology.surface_input_file`: `IceModel` can read in time-dependent 2D water
423 input rates for subglacial hydrology models.
424 - Implement a proper generalization to 2D of the 1D parameterization of the grounding line
425 position. (This code interprets ice thickness, bed elevation, and sea level as
426 piecewise-linear functions on a specially-designed triangular mesh refining the regular
427 grid used by PISM.)
428 - Support 2D (spatially-variable) sea level elevation everywhere in PISM, including 2D sea
429 level forcing. (Use `-sea_level constant,delta_sl_2d` and search for
430 `ocean.delta_sl_2d.file` and related configuration parameters.)
431 - Split sea level forcing from the ocean model so that the sea level is available when
432 sub-shelf melt parameterizations are initialized. Use `-sea_level constant,delta_sl`
433 instead of `-ocean constant,delta_SL`.
434 - Decouple calving law parameterization from ocean models and the stress balance code.
435 - Add regression tests for all ocean models.
436 - Fix `issue 402`_: ensure reproducibility of `-bed_def lc` results.
437 - Clean up PISM's ocean, surface, and atmosphere model code, making it easier to test and
438 debug.
439 - Make it easier to use scalar and 2D time-dependent forcing fields.
440 - Add configuration parameters `input.file` and `input.bootstrap`, corresponding to
441 command-line options `-i` and `-bootstrap`.
442 - Add notes documenting the implementation of the calving front boundary condition to the
443 manual.
444 - Make it easier to "balance the books":
445
446 #. rename scalar diagnostics so that they match 2D diagnostics and
447 #. report fluxes in `Gt/year` instead of `kg/year`.
448 - Update the Debian/Ubuntu section of the installation manual.
449 - Move the documentation of the BOMBPROOF numerical scheme for energy conservation from
450 the source code browser into the manual.
451 - Add an experimental implementation of a parameterization of cryo-hydrologic warming
452 based on *Cryo-hydrologic warming: A potential mechanism for rapid thermal response of
453 ice sheets* by Phillips et al, 2010.)
454
455 Changes from v0.7 to v1.0
456 =========================
457
458 This document lists notable changes from PISM v0.7 to v1.0.
459
460 Summary
461 -------
462
463 - New mass transport code makes it easier to "balance the books".
464 - PISM's grids are no longer transposed ( ``(y,x)`` versus ``(x,y)`` ).
465 - Adds an optimized implementation of the GPBLD flow law for the Glen n=3 case.
466 - Adds von Mises calving (see Morlighem et al, *Modeling of Store Gletscher's calving
467 dynamics, West Greenland, in response to ocean thermal forcing*, 2016)
468 - Adds more diagnostic quantities (127 spatially-variable fields and 38 scalar variables
469 in total)
470 - Better code, `better documentation`_, more regression and verification tests.
471
472 Please run ``git log v0.7..v1.0`` for the full list.
473
474 See files in the ``doc/`` sub-directory for changes from v0.6 to v0.7, etc.
475
476 Installation
477 ------------
478
479 - Remove ``Pism_BUILD_TYPE`` and use ``CMAKE_BUILD_TYPE`` instead.
480
481 Prerequisites
482 ^^^^^^^^^^^^^
483
484 - Require CMake 3.1 and compilers supporting C++11.
485
486 - Require PETSc built with ``PetscScalar`` as ``double``. Stop if ``PetscScalar`` is
487 ``complex``. See `issue 237`_.
488
489 - Drop Subversion support. Please use Git to download PISM source code.
490
491 - PETSc < 3.5 is not supported; use PETSc 3.5 and newer (PETSc 3.6.0 is not supported due
492 to a bug).
493
494 Library and directory structure
495 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
496
497 - Install PISM headers in ``include/pism``, skipping 3rd party headers and empty
498 directories (see `issue 166`_.)
499
500 - Link all of PISM into one single library.
501
502 - Install all Python scripts in ``util/``. Fixes `issue 346`_.
503
504 - Fix the directory structure created by ``make install``.
505
506 Other
507 ^^^^^
508
509 - Remove all ``simpleXXX`` executables. See `issue 343`_. Use Python wrappers to access exact
510 solutions used in PISM's verification tests.
511
512 - Remove ``pismo`` (use ``pismr -regional``).
513
514 Documentation
515 -------------
516
517 - Migrate documentation to Sphinx_.
518
519 - New PISM support e-mail address: uaf-pism@alaska.edu instead of help@pism-docs.org.
520
521 Computational domain and grid
522 -----------------------------
523
524 - Add options ``-x_range``, ``-y_range``, which specify domain extent in the `x` and `y`
525 direction during bootstrapping. These can be used to extract a subset of a grid for a
526 regional run.
527
528 - De-couple grid periodicity from grid registration and add the ``grid.registration``
529 parameter. This changes the interpretation of ``-Lx`` and ``-Ly`` during bootstrapping.
530 See `issue 347`_.
531
532 - Support EPSG:26710, EPSG:3413, and EPSG:3031. When an input file contains the global
533 attribute ``proj4`` containing the string "``+init=epsg:XXXX``" where ``XXXX`` is one of
534 these codes PISM will create a CF-conforming ``mapping`` variable with projection
535 parameters corresponding to the selected mapping. See `issue 350`_.
536
537 - Write PROJ.4 parameters to ``mapping:proj4_params`` (for CDO).
538
539 Ice rheology
540 ------------
541
542 - Add ``gpbld3``, the ``n==3`` optimized flow law.
543
544 This is an optimized (vectorized_) implementation of the
545 Glen-Paterson-Budd-Lliboutry-Duval flow law with the fixed Glen exponent of 3.
546
547 On modern (2011 and on) CPUs this flow law implementation is almost 4 times faster than
548 the default one. This significantly reduces the cost of high-resolution runs.
549
550 The implementation uses ``exp()`` from VDT_, a vectorized math library developed at CERN.
551 To reduce the number of external dependencies a copy of VDT (v0.3.6) is included in
552 PISM's source tree.
553
554 Stress balance
555 --------------
556
557 - SSAFD KSP solver: use the initial residual norm.
558
559 This prevents the SSAFD solver from failing when the solver has no work to do.
560
561 - Make the SSAFD solver a little more robust by replacing zero diagonal matrix entries
562 with large beta, effectively "disabling" sliding at these locations. See `issue 349`_.
563
564 - Remove ``SIA_Sliding``, EISMINT II tests G and H, verification test E.
565
566 - Add ``stress_balance.vertical_velocity_approximation``. I.e. (optionally) use
567 first-order upwinding to compute u_x and v_y in the vertical velocity computation.
568
569 - Add enhancement factors for interglacial periods (See Ralf Greve, *Application of a
570 polythermal three-dimensional ice sheet model to the Greenland ice sheet: Response
571 to steady-state and transient climate scenarios*, 1997.)
572
573 Use the following configuration parameters to control this:
574
575 - ``stress_balance.sia.enhancement_factor_interglacial``
576 - ``stress_balance.ssa.enhancement_factor_interglacial``
577 - ``time.eemian_start``
578 - ``time.eemian_end``
579 - ``time.holocene_start``
580
581 Geometry and mass transport
582 ---------------------------
583
584 - Completely redesign and re-implement the mass transport code. The new code is
585 well-isolated and extensible, designed to make "balancing the books" easier, and can be
586 tested in isolation. See also `issue 201`_.
587
588 - Add the class ``Geometry`` that can be used to provide geometry information to PISM's
589 sub-models. This improves interfaces of PISM's sub-models, reducing undesirable "tight"
590 coupling.
591
592 - Option ``-part_grid`` implies ``-part_redist``.
593
594 Calving
595 -------
596
597 - Generalize eigen-calving code and add von Mises calving.
598
599 - Implement calving front retreat due to frontal melting.
600
601 - Rename ``-cfl_eigen_calving`` to ``-calving_cfl``.
602
603 - Make it possible to disable ``float_kill`` near grounding lines. See
604 ``-float_kill_calve_near_grounding_line``.
605
606 - Add option ``-float_kill_margin_only``. See `issue 340`_.
607
608 - Allow using spatially-variable calving at thickness thresholds.
609
610 - Add ``-calving_wrap_around`` for synthetic geometry setups.
611
612 Energy conservation
613 -------------------
614
615 - ``BedThermalUnit`` ensures that computed bedrock temperatures exceed
616 zero Kelvin. See `issue 313`_.
617
618 - PISM no longer ignores horizontal enthalpy advection and strain
619 heating near ice margins. See `issue 292`_.
620
621 - Following a re-interpretation of Aschwanden et al, *An enthalpy formulation for glaciers
622 and ice sheets*, 2012 we require that dH/dp=0.
623
624 Assuming that specific heat capacities of ice and water do not depend on temperature,
625 this gives
626
627 ``L(p) = (T_m(p) - T_m(p_air)) (c_w - c_i) + L_0``, where
628
629 .. csv-table::
630
631 ``T_m`` , melting temperature
632 ``c_w`` , specific heat capacity of water
633 ``c_i`` , specific heat capacity of ice
634 ``L_0`` , latent heat of fusion at air pressure
635 ``p_air`` , air (atmospheric) pressure
636
637 Note that this form of the latent heat of fusion ``L(p)`` also follows from Kirchhoff's
638 law of thermochemistry. See ``EnthalpyConverter::L(T_pm)`` for details. See `issue
639 334`_.
640
641 - To allow for better code optimization, ``EnthalpyConverter`` no longer uses virtual
642 methods. ``ColdEnthalpyConverter`` used in temperature-based verification tests sets ice
643 melting temperature to 1e6 Kelvin to ensure that all ice is considered "cold."
644 ``varcEnthalpyConverter``, which implemented linear-in-temperature specific heat
645 capacity of ice, is removed.
646
647 - Code solving the enthalpy equation within an ice column supports both Dirichlet and
648 Neumann boundary conditions at the top surface.
649
650 Only the Dirichlet condition is used in modeling runs; Neumann B.C. code is there to
651 simplify testing.
652
653 - Documented the discretization of the enthalpy column system. Added simple verification
654 tests for the enthalpy solver within an ice column (pure advection and pure diffusion
655 with different boundary conditions).
656
657 - To simplify model initialization and testing energy balance models are isolated. The
658 rest of PISM uses the interface class ``EnergyModel``. The old "cold mode"
659 temperature-based energy balance model is in ``TemperatureModel``. The enthalpy-based
660 model is in ``EnthalpyModel``.
661
662 Input and output
663 ----------------
664
665 - Remove the HDF5-based parallel I/O code.
666
667 - Remove ``-o_format quilt`` and ``pismmerge``.
668
669 - Implement reading string attributes from NetCDF-4 files.
670
671 - Add detailed I/O (writing) reporting with ``-verbose 3``.
672
673 - Add ``pism::StringLogger``, a logger that prints to a string.
674
675 - Add an option ``-profile`` to write detailed profiling information.
676
677 - Add ice thickness thresholds for reporting and stress balance.
678
679 This makes it easier to track changes corresponding to "glacierized" areas while
680 excluding the seasonal cover.
681
682 See ``output.ice_free_thickness_standard`` and
683 ``stress_balance.ice_free_thickness_standard``.
684
685 - Write run statistics to extra and time-series files. (See `issue 324`_, `issue 330`_.)
686
687 - New option: ``-save_force_output_times``.
688
689 - Avoid re-writing metadata that does not change during the run.
690
691 Diagnostics
692 ^^^^^^^^^^^
693
694 - Add numerous new diagnostic quantities, including sets of diagnostics needed to "balance
695 the books" when accounting for mass changes (conservation).
696
697 - Add scalar diagnostics using the new (higher) thickness threshold used to determine if a
698 cell ice "ice-free". These diagnostics have the "``_glacierized``" suffix and can be
699 interpreted as tracking changes in glacierized areas (ignoring the seasonal cover).
700
701 - Rates of change reported by PISM are *mean* rates of change over reporting intervals
702 computed using finite differences.
703
704 - Better feedback on missing (or renamed) diagnostics. If a requested diagnostic is not
705 available PISM will stop with an error message listing available diagnostics.
706
707 Bed deformation
708 ---------------
709
710 - Add a new command-line option: ``-uplift_file``. Use it to specify the name of a file
711 containing the variable ``dbdt`` to use when initializing the Lingle-Clark bed
712 deformation model. See `issue 390`_.
713
714 - Add ``-topg_delta_file topg_delta.nc.``
715
716 With this option PISM tries to read "topg_delta" from a specified file and sets bed
717 topography at the beginning of a run to
718
719 .. code::
720
721 bed_elevation = topg + topg_delta.
722
723 Here ``topg`` is read from an input file (``-i``), ``topg_delta`` -- from
724 ``topg_delta.nc``.
725
726 - Lingle-Clark bed deformation model: save the viscous bed displacement on the extended
727 grid so that stopping and re-starting the model does not affect results. This also makes
728 it possible to refine computational grids in runs using the model. See `issue 370`_.
729
730 - Bed deformation models can be used and tested in isolation (see `issue 181`_).
731
732 Subglacial hydrology
733 --------------------
734
735 - Re-implement lateral till water diffusion as in Bueler and Brown, 2009.
736
737 Climate forcing
738 ---------------
739
740 - Apply lapse rate corrections throughout the domain.
741
742 Previously it was used in icy areas only.
743
744 - Remove old PDD code.
745
746 - ``-atmosphere``: use "``kg m-2 second-1``" precipitation units.
747
748 - Add ``ocean_frac_SMB``, a modifier scaling shelf-base mass flux
749
750 - Atmosphere and ocean modifiers save "effective" fields.
751
752 - Add an option and config. parameter ``surface.force_to_thickness.start_time`` to allow
753 delaying the nudging effect.
754
755 Bug fixes
756 ---------
757
758 (This is an incomplete list.)
759
760 - Fix `issue 328`_ (diagnostic computation of ``wvelsurf``).
761
762 - Fix a bug in ``pism::ocean::Constant`` (``-shelf_base_melt_rate`` was ignored).
763
764 - Fix `issue 351`_ (duplicate history in -extra_files).
765
766 - Fix a bug in the code implementing ``-save_file`` with ``-save_split`` (see `issue 325`_).
767
768 - Fix `issue 323`_ (fix EISMINT II settings so v0.7 conforms).
769
770 - Fix `issue 321`_: Sea level affects margin stress B.C. in the "dry simulation" mode.
771
772 - Fix interpolation weights and add a test. See `issue 326`_.
773
774 Miscellaneous
775 -------------
776
777 - Undo the "fundamental transpose": now PISM uses the (y,x) order in files and memory.
778
779 This simplifies pre-processing of input files and post-processing and analysis of
780 modeling results.
781
782 - Allow extrapolation during regridding to simplify restarting in runs where ice thickness
783 exceeded the height of the computational domain *and* to extend the domain in
784 continental ice sheet simulations. See `issue 302`_.
785
786 - Save the model state if the ice thickness exceeds the height of the computational
787 domain.
788
789 - The age model was moved to ``AgeModel``.
790
791 - Add the ability to add "hooks" to ``RuntimeError``.
792
793 Added to allow custom actions (such as printing a traceback) when an error is detected.
794
795 - Improve PISM's version information
796
797 - Add committer's name and date to the version string.
798 - ``pismr -version`` prints versions of
799
800 - PISM
801 - PETSc (including configuration options)
802 - MPI
803 - NetCDF
804 - FFTW
805 - GSL
806 - PROJ.4
807 - SWIG (if Python bindings are enabled)
808
809 - Add support for coverage testing using ``lcov``.
810
811 Set ``Pism_CODE_COVERAGE`` to enable, use ``make coverage_report`` to generate a report and
812 and ``make coverage_reset`` to reset coverage data.
813
814 - Add ``.clang-format`` to the top level directory
815
816 ``clang-format`` makes it much easier to use consistent code formatting throughout. To
817 re-format a file, commit it to the repository, then run
818
819 ``clang-format -i filename.cc``
820
821 (Here ``-i`` tells clang-format to edit files "in place." Note that editing in place
822 is safe because you added it to the repository.)
823
824 - Re-organize configuration parameters: all parameters have new names that reflect their
825 places within the model hierarchy.
826
827 - Improve processing of boolean command-line options
828
829 .. code::
830
831 -foo yes
832 -foo on
833 -foo true
834 -foo True
835 -foo (no argument)
836
837 set the boolean flag to "true."
838
839 .. code::
840
841 -foo no
842 -foo false
843 -foo False
844 -no_foo (for backward compatibility)
845
846 set the flag to "false."
847
848 - Add numerous regression tests.
849
850 .. _Sphinx: http://pism-docs.org/sphinx/
851 .. _better documentation: Sphinx_
852 .. _vectorized: https://en.wikipedia.org/wiki/Automatic_vectorization
853 .. _VDT: https://github.com/dpiparo/vdt
854
855 .. _issue 74: https://github.com/pism/pism/issues/74
856 .. _issue 166: https://github.com/pism/pism/issues/166
857 .. _issue 181: https://github.com/pism/pism/issues/181
858 .. _issue 201: https://github.com/pism/pism/issues/201
859 .. _issue 222: https://github.com/pism/pism/issues/222
860 .. _issue 237: https://github.com/pism/pism/issues/237
861 .. _issue 292: https://github.com/pism/pism/issues/292
862 .. _issue 300: https://github.com/pism/pism/issues/300
863 .. _issue 302: https://github.com/pism/pism/issues/302
864 .. _issue 313: https://github.com/pism/pism/issues/313
865 .. _issue 321: https://github.com/pism/pism/issues/321
866 .. _issue 323: https://github.com/pism/pism/issues/323
867 .. _issue 324: https://github.com/pism/pism/issues/324
868 .. _issue 325: https://github.com/pism/pism/issues/325
869 .. _issue 326: https://github.com/pism/pism/issues/326
870 .. _issue 327: https://github.com/pism/pism/issues/327
871 .. _issue 328: https://github.com/pism/pism/issues/328
872 .. _issue 330: https://github.com/pism/pism/issues/330
873 .. _issue 334: https://github.com/pism/pism/issues/334
874 .. _issue 340: https://github.com/pism/pism/issues/340
875 .. _issue 343: https://github.com/pism/pism/issues/343
876 .. _issue 346: https://github.com/pism/pism/issues/346
877 .. _issue 347: https://github.com/pism/pism/issues/347
878 .. _issue 349: https://github.com/pism/pism/issues/349
879 .. _issue 350: https://github.com/pism/pism/issues/350
880 .. _issue 351: https://github.com/pism/pism/issues/351
881 .. _issue 370: https://github.com/pism/pism/issues/370
882 .. _issue 375: https://github.com/pism/pism/issues/375
883 .. _issue 390: https://github.com/pism/pism/issues/390
884 .. _issue 394: https://github.com/pism/pism/issues/394
885 .. _issue 400: https://github.com/pism/pism/issues/400
886 .. _issue 402: https://github.com/pism/pism/issues/402
887 .. _issue 363: https://github.com/pism/pism/issues/363
888 .. _issue 409: https://github.com/pism/pism/issues/409
889 .. _issue 405: https://github.com/pism/pism/issues/405
890 .. _issue 422: https://github.com/pism/pism/issues/422
891 .. _issue 424: https://github.com/pism/pism/issues/424
892 .. _issue 462: https://github.com/pism/pism/issues/462
893 .. _ocean models: http://pism-docs.org/sphinx/climate_forcing/ocean.html
894 ..
895 Local Variables:
896 fill-column: 90
897 End: