Influence of ice flow parameters on glacier size#
In this tutorial we will explore the influence of the two main flow parameters: A
for ice deformation and fs
for sliding.
For this, we switch to OGGM-Edu. OGGM-Edu is the educational branch of OGGM and provides interactive materials for teachers. The materials consist of graphics, interactive applications and notebooks. Today, we will use the standalone python package oggm_edu
, which is a simplified version of OGGM:
from oggm_edu import GlacierBed, MassBalance, Glacier, GlacierCollection
Let’s create an idealized glacier. The oggm_edu
package provides very simple functions to create and manipulate idealized glaciers. For an overview of these functions, you can have a look at the oggm_edu intro notebook - but it is not necessary to understand all of them for our experiment today.
# Bed
bed = GlacierBed(top=3400, bottom=1500, width=300)
# Mass balance
mass_balance = MassBalance(ela=3000, gradient=4)
# Glacier
glacier = Glacier(bed=bed, mass_balance=mass_balance)
Glen’s creep parameter A#
We start by looking at the internal deformation of the ice, which results in creeping. To describe it we use Glens’s creep parameter.
Our glacier defaults to set Glen’s creep parameter to the “standard value” defined by Cuffey and Paterson, (2010): \(2.4\cdot 10^{-24}\).
We can check this by accessing the .creep
attribute.
In proper OGGM you will find the default under cfg.PARAMS['glen_a']
. Or the glacier-specific value after the calibration during inversion can be accessed with gdir.get_diagnostics()['inversion_glen_a']
.
glacier.creep
2.4e-24
The parameter relates shear stress to the rate of deformation (as we derived during the morning presentation) and is assumed to be constant. It depends on crystal size, fabric, concentration and type of impurities, as well as on ice temperature (Oerlemans, 2001) (you can find a more detailed description of it here).
Next, we will change the creep parameter and see what happens.
An easy way to do this is to create a GlacierCollection
and change the creep parameter for some of the glaciers in the collection.
Here we will also introduce the .fill()
method of the GlacierCollection
, which is useful to quickly create a collection with multiple glaciers.
collection = GlacierCollection()
# This fills the collection with 3 copies of the initial glacier.
# Note that .fill copy the initial glacier as well, hence it will
# remain unchanged.
collection.fill(glacier, n=3)
collection
Type | Age | Length [m] | Area [km2] | Volume [km3] | Max ice thickness [m] | Max ice velocity [m/yr] | AAR [%] | Response time [yrs] | Creep (Glen A) | Basal sliding | Bed type | Top [m] | Bottom [m] | Width(s) [m] | Length [km] | ELA [m] | Original ELA [m] | Temperature bias [C] | Gradient [mm/m/yr] | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Glacier | ||||||||||||||||||||
1 | Glacier | 0 | 0.0 | 0.0 | 0.0 | 0.0 | None | NaN | NaN | 2.4e-24 | 0 | Linear bed with a constant width | 3400 | 1500 | 300 | 20.0 | 3000 | 3000 | 0 | 4 |
2 | Glacier | 0 | 0.0 | 0.0 | 0.0 | 0.0 | None | NaN | NaN | 2.4e-24 | 0 | Linear bed with a constant width | 3400 | 1500 | 300 | 20.0 | 3000 | 3000 | 0 | 4 |
3 | Glacier | 0 | 0.0 | 0.0 | 0.0 | 0.0 | None | NaN | NaN | 2.4e-24 | 0 | Linear bed with a constant width | 3400 | 1500 | 300 | 20.0 | 3000 | 3000 | 0 | 4 |
We can then change the creep parameter of the glaciers within the collection
# Multiply and divide by 10.
# We pass partial expressions to change the initial value.
# Passing an empty string leaves the value un-affected
# Note that running this cell multiple times will continue to change
# the value.
collection.change_attributes({"creep": ["* 10", "", "/ 10"]})
Value interpreted as a creep factor.
Value interpreted as a creep factor.
Value interpreted as a creep factor.
And progress the glaciers within the collection to year 800:
collection.progress_to_year(800)
And plot the collection
collection.plot()
collection.plot_history()
Sliding parameter#
Basal sliding occurs when there is a water film between the ice and the ground. In his seminal paper, Hans Oerlemans uses a so-called “sliding parameter” representing basal sliding (called fs
during the morning presentation).
For our glacier, this parameter is available under the .basal_sliding
attribute.
In proper OGGM you will find the default under cfg.PARAMS['fs']
or the glacier specific one under gdir.get_diagnostics()['inversion_fs']
.
However, by default, it is set to 0, because of the difficulty to disentangle deformation and sliding.
But for our simplified experiment we will modify it:
# Sliding parameter
glacier.basal_sliding
0.0
# Create another collection
collection = GlacierCollection()
collection.fill(glacier, n=2)
Change the basal sliding parameter of one of the glaciers in the collection to \(5.7 \cdot 10^{-20}\) and progress the collection
# Here we demonstrate another way to change attributes of glaciers
# in the collection quickly.
# The dictionary can contain multiple key-value pairs.
collection.change_attributes({'basal_sliding':[0, 5.7e-20]})
collection.progress_to_year(800)
Take a look at the glaciers
collection.plot()
collection.plot_history()
Initially the glacier with higher basal sliding is advancing down the bed quicker compared to the glacier without basal sliding. However, at a certain point in time the larger volume of Glacier 0 lead to a stronger ice flow, and the glacier can extend further down.
If you further want to learn more about the processes of glacier flow, we recommend to go through these two pages:
In the documentation of OGGM you find also information about the theory of the ice flow parameters and the application. Or you go back to the morning presentation on oggm.org/training-lahore.
References#
¹ Cuffey, K., and W. S. B. Paterson (2010). The Physics of Glaciers, Butterworth‐Heinemann, Oxford, U.K.
² Oerlemans, J. (2001). Glaciers and climate change. CRC Press. (p. 59)
What’s next?#
The next tutorial is Surging Glacier experiments