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: