Coupling the Cryosphere to other Earth systems, part I

From Interactive System for Ice sheet Simulation
Jump to: navigation, search

Back to Summer Modeling School

Contents

Coupling module included in Glimmer-CISM (GLINT)

One of the distinguishing features of Glimmer-CISM, compared with other ice sheet models, is that it was designed from the outset to be coupled to climate forcing. In part II, we'll look at how Glimmer-CISM is coupled to CCSM, but in this session we're going to use the module built into Glimmer, which is called GLINT[1]. The problem GLINT is designed to solve is coupling the ice sheet model, which is a regional model on a Cartesian grid, to climate forcing of some kind (climatology, reanalysis or a model), which is on a global latitude-longitude grid. GLINT includes code to manage the translation of quantities between the two grids, and handling the different timescales involved. The second part is important because the atmosphere and the ice sheet evolve on very different timescales.

In a moment, we'll look at how the coupling works, but first we'll start an example going, as it will take some time to run. To run the example, you'll need the standard Glimmer v.1.0.18 install (from Wednesday), and some input files, which you can get here.

Running GLINT

The example we're going to look at uses the NCEP-DOE reanalysis climatology[2]. We're going to force a model of the Greenland ice sheet model using this climatology for 400 years. Since the model will take about 40 minutes to run, let's get started immediately.

So, you should have the tarball (see above), and a glimmer-1.0.18 installation. If you don't, go back to this page for installation instructions. First, unpack the tarball, and descend into the directory:

tar xzvf Glint-example.tar.gz
cd glint-example

In this directory are some configuration and data files:

glint_example.config Configures the climate driver code: specifies the climate forcing files and parameters
gland20.config Configures the ice sheet model (GLIDE) and interface (GLINT). In addition to ice parameters, the mass-balance model is specified here.
gland20.input.nc Input data for GLIDE (on the local grid)
ncep-doe_6h_climate.64x32.nc Climate forcing data (on the global grid), 6-hourly
orog.igcmgrid.64x32.nc Global topography data

You can use ncview to take a look at these files as the model runs. The climate forcing file is large, and contains temperature and precipitation data at 6-hourly intervals. Assuming the bin directory of the Glimmer installation is in your PATH, you can run the example as follows:

glint_example

You'll be prompted to enter the names of the relevant configuration files. Do this as follows:

 Enter name of climate configuration file
glint_example.config
 Enter name of GLIDE configuration file to be read
gland20.config

At this point, the model will start, and lots of information will be written to the terminal, as well as to the file glide.log. At this point, have a look at the configuration files: by looking also at the Glimmer documentation, you can see what options are enabled, as well as what kind of output files you can expect.

Coding with GLINT

The forcing code for this example is contained in your glimmer-1.0.18 source folder, in src/fortran/glint_example.F90. If we look at that file, we can see how the coupling works. Because we expect to be initialising GLINT from within another, potentially complex code, such as a climate model, we want to initialise the interface based on the parameters which that code knows about. Consequently, the initialisation call to GLINT is more complex than that for GLIDE:

  call initialise_glint(ice_sheet,                         &
                        climate%clim_grid%lats,            &
                        climate%clim_grid%lons,            &
                        climate%climate_tstep,             &
                        (/commandline_configname/),        &
                        orog=orog_out,                     &
                        ice_frac=ice_frac,                 &
                        albedo=albedo,                     &
                        orog_longs=lons_orog,              &
                        orog_lats=lats_orog,               &
                        daysinyear=climate%days_in_year)

We can compare this call with the list of arguments to the subroutine, which we can see by looking at the appropriate source file (glint.F90):

  call initialise_glint(params, lats, longs, time_step, paramfile)

Note that only compulsory arguments are given here. Fortran 90/95 permits optional subroutine arguments, indicated in our original call by the use of argument labels (for example orog=orog_out). The meaning of the compulsory arguments is as follows:

params The instance of GLINT being initialised (this is of type glint_params).
lats List of latitudes of the global grid points (degrees)
longs List of longitudes of the global grid points (degrees)
time_step Size of forcing time-step (hours)
paramfile Name of parameter file

The other, optional, arguments can be used to tell GLINT other parameters pertaining to the climate forcing.

Having initialised GLINT, all we need to do is pass it climate forcing data every timestep (I've reformated the code for clarity):

     call glint(ice_sheet,             &
                time,                  &
                temp,                  &
                precip,                &
                orog,                  &
                orog_out=orog_out,     &
                albedo=albedo,         &
                output_flag=out,       &
                ice_frac=ice_frac,     &
                water_out=fw,          &
                water_in=fw_in,        &
                total_water_in=twin,   &
                total_water_out=twout, &
                ice_volume=ice_vol)

Again, we have some optional arguments, which in this case mostly give the names of arrays in which to return various output fields. The compulsory fields are as follows:

ice_sheet The glint_params type we're using
time The current time (hours)
temp The global instantaneous temperature field (degC)
precip The global precipitation field (mm/s)
orog The global topography (m)

That's the essence of how you use GLINT. Of course, at the end of the simulation, we call

  call end_glint(ice_sheet)

Looking at some output

When the model run completes, have a look at the output. There are actually three output files:

gland20.10a.nc Decadal snapshot of GLIDE variables
gland20.10a.glint.nc Decadal snapshot of GLINT variables
gland20.monthly.glint.nc Monthly snapshot of GLINT variables, for years 10-20

You'll see that GLIDE and GLINT variables reside in different files. This is because the two modules have information on different time-scales: GLIDE only knows mass-balance information for its own time-step (a year, for example), whereas GLINT calculates the mass-balance more frequently than that (every day, in this case). By having two files, we can have the opportunity to examine both sets of data.

If you look at the data, you'll see that Greenland expands considerably during the course of the run, and substantial ice builds up in areas which are presently unglaciated. You might like to think why this is, and how we could construct a reasonable experiment where this didn't happen. We're using a relatively simple mass-balance model (a daily positive-degree-day model, as described in the Glimmer paper), and we've not tuned the PDD factors in this model. We're also starting with an isothermal ice sheet: even though we have thermomechanical coupling enabled, the model has not been 'spun up', so the ice sheet we're starting with is not anything like a reasonable estimate of the present state of Greenland.

Then there's the climate forcing: reanalysis is an estimation of the past state of the atmosphere, made using a model, based on observations. Different reanalysis products have different strengths and weaknesses: see Griggs and Bamber (2008)[3] for an example comparison between datasets. One difficulty with reanalysis is that in the regions we're interested in, there is a sparsity of observational data. We can use models to fill in the gaps, but with fewer constraining observations, the results may be less realistic. As you can see, coupling to 'real' climate data has many challenges.

Footnotes and references

  1. GLINT stands for GLimmer INTerface.
  2. Kanamitsu M, W Ebisuzaki, J Woollen, S-K Yang, JJ Hnilo, M Fiorino, and GL Potter (2002) NCEP–DOE AMIP-II Reanalysis (R-2). Bulletin of the American Meteorological Society, 83(11), 1631-1643
  3. Griggs JA, and JL Bamber (2008) Assessment of Cloud Cover Characteristics in Satellite Datasets and Reanalysis Products for Greenland. Journal of Climate, 21(9), 1837-1849.