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()
../_images/f56f0567198e7ec0c4c7accbe3745ea02bea7d70ff23ad159eb3db5465d0e646.png

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()
../_images/93c753842ae748141c1862446b5f25fa430760e650f483970af6e059b1f06a2d.png

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()
../_images/6de9ddbf9d33308aec5ac4f1aa569537e17166d4095cf7e92c9bb62b59f9ed9a.png

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()
../_images/7fcc7ca3abf2fb8e21fd2e18da3e542b696211e8893ad27eb262f9e7618328b2.png
collection.plot()
../_images/7f284e80fafbac38cdcd18dac2e42bd8510bb62fe6cd9f519e7a7ebcd968304b.png
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

Compare the different glacier types. Can you explain the differences?

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()
../_images/fbfa7cc2eae0475cddc52202a2de025f454fd6a01254a918067021c9912aaf8d.png
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.