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: