Modeling glaciers on a digital elevation model based on mass balance and a modified D8 flow algorithm applied to ice.
Creators
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 fromBase
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 thematplotlib.pyplot.figure
. - Functionality to export the glacier layers and statistics of the model as
.csv
and.tif
using theself.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.
- Use of the
- 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
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
Related works
- Is supplement to
- https://github.com/munterfi/glacier-flow-model/tree/v0.2.0 (URL)