/ar5gmslr

Make projections of global-mean sea-level rise according to the methods of IPCC AR5 with subsequent alternatives

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

ar5gmslr

This repository provides a Python 3 module called ar5gmslr.py, containing a program to compute projections of annual-mean global-mean sea-level rise (GMSLR) for the ends of the calendar years 2006–2009 (or equivalently at the start of the years 2007–2100) with respect to the time-mean of 1996–2005, given annual global-mean projections of surface air temperature change (CMIP[56] variable tas) and thermosteric sea-level rise (CMIP[56] variable zostoga).

By default the program uses the methods of Fifth Assessment Report of the Intergovernmental Panel on Climate Change (AR5) Working Group I (detailed in the supplementary online material of chapter 13, Church et al., 2013). Given AR5 input, the program reproduces the AR5 mean and likely ranges to within 0.01 metres in all components and the total, which is the precision stated by the AR5 for these statistics.

The input should be supplied in netCDF files following the CF convention with file names and contents as specified in the inline documentation of the project function. The tas values should be time-means of calendar years 2006–2099, and zostoga should be values that apply at the year-ends. The program checks that the time-coordinates and time-bounds are as expected, and aborts if they do not conform. For each quantity the program requires input timeseries of either

  • the best estimate and uncertainty, which are assumed to be the mean and standard deviation of a normal distribution, as in AR5, or

  • each member of an ensemble. In this case, the sources of the ensemble members are assumed to correspond for the two quantities, and the members are sampled randomly with equal probability.

The program also contains optional alternative methods for projecting the contribution to GMSLR arising from changes in

  • Antarctic ice-sheet dynamics, according to the formula of Palmer et al. (2020), based on the results of Levermann et al. (2014), and also used by Hermans et al. (2021). This differs from the AR5 scheme in being scenario-dependent.

  • The combined mass of glaciers, ice caps and the Greenland ice-sheet, according to the AR5 formula, recalibrated either according to results of GlacierMIP (Hock et al., 2019) or GlacierMIP2 (Marzeion et al., 2020). The GlacierMIP* results are based on more and later versions of global glacier models than were available at the time of the AR5.

The program tabulates the results for the final year (2100 in this case) on stdout, in lines of the form "quantity mid [ lower to upper ]", where mid is the median value, and lower and upper the 5- and 95-percentiles of the distributions of each contribution to GMSLR, identified by quantity, and the total. (The AR5 interprets the 5-95% range of GMSLR model projections as the assessed "likely range".) The contributions are the same as in AR5 chapter 13, thus:

quantity description
temperature Surface temperature change tas from input
expansion Thermosteric SLR (thermal expansion) zostoga from input
glacier Glaciers, including those peripheral to the Greenland ice-sheet
greensmb Greenland ice-sheet surface mass balance, including the height-SMB feedback
antsmb Antarctic ice-sheet surface masss balance, including peripheral glaciers and the interaction between SMB change and outflow
greendyn Greenland ice-sheet rapid dynamics
antdyn Antarctic ice-sheet rapid dynamics
landwater Land water storage
GMSLR Global mean sea level rise
greennet Greenland ice sheet
antnet Antarctic ice sheet
sheetdyn Ice-sheet rapid dynamics

The contributions listed after GMSLR are sums of other contributions, and not separately included in the total (that would be double-counting) viz. greennet = greensmb + greendyn, antnet = antsmb + antdyn, and sheetdyn = greendyn + antdyn.

The program optionally generates CF-netCDF output files containing

  • annual timeseries of the median, 5- and 95-percentiles of each contribution and the total GMSLR.

  • annual timeseries of the Monte Carlo ensemble members (by default 450,000) of each contribution and the total, arranged in the same order for each.

See the definition of the project function for optional behaviours.

This repository also provides directories containing input timeseries in the form expected by the program:

The program uses the freely available cf-python package for input and output of netCDF files and for convenience in manipulating the data in memory. It requires cf-python version 3.14.0 (2023-01-31) or later, which uses dask.

To run the program for AR5 input using all defaults:

import ar5gmslr # includes 'import cf' for the cf-python package
ar5gmslr.project('ar5_input',output='ar5gmslr_ar5') # output is optional

This process takes about 2.5 minutes on a 3.4 GHz processor with 8 Gbyte RAM. The stdout is consistent (within 0.01 m) with Table 13.SM.1 of AR5 chapter 13. The output directory contains a list file with the same summary as stdout. If ensemble=True is specified, to produce CF-netCDF files of Monte Carlo ensemble members, the output directory requires 9.7 Gbyte. These files have not been included in this repository.

Hermans et al. (2021) produced two sets of projections from CMIP6 ensemble input, thus:

import ar5gmslr # includes 'import cf' for the cf-python package
# AR5 methods
ar5gmslr.project('cmip6_input',output='ar5gmslr_cmip6')
# AR5 methods except with Antarctic dynamical ice discharge based on Levermann et al. (2014)
ar5gmslr.project('cmip6_input',levermann=dict(ssp126='rcp26',ssp245='rcp45',ssp585='rcp85'),output='ar5gmslr_cmip6_levermann')

This repository contains the results for both cases (stdout and output directory for the AR5 methods, stdout and output directory for AR5 with Levermann). For the first case, the components and totals of GMSLR are are consistent with Table S5 in the supplementary online material of Hermans et al., and the totals of GMSLR are shown also in the first row of Table S4. The results provided in this repository for the case with Levermann are consistent with the totals shown in the second row of Table S4, but the paper does not include the results for components in that case.

Palmer et al. (2020) made projections to 2300 using tas and zostoga estimated for RCP scenarios beyond 2100 with the two-layer model by Palmer et al. (2018) following Geoffroy et al. (2013). In this application, the rates of GMSLR due to Greenland ice sheet surface mass balance greensmb, Greenland ice sheet dynamics greendyn and Antarctic ice-sheet dynamics antdyn are kept constant after 2100 (palmer=True). The projections were made thus:

import ar5gmslr # includes 'import cf' for the cf-python package
ar5gmslr.project('palmer20TLM_input',palmer=True,levermann=True,output='ar5gmslr_palmer20TLM')

This repository contains the stdout and output directory. The output directory occupies 18 Gbyte in this case if ensemble=True is specified. The components of GMSLR at 2300 differ by no more than 0.02 m from the results of Palmer et al. (2020) in the 5-percentile and the median and by 0.04 m in the 95-percentile, except for sheetdyn, which differs by up to 0.1 m in the 95-percentile.

The program was written by Jonathan Gregory for the works cited above, some parts being originally in IDL and later translated to Python.