There is a newer version of the record available.

Published April 6, 2022 | Version 0.2.0
Software Open

Modeling glaciers on a digital elevation model based on mass balance and a modified D8 flow algorithm applied to ice.

Description

The modeling is based on a linear relationship between altitude and mass balance, the so-called mass balance gradient. For alpine glaciers this gradient is about 0.006 m/m. Continental glaciers tend to be at 0.003 and maritime glaciers at 0.01 m/m. The alpine gradient is set by default in the model. To model the glaciers, annual steps are calculated. First the mass balance (accumulation and ablation) for the area is added to the glacier layer and in a second step the glacier flow is simulated by using a modified D8 technique (submodule fracd8). Since the prupose of the D8 flow direction algorithm is modeling surface water flows over terrain, the D8 algorithm was modified to be able to consider the fraction of ice that is flowing out of each cell based on the glaciers velocity. In order to avoid pure convergence of the flow, the surface of the glaciers is slightly smoothed. The simulation stops when the observed difference in mass balance for a smoothed curve is less than a given tolerance.

Limitations

The model has some limitations that need to be considered:

  • The flow velocity of the ice per year is limited by the resolution of the grid cells. Therefore, a too high resolution should not be chosen for the simulation.
  • The modeling of ice flow is done with D8, a technique for modeling surface flow in hydrology. Water behaves fundamentally different from ice, which is neglected by the model (e.g. influence of crevasses).
  • The flow velocity only considers internal ice deformation (creep). Basal sliding, and soft bed deformation are ignored.
  • No distinction is made between snow and ice. The density of the snow or ice mass is also neglected in the vertical column.

Version 0.2.0

  • Features:
    • Use of the .flake8 config file.
    • Configured Dependabot.
    • Add CITATION.cff file for citing the repository and linking to zenodo for DOI generation.
    • Use python logging module and remove inheritance from Base class.
    • Use internal method self._iterate to simluate years in order to reduce duplicate code.
    • Getter and setter methods for the plot instance variable, which initializes or destroys the matplotlib.pyplot.figure.
    • Functionality to export the glacier layers and statistics of the model as .csv and .tif using the self.export() method.
    • Reproject example DEM aletsch.tif from Swiss CH1903 / LV03 (EPSG:21781) to Swiss CH1903+ / LV95 (EPSG:2056).
    • Add flow and model parameters as class attributes.
    • Add fracd8 algorithm as new submodule. The algorithm is JIT compiled using numba.
    • Add utils module for helper utilities: Recording arrays and generating hillshades.
  • Bugfixes:
    • Fix failing CI: Update package dependencies, set GitHub actions to python 3.10, set GDAL version to 3.4.1 and remove shebang from tests.
    • Updated mypy configuration.
    • Calling self.reach_steady_state() on an already iterated model, will now perform a clean reset of the model.
    • A model destructor ensures closing the model figure, when the model is deleted or garbage collected.
    • Clarify the velocity variable ud as surface ice deformation velocity (at medium height), and point out that basal sliding and soft bed deformation are ignored.
    • Fix mass balance long-term trend line in plot, when calling simulate on a model in steady state.

Notes

If you use this software, please cite it as below.

Files

munterfi/glacier-flow-model-v0.2.0.zip

Files (3.1 MB)

Name Size Download all
md5:3fbb519da799acca38a7954566420ec8
3.1 MB Preview Download

Additional details