Glacier surging experiments#
Goals of this notebook:
Learn how to simulate a surging glacier using OGGM-Edu.
Understand and describe the effects of glacier surging.
In OGGM, surging is currently not taken into account, although this could be an interesting study area for the future!
In this notebook we are going to explore surging glacier behavior on idealized glaciers.
What is a glacier surge?
A small percentage of glaciers undergo short periods of faster flow. They experience a change in morphology and surface characteristics, which sometimes leads to a marked frontal advance. The speed of the ice increases up to 10 - 1000 times of the normal velocity. Record flows are observed with velocities that exceed 100m per day. Surges happen in decadal cycles and can last for 1 up to 15 years (Jiskoot, 2011).
We start with importing the necessary classes:
from oggm_edu import SurgingGlacier, Glacier, GlacierBed, MassBalance, GlacierCollection
Basics#
We set up a glacier with a linear bedrock and variable width (see oggm_edu intro notebook) as a setting for our experiment.
# Bed and mass balance
bed = GlacierBed(altitudes=[3400, 3000, 2500, 1500],
widths=[500, 400, 300, 300])
mass_balance = MassBalance(ela=2900, gradient=4)
bed.plot()
We can then define a surging glacier using the SurgingGlacier
class
surging_glacier = SurgingGlacier(bed=bed, mass_balance=mass_balance)
The surging glacier is essentially the same as a Glacier
but with some added attributes, namely the .normal_years
, .surging_years
and the .basal_sliding_surge
.
By default these are set to 50 years of non-surging and 5 years of surging, with a basal sliding during a surge 10 times higher then when not surging.
These can easily be changed by the user after initialisation.
There are also some changes to how the progression works, and it is not possible to progress a surging glacier to equilibrium.
surging_glacier.normal_years
50
surging_glacier.surging_years
5
# The surging periodicity is also presented in the representation.
surging_glacier
Attribute | |
---|---|
Type | SurgingGlacier |
Age | 0 |
Length [m] | 0.0 |
Area [km2] | 0.0 |
Volume [km3] | 0.0 |
Max ice thickness [m] | 0.0 |
Surging periodicity (off/on) | [[50, 5]] |
Surging now? | False |
surging_glacier.basal_sliding
5.7e-20
surging_glacier.basal_sliding_surge
5.7000000000000005e-19
When we progress this glacier the basal sliding will be increased every 50 years resulting in an increased ice flow. This is the same as the sliding parameter of the previous notebook ice_flow_parameter.
surging_glacier.progress_to_year(400)
surging_glacier.plot_history()
In the plot above we can distinguish the surging periods as a rapid expansion in both length and area (also marked in orange).
surging_glacier.plot()
Surging glacier experiment#
We can compare this to a non-surging glacier. For this we will again employ the glacier collection.
# Create a "normal" glacier based on the same bed and mass balance
glacier = Glacier(bed=bed, mass_balance=mass_balance)
collection = GlacierCollection()
# Add the two glaciers to the collection
collection.add([surging_glacier, glacier])
# Make sure the glaciers are the same age
collection.progress_to_year(400)
/home/mowglie/disk/Dropbox/HomeDocs/git/oggm-edu/oggm_edu/glacier.py:1165: UserWarning: Year has to be above the current age of the glacier. It is not possible to de-age the glacier. Geometry will remain the same.
warnings.warn(msg)
collection.plot_history()
collection.plot()
collection
Type | Age | Length [m] | Area [km2] | Volume [km3] | Max ice thickness [m] | Surging periodicity (off/on) | Surging now? | Bed type | Top [m] | ... | Length [km] | ELA [m] | Original ELA [m] | Temperature bias [C] | Gradient [mm/m/yr] | Max ice velocity [m/yr] | AAR [%] | Response time [yrs] | Creep (Glen A) | Basal sliding | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Glacier | |||||||||||||||||||||
1 | SurgingGlacier | 400 | 15400.0 | 5.515 | 0.781632 | 166.361144 | [50, 5] | False | Linear bed with a variable width | 3400 | ... | 20.0 | 2900 | 2900 | 0 | 4 | NaN | NaN | NaN | NaN | NaN |
2 | Glacier | 400 | 16400.0 | 5.815 | 1.265717 | 246.235740 | NaN | NaN | Linear bed with a variable width | 3400 | ... | 20.0 | 2900 | 2900 | 0 | 4 | 110.000054 | 55.751042 | NaN | 2.4e-24 | 0 |
2 rows × 22 columns
Next we can create a glacier with a stronger surge, add this to the collection and compare it to the two previous glaciers.
surging_glacier_strong = SurgingGlacier(bed=bed, mass_balance=mass_balance)
surging_glacier_strong.basal_sliding_surge = 5.7e-20 * 50
collection.add(surging_glacier_strong)
collection.progress_to_year(400)
/home/mowglie/disk/Dropbox/HomeDocs/git/oggm-edu/oggm_edu/glacier.py:1165: UserWarning: Year has to be above the current age of the glacier. It is not possible to de-age the glacier. Geometry will remain the same.
warnings.warn(msg)
/home/mowglie/disk/Dropbox/HomeDocs/git/oggm-edu/oggm_edu/glacier.py:522: UserWarning: Year has to be above the current age of the glacier. It is not possible to de-age the glacier. Geometry will remain the same.
warnings.warn(msg)
collection
Type | Age | Length [m] | Area [km2] | Volume [km3] | Max ice thickness [m] | Surging periodicity (off/on) | Surging now? | Bed type | Top [m] | ... | Length [km] | ELA [m] | Original ELA [m] | Temperature bias [C] | Gradient [mm/m/yr] | Max ice velocity [m/yr] | AAR [%] | Response time [yrs] | Creep (Glen A) | Basal sliding | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Glacier | |||||||||||||||||||||
1 | SurgingGlacier | 400 | 15400.0 | 5.515 | 0.781632 | 166.361144 | [50, 5] | False | Linear bed with a variable width | 3400 | ... | 20.0 | 2900 | 2900 | 0 | 4 | NaN | NaN | NaN | NaN | NaN |
2 | Glacier | 400 | 16400.0 | 5.815 | 1.265717 | 246.235740 | NaN | NaN | Linear bed with a variable width | 3400 | ... | 20.0 | 2900 | 2900 | 0 | 4 | 110.000054 | 55.751042 | NaN | 2.4e-24 | 0 |
3 | SurgingGlacier | 400 | 14900.0 | 5.365 | 0.472113 | 103.202973 | [50, 5] | False | Linear bed with a variable width | 3400 | ... | 20.0 | 2900 | 2900 | 0 | 4 | NaN | NaN | NaN | NaN | NaN |
3 rows × 22 columns
collection.plot_history()
The response of the volume to a surge seems to be lagging behind the response in length somewhat. Can you come up with an explanation for this? Click for a hint
At the first stage of a surge, the glacier is very quick to adjust its length. This doesn't really change the volume of the glacier, only stretches it out. However, this also means that more of the glacier area will be in the ablation zone, and the glacier will begin to loose mass.References#
¹ Hester Jiskoot: Glacier Surging. In: Vijay P. Singh, Pratap Singh, Umesh K. Haritashya (Hrsg.): Encyclopedia of Snow, Ice and Glaciers. Springer, Dordrecht 2011, S. 415–428, ISBN 978-90-481-2641-5
What’s next?#
If their is still some time left you could have a look at the oggm inversion tutorial and the calibration of glen A explained in there.