MATLAB Examples

Rignot2013Ice

In 2013 Rignot et al. published a nice summary of annual mass flux across the grounding lines of major Antarctic glaciers. The paper is tiltled Ice-Shelf Melting Around Antarctica and was published in Science magazine. In this example, we combine Bedmap2 ice thickness with MEaSUREs surface velocity data to estimate annual mass flux across the grounding line of Thwaites Glacier, West Antarctica.

Contents

Requirements

This example requires

Load grounding line data

To calculate mass flux across a grounding line, we first define a grounding line. The Antarctic Mapping Tools package has several grounding-line-related plugins, but here we use the simple low-resolution grounding line inferred from the Bedmap2 data set. Assuming you've installed the Bedmap2 Toolbox, load grounding line data:

load bedmap2gl

Clip grounding line to region of interest

For this calculation we need to clip the grounding line to the lateral bounds of Thwaites Glacier. Notably, Thwaites is known for is lack of clearly-defined lateral boundaries, but we can move forward with some approximate lateral bounds. I plotted surface velocity with measures and used inputm to estimate the edges of Thwaites grounding line as 108.5°W to 104.5°W. In the Bedmap2 grounding line data, gllat{1} and gllon{1} indicate the perimeter of the main grounded part of Antarctica. Now let's clip the grounding line lat/lon data to our region of interest:

gllat = flipud(gllat{1});
gllon = flipud(gllon{1});
gllat = gllat(gllon>-108.5&gllon<-104.5);
gllon = gllon(gllon>-108.5&gllon<-104.5);

For context, we can plot this grounding line on a modismoa image with velocity vectors overlaid. We use freezeColors because we're overlaying a speed colormap on a modismoa grayscale colormap:

figure
modismoa('thwaites glacier',150)
plotm(gllat,gllon,'g','linewidth',2)
freezeColors;
measures('speed','thwaites glacier','mapwidth',150,...
    'colorbar','off','facealpha',.2)
measures('vel','thwaites glacier','color','k',...
    'mapwidth',150,'inset','northeast','units','m/a',...
    'arrowdensity',5)

textm(gllat(1),gllon(1),'start','color','g',...
    'fontweight','bold','backgroundcolor','w')
textm(gllat(end),gllon(end),'end','color','r',...
    'fontweight','bold','backgroundcolor','w')

If we think of the grounding line as a path along which you might walk, the only component of ice flow that contributes to continental mass loss is the cross-path component. To estimate mass loss, we interpolate the cross-track component of ice velocity along the entire path of the grounding line, then multiply velocity by thickness for each unit length along the grounding line.

First we define x as the distance you'd walk along the grounding line and dx is the approximate distance between points along the grounding line. Here we use the pathdist function to calculate the distance traveled along the grounding line.

% Distance along grounding line:
x = pathdist(gllat,gllon);

% Distance between each grounding line data point:
dx = [0;diff(x)];

Use the measures_interp function to get the cross-track velocity along the grounding line:

crossTrackVelocity = measures_interp('cross',gllat,gllon);

To estimate volume flux, we'll need to multiply crossTrackVelocity by ice thickness, so use bedmap2_interp to get ice thickness along the grounding line. We'll also set thickness to zero wherever interpolation returns undefined data:

thickness = bedmap2_interp(gllat,gllon,'thickness');
thickness(isnan(thickness))=0; % zero thickness where undefined

flowAcrossGL = crossTrackVelocity.*thickness;

Plot flow across the grounding line as a function of distance along the grounding line:

figure
plot(x/1000,flowAcrossGL)
xlabel('distance along grounding line (km)')
ylabel('flow across gl (m^3/yr per meter along grounding line)')
box off; axis tight;

You'll notice in the plot above that some flow seems to be negative. How can this be? In some places, a parcel of ice may pass over a sinuous grounding line not once, but three times. Where ice appears to flow upstream, it's actually just regrounding itself temporarily.

We can easily distill all this rich information down to a single value of mass loss if we ignore firn density and say that everything flowing across the grounding line is pure ice. massBalanceGT is taken as the negative to indicate mass loss and multiplied by 1e-12 to convert from kg to GT.

totalVolFlow = sum(flowAcrossGL.*dx);
iceDensity = 917; % kg/m3

massBalanceGT = totalVolFlow*iceDensity*1e-12
massBalanceGT =

  114.5571

This value is in close agreement with 113.5 GT/yr found by Rignot et al., 2013.

Author Info

Chad Greene wrote this example script. Chad claims absolutely no credit for the underlying data.