Group project¶

by Debashish Bhowmick, Thomas Fiebig and Florian Zellmer

Instructions¶

Objectives

In this final project, you should pick two glacierized basins and analyse the projected future of glaciers for different climate scenarios, and compare them to each other. For this you should use tools and knowledge you gained during the practical sessions in the last weeks.

Deadline

Please submit your project via OLAT before Monday June 17 at 00H (in the night from Monday to Tuesday).

Formal requirements

You will work in groups of two. If we are an odd number of students, one group can have three participants. (Tip: I recommend that students who have not followed a programming class to team up with students who have).

Each group will submit one (executed) jupyter notebook containing the code, plots, and answers to the questions (text in the markdown format) on OLAT. Please also submit an HTML version of the notebook. Please ensure that your HTML file is smaller than 10 MB. This helps us provide you with more detailed and readable feedback.

Each group member must contribute to the notebook. The notebook should be self-contained and the answers must be well structured. The plots must be as understandable as possible (title, units, x and y axis labels, appropriate colors…).

Please be concise in your answer. We expect a few sentences per answer at most - there is no need to write a new text book in this project! Use links and references to the literature or your class slides where appropriate.

Grading

We will give one grade per project, according to the following table (total 10 points):

  • correctness of the code and the plots: content, legends, colors, units, etc. (3 points)
  • quality of the answers: correctness, preciseness, appropriate use of links and references to literature or external resources (5 points)
  • contextualise your findings with literature (2 points)
In [1]:
# Imports
import os
import urllib.request

import xarray as xr
import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

International Network for Alpine Research Catchment Hydrology INARCH¶

We aim, with this group project, to contribute to the INARCH initiative. The goal of INARCH is to better understand hydrological processes in alpine cold regions, improve their prediction, diagnose their sensitivity to global change, and develop consistent measurement strategies. You can find more information on the INARCH website.

In this project, our focus will be on glacier projections from OGGM in glacierized basins of INARCH. You are expected to analyze how glaciers are evolving and how their contribution to total runoff is changing. The final outcome will be a dataset of OGGM projections for all CMIP5 and CMIP6 scenarios (which I have prepared), along with a first analysis of this dataset, this is the core of your work in the group project.

For your individual group analysis, you should compare two basins. As a whole class, we aim to ensure that each basin is covered by at least one group. The selection of basins is up to each group and should be done using the link to the spreadsheet shared in the presentation (first come, first served).

In your analysis, make sure to incorporate the background knowledge about how OGGM is working and how the data was generated, as we discussed during the practical sessions.

Selecting Temperature Scenarios for Analysis¶

To analyze how glaciers are evolving, we will group the projections by temperature warming levels, as done in a previous session. For this, you will again need the table containing the actual warming levels for each climate model realization. You can download it here and save it at the same location as this notebook.

Below is the code used to select the model realizations based on temperature targets. Our analysis focuses on three temperature goals: 1.5°C, 2.7°C, and 4.0°C, each with a tolerance of ±0.2°C.

In [2]:
# reading the csv file
df_warming_levels = pd.read_csv('cmip5_and_cmip6_warming_compared_to_preindustrial.csv', index_col=0)

# the function takes a target temperature and a range, e.g. 2.7+/-0.2°C
def get_models_from_temp(temp, temp_range):
    pi_l = temp - temp_range  # our lower temperature limit
    pi_u = temp + temp_range  # our higher temperature limit

    # select only those which are inside of our temperature limit
    pd_cmip_sel = df_warming_levels.loc[
        # select all which have a larger temperature as our lower limit AND
        (df_warming_levels['global_temp_ch_2071-2100_preindustrial']>=pi_l) &
        # those having a smaller temperature as our higher limit
        (df_warming_levels['global_temp_ch_2071-2100_preindustrial']<=pi_u)
    ]
    return pd_cmip_sel

# define the models for each temperature goal in a dictionary
temp_scenarios = {
    '4°C': get_models_from_temp(4, 0.2),
    '2.7°C': get_models_from_temp(2.7, 0.2),
    '1.5°C': get_models_from_temp(1.5, 0.2),
}
Task: For each temperature target (1.5°C, 2.7°C, and 4.0°C), evaluate the selection of climate model realizations by calculating the mean, median, and number of realizations included in each group. Briefly discuss your findings.
In [3]:
# statistics for each scenario
stats = {
    scenario: {
        'mean': df['global_temp_ch_2071-2100_preindustrial'].mean(),
        'median': df['global_temp_ch_2071-2100_preindustrial'].median(),
        'count': df['global_temp_ch_2071-2100_preindustrial'].count()
    }
    for scenario, df in temp_scenarios.items()
}

stats_df = pd.DataFrame(stats).T

# round mean and median to two decimals, count to 0
stats_df['mean'] = stats_df['mean'].round(2)
stats_df['median'] = stats_df['median'].round(2)
stats_df['count'] = stats_df['count'].round(0).astype(int)

print(stats_df)
       mean  median  count
4°C    4.06    4.08      9
2.7°C  2.71    2.72     14
1.5°C  1.56    1.58     11

Discussion

  1. Number of models: Shows that the number of climate model simulations available in each scenario differs. The 2.7°C scenario has the most models, which might offer better statistical reliability while the 4°C scenario is supported by the fewest.
  2. Mean vs. Median: Across all scenarios the mean and median are very close. This indicates that the distributions of projected warming values are likely symmetrical or at least not heavily skewed and that there are no major outliers that drastically pull the mean away from the median --> confidence that the models are producing fairly consistent results.
  3. Alignment with scenario labels: The actual mean and median values slightly exceed the label temperatures. This is expected because the models were selected within a ±0.2°C range, and natural variation within that window can cause small offsets.
  4. Regional anomalies: temperature levels will not rise the same around the globe, for our two basins that lie in high elevation mountainous terrain the future temperature is expected to exceed the global mean projection.

Getting the Data for Your Basins¶

To begin your analysis, you need to load the glacier and runoff projection data for your assigned basins. Make sure you know which basins your group is working on (as selected in the shared spreadsheet). The data for each basin is stored in individual files, which you can load using the provided code template. You can choose where to store the data locally by setting the variable local_data_dir. By default, this will create a new folder called glacier_projection_data in the same location as your notebook.

In [4]:
# add here your the basin_id of your selected basins (e.g. ['basin_1', 'basin_2'])
basin_ids = ['djankuat', 'rofental']

# you can select here a location on your computer to store the glacier data
local_data_dir = 'glacier_projection_data'

# create the directory, if it does not exist
os.makedirs(local_data_dir, exist_ok=True)

# the url where all the data is stored
base_url = 'https://cluster.klima.uni-bremen.de/~pschmitt/teaching/cryo_in_climate/INARCH/data/'

# in this structure we will save the opened data
ds_all = {}

# Code for downloading the data, if data already downloaded this will be skipped
for basin in basin_ids:

    # create a directory for each basin
    basin_url = os.path.join(base_url, basin, '2100')
    local_basin_dir = os.path.join(local_data_dir, basin)
    os.makedirs(local_basin_dir, exist_ok=True)
    
    ds_all[basin] = {}
    for temp_level in temp_scenarios:
        ds_tmp_all = []
        for i, realization in temp_scenarios[temp_level].iterrows():
            # depending on the CMIP, different names for scenarios
            scenario_column = 'ssp' if realization['cmip'] == 'CMIP6' else 'rcp'
            filename = f"basin_{basin}_run_hydro_w5e5_gcm_merged_bc_2000_2019_{realization['gcm']}_{realization[scenario_column]}.nc"

            # only download if file not already downloaded
            if os.path.isfile(os.path.join(local_basin_dir, filename)):
                print(f"File already downloaded: {filename}")
            else:
                print(f"Downloading {filename}")
                urllib.request.urlretrieve(
                    os.path.join(basin_url, filename),
                    os.path.join(local_basin_dir, filename))

            # open individual dataset and combine gcma and scenaio in new variable
            with xr.open_dataset(os.path.join(local_basin_dir, filename)) as ds:
                ds_stacked = ds.stack(gcm_scenario=("gcm", "scenario"))
                ds_tmp_all.append(ds_stacked)            

        print(f'{basin}: combining data for {temp_level}')
        ds_all[basin][temp_level] = xr.combine_by_coords(ds_tmp_all, fill_value=np.nan)
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CCSM4_rcp85.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_MPI-ESM-LR_rcp85.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CNRM-CM5_rcp85.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_NorESM2-MM_ssp585.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_BCC-CSM2-MR_ssp585.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_FGOALS-f3-L_ssp585.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CESM2-WACCM_ssp370.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CESM2_ssp370.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_EC-Earth3-Veg_ssp370.nc
djankuat: combining data for 4°C
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CNRM-CM5_rcp45.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CSIRO-Mk3-6-0_rcp45.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_IPSL-CM5A-LR_rcp45.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CCSM4_rcp60.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-CM3_rcp26.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_ACCESS-CM2_ssp126.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CanESM5_ssp126.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CAMS-CSM1-0_ssp370.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CESM2-WACCM_ssp534-over.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_IPSL-CM6A-LR_ssp534-over.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_MRI-ESM2-0_ssp245.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_BCC-CSM2-MR_ssp245.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_FGOALS-f3-L_ssp245.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_MRI-ESM2-0_ssp434.nc
djankuat: combining data for 2.7°C
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-ESM2G_rcp45.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_NorESM1-M_rcp26.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_MPI-ESM-LR_rcp26.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CCSM4_rcp26.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_MPI-ESM1-2-HR_ssp126.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-ESM4_ssp126.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_INM-CM4-8_ssp126.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_INM-CM5-0_ssp126.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_CAMS-CSM1-0_ssp126.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-ESM4_ssp119.nc
File already downloaded: basin_djankuat_run_hydro_w5e5_gcm_merged_bc_2000_2019_MRI-ESM2-0_ssp119.nc
djankuat: combining data for 1.5°C
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CCSM4_rcp85.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_MPI-ESM-LR_rcp85.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CNRM-CM5_rcp85.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_NorESM2-MM_ssp585.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_BCC-CSM2-MR_ssp585.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_FGOALS-f3-L_ssp585.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CESM2-WACCM_ssp370.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CESM2_ssp370.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_EC-Earth3-Veg_ssp370.nc
rofental: combining data for 4°C
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CNRM-CM5_rcp45.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CSIRO-Mk3-6-0_rcp45.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_IPSL-CM5A-LR_rcp45.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CCSM4_rcp60.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-CM3_rcp26.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_ACCESS-CM2_ssp126.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CanESM5_ssp126.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CAMS-CSM1-0_ssp370.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CESM2-WACCM_ssp534-over.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_IPSL-CM6A-LR_ssp534-over.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_MRI-ESM2-0_ssp245.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_BCC-CSM2-MR_ssp245.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_FGOALS-f3-L_ssp245.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_MRI-ESM2-0_ssp434.nc
rofental: combining data for 2.7°C
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-ESM2G_rcp45.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_NorESM1-M_rcp26.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_MPI-ESM-LR_rcp26.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CCSM4_rcp26.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_MPI-ESM1-2-HR_ssp126.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-ESM4_ssp126.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_INM-CM4-8_ssp126.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_INM-CM5-0_ssp126.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_CAMS-CSM1-0_ssp126.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_GFDL-ESM4_ssp119.nc
File already downloaded: basin_rofental_run_hydro_w5e5_gcm_merged_bc_2000_2019_MRI-ESM2-0_ssp119.nc
rofental: combining data for 1.5°C

After downloading and processing the data, everything will be stored in the variable ds_all. You can access the data for a specific basin and temperature level using the syntax ds_all[basin_name][temperature_level]. Below you can find one example:

In [5]:
ds_all[basin_ids[0]]['1.5°C']
Out[5]:
<xarray.Dataset> Size: 2MB
Dimensions:                       (time: 101, rgi_id: 6, gcm_scenario: 11,
                                   month_2d: 12)
Coordinates:
  * time                          (time) float64 808B 2e+03 ... 2.1e+03
  * rgi_id                        (rgi_id) <U14 336B 'RGI60-12.00126' ... 'RG...
    hydro_year                    (time) int64 808B 2000 2001 2002 ... 2099 2100
    hydro_month                   (time) int64 808B 4 4 4 4 4 4 ... 4 4 4 4 4 4
    calendar_year                 (time) int64 808B 2000 2001 2002 ... 2099 2100
    calendar_month                (time) int64 808B 1 1 1 1 1 1 ... 1 1 1 1 1 1
  * month_2d                      (month_2d) int64 96B 1 2 3 4 5 ... 9 10 11 12
    calendar_month_2d             (month_2d) int64 96B 1 2 3 4 5 ... 9 10 11 12
  * gcm_scenario                  (gcm_scenario) object 88B MultiIndex
  * gcm                           (gcm_scenario) <U13 572B 'CAMS-CSM1-0' ... ...
  * scenario                      (gcm_scenario) <U6 264B 'ssp126' ... 'rcp26'
Data variables: (12/14)
    volume                        (time, rgi_id, gcm_scenario) float32 27kB 2...
    area                          (time, rgi_id, gcm_scenario) float32 27kB 1...
    on_area                       (time, rgi_id, gcm_scenario) float32 27kB 1...
    off_area                      (time, rgi_id, gcm_scenario) float32 27kB 3...
    melt_off_glacier              (time, rgi_id, gcm_scenario) float32 27kB 6...
    melt_on_glacier               (time, rgi_id, gcm_scenario) float32 27kB 3...
    ...                            ...
    melt_off_glacier_monthly      (time, month_2d, rgi_id, gcm_scenario) float32 320kB ...
    melt_on_glacier_monthly       (time, month_2d, rgi_id, gcm_scenario) float32 320kB ...
    liq_prcp_off_glacier_monthly  (time, month_2d, rgi_id, gcm_scenario) float32 320kB ...
    liq_prcp_on_glacier_monthly   (time, month_2d, rgi_id, gcm_scenario) float32 320kB ...
    runoff_monthly                (time, month_2d, rgi_id, gcm_scenario) float32 320kB ...
    runoff                        (time, rgi_id, gcm_scenario) float32 27kB 4...
Attributes:
    description:            OGGM model output
    oggm_version:           1.6.1.dev26+gf8a1745
    calendar:               365-day no leap
    creation_date:          2025-05-07 20:14:15
    bias_correction:        bc_2000_2019
    basin_name:             Djankuat
    basin_area_km2:         12.448876467563624
    glaciers_in_basin:      6
    glacierised_area_perc:  22.556252424196114
    glacierised_area_km2:   2.808
xarray.Dataset
    • time: 101
    • rgi_id: 6
    • gcm_scenario: 11
    • month_2d: 12
    • time
      (time)
      float64
      2e+03 2.001e+03 ... 2.1e+03
      description :
      Floating year
      array([2000., 2001., 2002., 2003., 2004., 2005., 2006., 2007., 2008., 2009.,
             2010., 2011., 2012., 2013., 2014., 2015., 2016., 2017., 2018., 2019.,
             2020., 2021., 2022., 2023., 2024., 2025., 2026., 2027., 2028., 2029.,
             2030., 2031., 2032., 2033., 2034., 2035., 2036., 2037., 2038., 2039.,
             2040., 2041., 2042., 2043., 2044., 2045., 2046., 2047., 2048., 2049.,
             2050., 2051., 2052., 2053., 2054., 2055., 2056., 2057., 2058., 2059.,
             2060., 2061., 2062., 2063., 2064., 2065., 2066., 2067., 2068., 2069.,
             2070., 2071., 2072., 2073., 2074., 2075., 2076., 2077., 2078., 2079.,
             2080., 2081., 2082., 2083., 2084., 2085., 2086., 2087., 2088., 2089.,
             2090., 2091., 2092., 2093., 2094., 2095., 2096., 2097., 2098., 2099.,
             2100.])
    • rgi_id
      (rgi_id)
      <U14
      'RGI60-12.00126' ... 'RGI60-12.0...
      description :
      RGI glacier identifier
      array(['RGI60-12.00126', 'RGI60-12.00335', 'RGI60-12.00632', 'RGI60-12.00972',
             'RGI60-12.01074', 'RGI60-12.01132'], dtype='<U14')
    • hydro_year
      (time)
      int64
      2000 2001 2002 ... 2098 2099 2100
      description :
      Hydrological year
      array([2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
             2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
             2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032,
             2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043,
             2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054,
             2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065,
             2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076,
             2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
             2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098,
             2099, 2100])
    • hydro_month
      (time)
      int64
      4 4 4 4 4 4 4 4 ... 4 4 4 4 4 4 4 4
      description :
      Hydrological month
      array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
    • calendar_year
      (time)
      int64
      2000 2001 2002 ... 2098 2099 2100
      description :
      Calendar year
      array([2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
             2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
             2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032,
             2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043,
             2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054,
             2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065,
             2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076,
             2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
             2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098,
             2099, 2100])
    • calendar_month
      (time)
      int64
      1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
      description :
      Calendar month
      array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
    • month_2d
      (month_2d)
      int64
      1 2 3 4 5 6 7 8 9 10 11 12
      array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
    • calendar_month_2d
      (month_2d)
      int64
      1 2 3 4 5 6 7 8 9 10 11 12
      array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
    • gcm_scenario
      (gcm_scenario)
      object
      MultiIndex
      array([('CAMS-CSM1-0', 'ssp126'), ('CCSM4', 'rcp26'), ('GFDL-ESM2G', 'rcp45'),
             ('GFDL-ESM4', 'ssp119'), ('GFDL-ESM4', 'ssp126'),
             ('INM-CM4-8', 'ssp126'), ('INM-CM5-0', 'ssp126'),
             ('MPI-ESM-LR', 'rcp26'), ('MPI-ESM1-2-HR', 'ssp126'),
             ('MRI-ESM2-0', 'ssp119'), ('NorESM1-M', 'rcp26')], dtype=object)
    • gcm
      (gcm_scenario)
      <U13
      'CAMS-CSM1-0' ... 'NorESM1-M'
      description :
      used global circulation model
      array(['CAMS-CSM1-0', 'CCSM4', 'GFDL-ESM2G', 'GFDL-ESM4', 'GFDL-ESM4',
             'INM-CM4-8', 'INM-CM5-0', 'MPI-ESM-LR', 'MPI-ESM1-2-HR', 'MRI-ESM2-0',
             'NorESM1-M'], dtype='<U13')
    • scenario
      (gcm_scenario)
      <U6
      'ssp126' 'rcp26' ... 'rcp26'
      description :
      used scenario
      array(['ssp126', 'rcp26', 'rcp45', 'ssp119', 'ssp126', 'ssp126', 'ssp126',
             'rcp26', 'ssp126', 'ssp119', 'rcp26'], dtype='<U6')
    • volume
      (time, rgi_id, gcm_scenario)
      float32
      2.411e+06 2.411e+06 ... 2.593e+06
      description :
      Total glacier volume
      unit :
      m 3
      array([[[2.4107968e+06, 2.4107968e+06, 2.4107968e+06, ...,
               2.4107968e+06, 2.4107968e+06, 2.4107968e+06],
              [1.1588837e+07, 1.1588837e+07, 1.1588837e+07, ...,
               1.1588837e+07, 1.1588837e+07, 1.1588837e+07],
              [7.3209320e+06, 7.3209320e+06, 7.3209320e+06, ...,
               7.3209320e+06, 7.3209320e+06, 7.3209320e+06],
              [2.7843610e+06, 2.7843610e+06, 2.7843610e+06, ...,
               2.7843610e+06, 2.7843610e+06, 2.7843610e+06],
              [1.7220091e+06, 1.7220091e+06, 1.7220091e+06, ...,
               1.7220091e+06, 1.7220091e+06, 1.7220091e+06],
              [7.3081232e+07, 7.3081232e+07, 7.3081232e+07, ...,
               7.3081232e+07, 7.3081232e+07, 7.3081232e+07]],
      
             [[2.2946365e+06, 2.2946365e+06, 2.2946365e+06, ...,
               2.2946365e+06, 2.2946365e+06, 2.2946365e+06],
              [1.1201115e+07, 1.1201115e+07, 1.1201115e+07, ...,
               1.1201115e+07, 1.1201115e+07, 1.1201115e+07],
              [6.9795950e+06, 6.9795950e+06, 6.9795950e+06, ...,
               6.9795950e+06, 6.9795950e+06, 6.9795950e+06],
              [2.6875810e+06, 2.6875810e+06, 2.6875810e+06, ...,
      ...
               4.0452542e+03, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 2.5426155e+03, 0.0000000e+00, ...,
               4.6441216e+03, 0.0000000e+00, 0.0000000e+00],
              [6.3111706e+05, 2.0553544e+06, 0.0000000e+00, ...,
               5.0272903e+05, 0.0000000e+00, 0.0000000e+00],
              [9.0724010e+06, 1.6884026e+07, 1.3888105e+06, ...,
               8.5280500e+06, 3.3207040e+06, 2.5298810e+06]],
      
             [[5.5943598e+04, 2.7093844e+05, 0.0000000e+00, ...,
               1.4297119e+04, 6.9671812e+03, 0.0000000e+00],
              [3.0617512e+05, 8.5792831e+05, 0.0000000e+00, ...,
               4.4433641e+04, 3.9922984e+04, 2.5660925e+02],
              [2.4743262e+03, 1.4746251e+02, 0.0000000e+00, ...,
               5.4655200e+02, 1.8976830e+03, 0.0000000e+00],
              [5.7434785e+03, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 2.9785223e+02, 0.0000000e+00],
              [6.7997606e+05, 2.0066739e+06, 0.0000000e+00, ...,
               4.8857688e+05, 1.2353470e+04, 0.0000000e+00],
              [9.4994450e+06, 1.6666679e+07, 1.3528531e+06, ...,
               8.5909410e+06, 3.5637592e+06, 2.5932850e+06]]], dtype=float32)
    • area
      (time, rgi_id, gcm_scenario)
      float32
      1.232e+05 1.232e+05 ... 1.754e+05
      description :
      Total glacier area
      unit :
      m 2
      array([[[1.23196617e+05, 1.23196617e+05, 1.23196617e+05, ...,
               1.23196617e+05, 1.23196617e+05, 1.23196617e+05],
              [4.27459594e+05, 4.27459594e+05, 4.27459594e+05, ...,
               4.27459594e+05, 4.27459594e+05, 4.27459594e+05],
              [3.13713312e+05, 3.13713312e+05, 3.13713312e+05, ...,
               3.13713312e+05, 3.13713312e+05, 3.13713312e+05],
              [1.46774156e+05, 1.46774156e+05, 1.46774156e+05, ...,
               1.46774156e+05, 1.46774156e+05, 1.46774156e+05],
              [2.10637250e+05, 2.10637250e+05, 2.10637250e+05, ...,
               2.10637250e+05, 2.10637250e+05, 2.10637250e+05],
              [1.77060000e+06, 1.77060000e+06, 1.77060000e+06, ...,
               1.77060000e+06, 1.77060000e+06, 1.77060000e+06]],
      
             [[1.22688852e+05, 1.22688852e+05, 1.22688852e+05, ...,
               1.22688852e+05, 1.22688852e+05, 1.22688852e+05],
              [4.29126719e+05, 4.29126719e+05, 4.29126719e+05, ...,
               4.29126719e+05, 4.29126719e+05, 4.29126719e+05],
              [3.12389844e+05, 3.12389844e+05, 3.12389844e+05, ...,
               3.12389844e+05, 3.12389844e+05, 3.12389844e+05],
              [1.37937344e+05, 1.37937344e+05, 1.37937344e+05, ...,
      ...
               2.06896426e+04, 0.00000000e+00, 0.00000000e+00],
              [0.00000000e+00, 2.58327734e+04, 0.00000000e+00, ...,
               5.30698477e+04, 0.00000000e+00, 0.00000000e+00],
              [5.28815078e+04, 1.71248922e+05, 0.00000000e+00, ...,
               1.52623250e+05, 0.00000000e+00, 0.00000000e+00],
              [4.91078906e+05, 6.51074688e+05, 1.22671547e+05, ...,
               5.63412688e+05, 1.77547484e+05, 1.75035094e+05]],
      
             [[3.98980352e+04, 2.48620957e+04, 0.00000000e+00, ...,
               2.22415977e+04, 2.21393965e+04, 0.00000000e+00],
              [1.57950734e+05, 8.17141953e+04, 0.00000000e+00, ...,
               7.81399609e+04, 1.06982828e+05, 7.90002246e+03],
              [2.06378965e+04, 5.05839020e+02, 0.00000000e+00, ...,
               4.34778906e+03, 1.06210752e+04, 0.00000000e+00],
              [5.30773047e+04, 0.00000000e+00, 0.00000000e+00, ...,
               0.00000000e+00, 5.97082471e+03, 0.00000000e+00],
              [8.09863594e+04, 7.86617656e+04, 0.00000000e+00, ...,
               5.77911797e+04, 4.24821211e+04, 0.00000000e+00],
              [4.92289938e+05, 6.50339625e+05, 1.22552297e+05, ...,
               4.90329625e+05, 3.43357969e+05, 1.75378406e+05]]], dtype=float32)
    • on_area
      (time, rgi_id, gcm_scenario)
      float32
      1.232e+05 1.232e+05 ... nan nan
      description :
      On-glacier area
      unit :
      m 2
      array([[[ 123196.62  ,  123196.62  ,  123196.62  , ...,  123196.62  ,
                123196.62  ,  123196.62  ],
              [ 427459.6   ,  427459.6   ,  427459.6   , ...,  427459.6   ,
                427459.6   ,  427459.6   ],
              [ 313713.3   ,  313713.3   ,  313713.3   , ...,  313713.3   ,
                313713.3   ,  313713.3   ],
              [ 146774.16  ,  146774.16  ,  146774.16  , ...,  146774.16  ,
                146774.16  ,  146774.16  ],
              [ 210637.25  ,  210637.25  ,  210637.25  , ...,  210637.25  ,
                210637.25  ,  210637.25  ],
              [1770600.    , 1770600.    , 1770600.    , ..., 1770600.    ,
               1770600.    , 1770600.    ]],
      
             [[ 122688.85  ,  122688.85  ,  122688.85  , ...,  122688.85  ,
                122688.85  ,  122688.85  ],
              [ 429126.72  ,  429126.72  ,  429126.72  , ...,  429126.72  ,
                429126.72  ,  429126.72  ],
              [ 312389.84  ,  312389.84  ,  312389.84  , ...,  312389.84  ,
                312389.84  ,  312389.84  ],
              [ 137937.34  ,  137937.34  ,  137937.34  , ...,  137937.34  ,
      ...
                     0.    ,       0.    ],
              [      0.    ,   25832.773 ,       0.    , ...,   53069.848 ,
                     0.    ,       0.    ],
              [  52881.508 ,  171248.92  ,       0.    , ...,  152623.25  ,
                     0.    ,       0.    ],
              [ 491078.9   ,  651074.7   ,  122671.55  , ...,  563412.7   ,
                177547.48  ,  175035.1   ]],
      
             [[         nan,          nan,          nan, ...,          nan,
                        nan,          nan],
              [         nan,          nan,          nan, ...,          nan,
                        nan,          nan],
              [         nan,          nan,          nan, ...,          nan,
                        nan,          nan],
              [         nan,          nan,          nan, ...,          nan,
                        nan,          nan],
              [         nan,          nan,          nan, ...,          nan,
                        nan,          nan],
              [         nan,          nan,          nan, ...,          nan,
                        nan,          nan]]], dtype=float32)
    • off_area
      (time, rgi_id, gcm_scenario)
      float32
      3.915e-10 3.915e-10 ... nan nan
      description :
      Off-glacier area
      unit :
      m 2
      array([[[3.91537469e-10, 3.91537469e-10, 3.91537469e-10, ...,
               3.91537469e-10, 3.91537469e-10, 3.91537469e-10],
              [9.96806193e-10, 9.96806193e-10, 9.96806193e-10, ...,
               9.96806193e-10, 9.96806193e-10, 9.96806193e-10],
              [5.38420863e-10, 5.38420863e-10, 5.38420863e-10, ...,
               5.38420863e-10, 5.38420863e-10, 5.38420863e-10],
              [7.79436959e-10, 7.79436959e-10, 7.79436959e-10, ...,
               7.79436959e-10, 7.79436959e-10, 7.79436959e-10],
              [3.11229087e-09, 3.11229087e-09, 3.11229087e-09, ...,
               3.11229087e-09, 3.11229087e-09, 3.11229087e-09],
              [1.95950633e-09, 1.95950633e-09, 1.95950633e-09, ...,
               1.95950633e-09, 1.95950633e-09, 1.95950633e-09]],
      
             [[1.15032568e+03, 1.15032568e+03, 1.15032568e+03, ...,
               1.15032568e+03, 1.15032568e+03, 1.15032568e+03],
              [2.01439209e+03, 2.01439209e+03, 2.01439209e+03, ...,
               2.01439209e+03, 2.01439209e+03, 2.01439209e+03],
              [1.39572217e+03, 1.39572217e+03, 1.39572217e+03, ...,
               1.39572217e+03, 1.39572217e+03, 1.39572217e+03],
              [8.83681250e+03, 8.83681250e+03, 8.83681250e+03, ...,
      ...
               2.93023656e+05, 3.13713312e+05, 3.13713312e+05],
              [1.46774156e+05, 1.20941375e+05, 1.46774156e+05, ...,
               9.37043047e+04, 1.46774156e+05, 1.46774156e+05],
              [1.57755750e+05, 5.00061523e+04, 2.10637250e+05, ...,
               5.80140078e+04, 2.10637250e+05, 2.10637250e+05],
              [1.27952112e+06, 1.11952525e+06, 1.64792850e+06, ...,
               1.20718725e+06, 1.59305250e+06, 1.59556488e+06]],
      
             [[           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan]]], dtype=float32)
    • melt_off_glacier
      (time, rgi_id, gcm_scenario)
      float32
      6.197e-07 6.197e-07 ... nan nan
      description :
      Off-glacier melt
      unit :
      kg yr-1
      array([[[6.1968723e-07, 6.1968723e-07, 6.1968723e-07, ...,
               6.1968723e-07, 6.1968723e-07, 6.1968723e-07],
              [1.4023734e-06, 1.4023734e-06, 1.4023734e-06, ...,
               1.4023734e-06, 1.4023734e-06, 1.4023734e-06],
              [6.9341252e-07, 6.9341252e-07, 6.9341252e-07, ...,
               6.9341252e-07, 6.9341252e-07, 6.9341252e-07],
              [1.1083417e-06, 1.1083417e-06, 1.1083417e-06, ...,
               1.1083417e-06, 1.1083417e-06, 1.1083417e-06],
              [4.8775737e-06, 4.8775737e-06, 4.8775737e-06, ...,
               4.8775737e-06, 4.8775737e-06, 4.8775737e-06],
              [3.0019710e-06, 3.0019710e-06, 3.0019710e-06, ...,
               3.0019710e-06, 3.0019710e-06, 3.0019710e-06]],
      
             [[2.2110268e+06, 2.2110268e+06, 2.2110268e+06, ...,
               2.2110268e+06, 2.2110268e+06, 2.2110268e+06],
              [3.2713920e+06, 3.2713920e+06, 3.2713920e+06, ...,
               3.2713920e+06, 3.2713920e+06, 3.2713920e+06],
              [2.1003490e+06, 2.1003490e+06, 2.1003490e+06, ...,
               2.1003490e+06, 2.1003490e+06, 2.1003490e+06],
              [1.3956851e+07, 1.3956851e+07, 1.3956851e+07, ...,
      ...
               6.7642163e+08, 6.6195904e+08, 5.4917344e+08],
              [3.3414845e+08, 2.9837235e+08, 2.5733310e+08, ...,
               2.4364699e+08, 3.5149990e+08, 2.8449616e+08],
              [4.4131248e+08, 1.6198965e+08, 4.1491664e+08, ...,
               1.7316838e+08, 5.4411200e+08, 4.8547632e+08],
              [2.9974070e+09, 2.8811215e+09, 3.0712788e+09, ...,
               3.3920212e+09, 3.8572462e+09, 3.5742531e+09]],
      
             [[          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan]]], dtype=float32)
    • melt_on_glacier
      (time, rgi_id, gcm_scenario)
      float32
      3.468e+08 3.468e+08 ... nan nan
      description :
      On-glacier melt
      unit :
      kg yr-1
      array([[[3.46797856e+08, 3.46797856e+08, 3.46797856e+08, ...,
               3.46797856e+08, 3.46797856e+08, 3.46797856e+08],
              [1.09114112e+09, 1.09114112e+09, 1.09114112e+09, ...,
               1.09114112e+09, 1.09114112e+09, 1.09114112e+09],
              [7.97954688e+08, 7.97954688e+08, 7.97954688e+08, ...,
               7.97954688e+08, 7.97954688e+08, 7.97954688e+08],
              [3.48909824e+08, 3.48909824e+08, 3.48909824e+08, ...,
               3.48909824e+08, 3.48909824e+08, 3.48909824e+08],
              [5.35692160e+08, 5.35692160e+08, 5.35692160e+08, ...,
               5.35692160e+08, 5.35692160e+08, 5.35692160e+08],
              [5.24657050e+09, 5.24657050e+09, 5.24657050e+09, ...,
               5.24657050e+09, 5.24657050e+09, 5.24657050e+09]],
      
             [[3.57082016e+08, 3.57082016e+08, 3.57082016e+08, ...,
               3.57082016e+08, 3.57082016e+08, 3.57082016e+08],
              [1.13459187e+09, 1.13459187e+09, 1.13459187e+09, ...,
               1.13459187e+09, 1.13459187e+09, 1.13459187e+09],
              [8.25042304e+08, 8.25042304e+08, 8.25042304e+08, ...,
               8.25042304e+08, 8.25042304e+08, 8.25042304e+08],
              [3.40380192e+08, 3.40380192e+08, 3.40380192e+08, ...,
      ...
               4.47459560e+07, 0.00000000e+00, 0.00000000e+00],
              [0.00000000e+00, 5.79223040e+07, 0.00000000e+00, ...,
               1.20029720e+08, 0.00000000e+00, 0.00000000e+00],
              [1.16422696e+08, 4.84544160e+08, 0.00000000e+00, ...,
               4.15784192e+08, 0.00000000e+00, 0.00000000e+00],
              [1.07439949e+09, 1.88857984e+09, 3.33706464e+08, ...,
               1.45156083e+09, 3.19051616e+08, 4.20488032e+08]],
      
             [[           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan]]], dtype=float32)
    • liq_prcp_off_glacier
      (time, rgi_id, gcm_scenario)
      float32
      3.157e-07 3.157e-07 ... nan nan
      description :
      Off-glacier liquid precipitation
      unit :
      kg yr-1
      array([[[3.15704625e-07, 3.15704625e-07, 3.15704625e-07, ...,
               3.15704625e-07, 3.15704625e-07, 3.15704625e-07],
              [4.06854639e-07, 4.06854639e-07, 4.06854639e-07, ...,
               4.06854639e-07, 4.06854639e-07, 4.06854639e-07],
              [1.90203224e-07, 1.90203224e-07, 1.90203224e-07, ...,
               1.90203224e-07, 1.90203224e-07, 1.90203224e-07],
              [3.36553541e-07, 3.36553541e-07, 3.36553541e-07, ...,
               3.36553541e-07, 3.36553541e-07, 3.36553541e-07],
              [2.64243749e-06, 2.64243749e-06, 2.64243749e-06, ...,
               2.64243749e-06, 2.64243749e-06, 2.64243749e-06],
              [1.66212340e-06, 1.66212340e-06, 1.66212340e-06, ...,
               1.66212340e-06, 1.66212340e-06, 1.66212340e-06]],
      
             [[1.27861288e+06, 1.27861288e+06, 1.27861288e+06, ...,
               1.27861288e+06, 1.27861288e+06, 1.27861288e+06],
              [1.60598362e+06, 1.60598362e+06, 1.60598362e+06, ...,
               1.60598362e+06, 1.60598362e+06, 1.60598362e+06],
              [9.33420188e+05, 9.33420188e+05, 9.33420188e+05, ...,
               9.33420188e+05, 9.33420188e+05, 9.33420188e+05],
              [7.46788000e+06, 7.46788000e+06, 7.46788000e+06, ...,
      ...
               1.84969440e+08, 3.03327488e+08, 3.46975584e+08],
              [9.30821040e+07, 5.17105400e+07, 6.31807080e+07, ...,
               6.42280920e+07, 1.46906704e+08, 1.77316304e+08],
              [1.74660608e+08, 3.16927340e+07, 1.60990528e+08, ...,
               5.40002920e+07, 3.34285472e+08, 3.43950528e+08],
              [2.21556352e+09, 1.02956486e+09, 1.43585677e+09, ...,
               1.37228851e+09, 2.84457600e+09, 2.72598554e+09]],
      
             [[           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan]]], dtype=float32)
    • liq_prcp_on_glacier
      (time, rgi_id, gcm_scenario)
      float32
      9.297e+07 9.297e+07 ... nan nan
      description :
      On-glacier liquid precipitation
      unit :
      kg yr-1
      array([[[9.29651280e+07, 9.29651280e+07, 9.29651280e+07, ...,
               9.29651280e+07, 9.29651280e+07, 9.29651280e+07],
              [1.94415952e+08, 1.94415952e+08, 1.94415952e+08, ...,
               1.94415952e+08, 1.94415952e+08, 1.94415952e+08],
              [1.26916760e+08, 1.26916760e+08, 1.26916760e+08, ...,
               1.26916760e+08, 1.26916760e+08, 1.26916760e+08],
              [5.72207000e+07, 5.72207000e+07, 5.72207000e+07, ...,
               5.72207000e+07, 5.72207000e+07, 5.72207000e+07],
              [1.63950688e+08, 1.63950688e+08, 1.63950688e+08, ...,
               1.63950688e+08, 1.63950688e+08, 1.63950688e+08],
              [1.55383091e+09, 1.55383091e+09, 1.55383091e+09, ...,
               1.55383091e+09, 1.55383091e+09, 1.55383091e+09]],
      
             [[1.35614336e+08, 1.35614336e+08, 1.35614336e+08, ...,
               1.35614336e+08, 1.35614336e+08, 1.35614336e+08],
              [3.16730688e+08, 3.16730688e+08, 3.16730688e+08, ...,
               3.16730688e+08, 3.16730688e+08, 3.16730688e+08],
              [2.10278592e+08, 2.10278592e+08, 2.10278592e+08, ...,
               2.10278592e+08, 2.10278592e+08, 2.10278592e+08],
              [9.30957920e+07, 9.30957920e+07, 9.30957920e+07, ...,
      ...
               1.16444650e+07, 0.00000000e+00, 0.00000000e+00],
              [0.00000000e+00, 9.94202300e+06, 0.00000000e+00, ...,
               3.49160560e+07, 0.00000000e+00, 0.00000000e+00],
              [4.26204520e+07, 1.03458960e+08, 0.00000000e+00, ...,
               1.39735376e+08, 0.00000000e+00, 0.00000000e+00],
              [4.26551744e+08, 3.76001600e+08, 5.12844360e+07, ...,
               4.95533568e+08, 1.97627168e+08, 2.36862304e+08]],
      
             [[           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan]]], dtype=float32)
    • melt_off_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [4.4305862e-23, 4.4305862e-23, 4.4305862e-23, ...,
                4.4305862e-23, 4.4305862e-23, 4.4305862e-23],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00]],
      
              [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
      ...
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]],
      
              [[          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]]]], dtype=float32)
    • melt_on_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [8.2685165e-09, 8.2685165e-09, 8.2685165e-09, ...,
                8.2685165e-09, 8.2685165e-09, 8.2685165e-09],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00]],
      
              [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
      ...
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]],
      
              [[          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]]]], dtype=float32)
    • liq_prcp_off_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00]],
      
              [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
      ...
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]],
      
              [[          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]]]], dtype=float32)
    • liq_prcp_on_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.]],
      
              [[ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.]],
      
              [[ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.],
               [ 0.,  0.,  0., ...,  0.,  0.,  0.]],
      ...
              [[nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan]],
      
              [[nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan]],
      
              [[nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan],
               [nan, nan, nan, ..., nan, nan, nan]]]], dtype=float32)
    • runoff_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      unit :
      kg month-1
      description :
      Monthly glacier runoff from sum of monthly melt and liquid precipitation on and off the glacier using a fixed-gauge with a glacier minimum reference area from year 2000
      array([[[[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [8.26851654e-09, 8.26851654e-09, 8.26851654e-09, ...,
                8.26851654e-09, 8.26851654e-09, 8.26851654e-09],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
      
              [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
      ...
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]],
      
              [[           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]]]],
            dtype=float32)
    • runoff
      (time, rgi_id, gcm_scenario)
      float32
      4.398e+08 4.398e+08 ... nan nan
      unit :
      kg yr-1
      description :
      Annual glacier runoff: sum of annual melt and liquid precipitation on and off the glacier using a fixed-gauge with a glacier minimum reference area from year 2000
      array([[[4.39762976e+08, 4.39762976e+08, 4.39762976e+08, ...,
               4.39762976e+08, 4.39762976e+08, 4.39762976e+08],
              [1.28555712e+09, 1.28555712e+09, 1.28555712e+09, ...,
               1.28555712e+09, 1.28555712e+09, 1.28555712e+09],
              [9.24871424e+08, 9.24871424e+08, 9.24871424e+08, ...,
               9.24871424e+08, 9.24871424e+08, 9.24871424e+08],
              [4.06130528e+08, 4.06130528e+08, 4.06130528e+08, ...,
               4.06130528e+08, 4.06130528e+08, 4.06130528e+08],
              [6.99642880e+08, 6.99642880e+08, 6.99642880e+08, ...,
               6.99642880e+08, 6.99642880e+08, 6.99642880e+08],
              [6.80040141e+09, 6.80040141e+09, 6.80040141e+09, ...,
               6.80040141e+09, 6.80040141e+09, 6.80040141e+09]],
      
             [[4.96186016e+08, 4.96186016e+08, 4.96186016e+08, ...,
               4.96186016e+08, 4.96186016e+08, 4.96186016e+08],
              [1.45619994e+09, 1.45619994e+09, 1.45619994e+09, ...,
               1.45619994e+09, 1.45619994e+09, 1.45619994e+09],
              [1.03835469e+09, 1.03835469e+09, 1.03835469e+09, ...,
               1.03835469e+09, 1.03835469e+09, 1.03835469e+09],
              [4.54900736e+08, 4.54900736e+08, 4.54900736e+08, ...,
      ...
               9.17781568e+08, 9.65286528e+08, 8.96148992e+08],
              [4.27230560e+08, 4.17947200e+08, 3.20513824e+08, ...,
               4.62820864e+08, 4.98406592e+08, 4.61812480e+08],
              [7.75016256e+08, 7.81685504e+08, 5.75907200e+08, ...,
               7.82688256e+08, 8.78397440e+08, 8.29426816e+08],
              [6.71392205e+09, 6.17526784e+09, 4.89212672e+09, ...,
               6.71140403e+09, 7.21850112e+09, 6.95758899e+09]],
      
             [[           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan]]], dtype=float32)
    • time
      PandasIndex
      PandasIndex(Index([2000.0, 2001.0, 2002.0, 2003.0, 2004.0, 2005.0, 2006.0, 2007.0, 2008.0,
             2009.0,
             ...
             2091.0, 2092.0, 2093.0, 2094.0, 2095.0, 2096.0, 2097.0, 2098.0, 2099.0,
             2100.0],
            dtype='float64', name='time', length=101))
    • rgi_id
      PandasIndex
      PandasIndex(Index(['RGI60-12.00126', 'RGI60-12.00335', 'RGI60-12.00632', 'RGI60-12.00972',
             'RGI60-12.01074', 'RGI60-12.01132'],
            dtype='object', name='rgi_id'))
    • month_2d
      PandasIndex
      PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype='int64', name='month_2d'))
    • gcm_scenario
      gcm
      scenario
      PandasMultiIndex
      PandasIndex(MultiIndex([(  'CAMS-CSM1-0', 'ssp126'),
                  (        'CCSM4',  'rcp26'),
                  (   'GFDL-ESM2G',  'rcp45'),
                  (    'GFDL-ESM4', 'ssp119'),
                  (    'GFDL-ESM4', 'ssp126'),
                  (    'INM-CM4-8', 'ssp126'),
                  (    'INM-CM5-0', 'ssp126'),
                  (   'MPI-ESM-LR',  'rcp26'),
                  ('MPI-ESM1-2-HR', 'ssp126'),
                  (   'MRI-ESM2-0', 'ssp119'),
                  (    'NorESM1-M',  'rcp26')],
                 name='gcm_scenario'))
  • description :
    OGGM model output
    oggm_version :
    1.6.1.dev26+gf8a1745
    calendar :
    365-day no leap
    creation_date :
    2025-05-07 20:14:15
    bias_correction :
    bc_2000_2019
    basin_name :
    Djankuat
    basin_area_km2 :
    12.448876467563624
    glaciers_in_basin :
    6
    glacierised_area_perc :
    22.556252424196114
    glacierised_area_km2 :
    2.808
Task: Explore and discuss the available data (data structure, variables, units, temporal resolution, ...).

Data structure of the dataset

  • Dimensions:
    • time: 101 timestamps -> 101 years (2000 to 2100)
    • RGI ID: 6 glaciers in Djankuat Basin, 23 glaciers in Rofental Basin
    • GCM scenario: combines the GCM and the temperature scenario used for the specific part of the dataset
    • month (2d): extra time index used for the monthly available hydrological data instead of time (internally, it is structured as a 2d array)
    • GCM and scenario separated, as well as the recorded calendar and hydrological years and months, just because they are different (water year starts in april for both basins)
  • Annual variables: glacier geometry, mass balance and hydrology
    • glacier volume (m-3)
    • glacier area (m-2)
    • on and off glacier variables: area (m-2), melt (kg yr-1) and liquid precipitation (kg yr-1)
    • runoff (kg yr-1)
  • Monthly variables: hydrology only
    • on and off glacier variables: melt (kg yr-1) and liquid precipitation (kg yr-1)
    • runoff (kg month-1)

Common running glaciers¶

Some individual glacier projections may be missing or not available for certain scenarios. To avoid introducing errors due to differing glacier counts across scenarios, we will first extract only those glaciers that are available in all scenarios:

In [6]:
# in this variable the common running glaciers will be saved for each basin
not_nan_rgi_ids_all = {}

# loop through your basins
for basin in basin_ids:
    not_nan_rgi_ids = None

    # loop though the temperature scenarios, only glaciers which are available in all temperature scenarios are selected
    for temp in temp_scenarios:
        not_nan_rgi_ids_temp = ~ds_all[basin][temp].volume.isnull().any(dim=["time", "gcm_scenario"])

        if not_nan_rgi_ids is None:
            not_nan_rgi_ids = not_nan_rgi_ids_temp
        else:
            not_nan_rgi_ids &= not_nan_rgi_ids_temp

    # save the working rgi_ids for each basin
    not_nan_rgi_ids_all[basin] = not_nan_rgi_ids.rgi_id[not_nan_rgi_ids].values

We can now use this list of valid rgi_ids to filter our data and include only those glaciers that are available across all scenarios.

In [7]:
basin_example = basin_ids[1]
ds_all[basin_example]['4°C'].sel(rgi_id=not_nan_rgi_ids_all[basin_example])
Out[7]:
<xarray.Dataset> Size: 6MB
Dimensions:                       (time: 101, rgi_id: 23, gcm_scenario: 9,
                                   month_2d: 12)
Coordinates:
  * time                          (time) float64 808B 2e+03 ... 2.1e+03
  * rgi_id                        (rgi_id) <U14 1kB 'RGI60-11.00719' ... 'RGI...
    hydro_year                    (time) int64 808B 2000 2001 2002 ... 2099 2100
    hydro_month                   (time) int64 808B 4 4 4 4 4 4 ... 4 4 4 4 4 4
    calendar_year                 (time) int64 808B 2000 2001 2002 ... 2099 2100
    calendar_month                (time) int64 808B 1 1 1 1 1 1 ... 1 1 1 1 1 1
  * month_2d                      (month_2d) int64 96B 1 2 3 4 5 ... 9 10 11 12
    calendar_month_2d             (month_2d) int64 96B 1 2 3 4 5 ... 9 10 11 12
  * gcm_scenario                  (gcm_scenario) object 72B MultiIndex
  * gcm                           (gcm_scenario) <U13 468B 'BCC-CSM2-MR' ... ...
  * scenario                      (gcm_scenario) <U6 216B 'ssp585' ... 'ssp585'
Data variables: (12/14)
    volume                        (time, rgi_id, gcm_scenario) float32 84kB 4...
    area                          (time, rgi_id, gcm_scenario) float32 84kB 8...
    on_area                       (time, rgi_id, gcm_scenario) float32 84kB 8...
    off_area                      (time, rgi_id, gcm_scenario) float32 84kB 3...
    melt_off_glacier              (time, rgi_id, gcm_scenario) float32 84kB 3...
    melt_on_glacier               (time, rgi_id, gcm_scenario) float32 84kB 1...
    ...                            ...
    melt_off_glacier_monthly      (time, month_2d, rgi_id, gcm_scenario) float32 1MB ...
    melt_on_glacier_monthly       (time, month_2d, rgi_id, gcm_scenario) float32 1MB ...
    liq_prcp_off_glacier_monthly  (time, month_2d, rgi_id, gcm_scenario) float32 1MB ...
    liq_prcp_on_glacier_monthly   (time, month_2d, rgi_id, gcm_scenario) float32 1MB ...
    runoff_monthly                (time, month_2d, rgi_id, gcm_scenario) float32 1MB ...
    runoff                        (time, rgi_id, gcm_scenario) float32 84kB 2...
Attributes:
    description:            OGGM model output
    oggm_version:           1.6.1.dev26+gf8a1745
    calendar:               365-day no leap
    creation_date:          2025-05-07 20:14:15
    bias_correction:        bc_2000_2019
    basin_name:             Rofental
    basin_area_km2:         98.64030351364737
    glaciers_in_basin:      23
    glacierised_area_perc:  35.36384090218637
    glacierised_area_km2:   34.883
xarray.Dataset
    • time: 101
    • rgi_id: 23
    • gcm_scenario: 9
    • month_2d: 12
    • time
      (time)
      float64
      2e+03 2.001e+03 ... 2.1e+03
      description :
      Floating year
      array([2000., 2001., 2002., 2003., 2004., 2005., 2006., 2007., 2008., 2009.,
             2010., 2011., 2012., 2013., 2014., 2015., 2016., 2017., 2018., 2019.,
             2020., 2021., 2022., 2023., 2024., 2025., 2026., 2027., 2028., 2029.,
             2030., 2031., 2032., 2033., 2034., 2035., 2036., 2037., 2038., 2039.,
             2040., 2041., 2042., 2043., 2044., 2045., 2046., 2047., 2048., 2049.,
             2050., 2051., 2052., 2053., 2054., 2055., 2056., 2057., 2058., 2059.,
             2060., 2061., 2062., 2063., 2064., 2065., 2066., 2067., 2068., 2069.,
             2070., 2071., 2072., 2073., 2074., 2075., 2076., 2077., 2078., 2079.,
             2080., 2081., 2082., 2083., 2084., 2085., 2086., 2087., 2088., 2089.,
             2090., 2091., 2092., 2093., 2094., 2095., 2096., 2097., 2098., 2099.,
             2100.])
    • rgi_id
      (rgi_id)
      <U14
      'RGI60-11.00719' ... 'RGI60-11.0...
      description :
      RGI glacier identifier
      array(['RGI60-11.00719', 'RGI60-11.00720', 'RGI60-11.00729', 'RGI60-11.00731',
             'RGI60-11.00737', 'RGI60-11.00753', 'RGI60-11.00779', 'RGI60-11.00787',
             'RGI60-11.00814', 'RGI60-11.00822', 'RGI60-11.00831', 'RGI60-11.00844',
             'RGI60-11.00860', 'RGI60-11.00885', 'RGI60-11.00895', 'RGI60-11.00897',
             'RGI60-11.00904', 'RGI60-11.00919', 'RGI60-11.00927', 'RGI60-11.00937',
             'RGI60-11.00943', 'RGI60-11.00957', 'RGI60-11.00961'], dtype='<U14')
    • hydro_year
      (time)
      int64
      2000 2001 2002 ... 2098 2099 2100
      description :
      Hydrological year
      array([2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
             2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
             2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032,
             2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043,
             2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054,
             2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065,
             2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076,
             2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
             2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098,
             2099, 2100])
    • hydro_month
      (time)
      int64
      4 4 4 4 4 4 4 4 ... 4 4 4 4 4 4 4 4
      description :
      Hydrological month
      array([4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
    • calendar_year
      (time)
      int64
      2000 2001 2002 ... 2098 2099 2100
      description :
      Calendar year
      array([2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
             2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
             2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032,
             2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043,
             2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054,
             2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065,
             2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076,
             2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087,
             2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098,
             2099, 2100])
    • calendar_month
      (time)
      int64
      1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
      description :
      Calendar month
      array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
    • month_2d
      (month_2d)
      int64
      1 2 3 4 5 6 7 8 9 10 11 12
      array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
    • calendar_month_2d
      (month_2d)
      int64
      1 2 3 4 5 6 7 8 9 10 11 12
      array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
    • gcm_scenario
      (gcm_scenario)
      object
      MultiIndex
      array([('BCC-CSM2-MR', 'ssp585'), ('CCSM4', 'rcp85'), ('CESM2', 'ssp370'),
             ('CESM2-WACCM', 'ssp370'), ('CNRM-CM5', 'rcp85'),
             ('EC-Earth3-Veg', 'ssp370'), ('FGOALS-f3-L', 'ssp585'),
             ('MPI-ESM-LR', 'rcp85'), ('NorESM2-MM', 'ssp585')], dtype=object)
    • gcm
      (gcm_scenario)
      <U13
      'BCC-CSM2-MR' ... 'NorESM2-MM'
      description :
      used global circulation model
      array(['BCC-CSM2-MR', 'CCSM4', 'CESM2', 'CESM2-WACCM', 'CNRM-CM5',
             'EC-Earth3-Veg', 'FGOALS-f3-L', 'MPI-ESM-LR', 'NorESM2-MM'],
            dtype='<U13')
    • scenario
      (gcm_scenario)
      <U6
      'ssp585' 'rcp85' ... 'ssp585'
      description :
      used scenario
      array(['ssp585', 'rcp85', 'ssp370', 'ssp370', 'rcp85', 'ssp370', 'ssp585',
             'rcp85', 'ssp585'], dtype='<U6')
    • volume
      (time, rgi_id, gcm_scenario)
      float32
      4.776e+08 4.776e+08 ... 0.0 0.0
      description :
      Total glacier volume
      unit :
      m 3
      array([[[4.7756176e+08, 4.7756176e+08, 4.7756176e+08, ...,
               4.7756176e+08, 4.7756176e+08, 4.7756176e+08],
              [4.4183776e+07, 4.4183776e+07, 4.4183776e+07, ...,
               4.4183776e+07, 4.4183776e+07, 4.4183776e+07],
              [6.6454406e+05, 6.6454406e+05, 6.6454406e+05, ...,
               6.6454406e+05, 6.6454406e+05, 6.6454406e+05],
              ...,
              [1.6796597e+08, 1.6796597e+08, 1.6796597e+08, ...,
               1.6796597e+08, 1.6796597e+08, 1.6796597e+08],
              [2.0655446e+08, 2.0655446e+08, 2.0655446e+08, ...,
               2.0655446e+08, 2.0655446e+08, 2.0655446e+08],
              [3.2279028e+05, 3.2279028e+05, 3.2279028e+05, ...,
               3.2279028e+05, 3.2279028e+05, 3.2279028e+05]],
      
             [[4.7756458e+08, 4.7756458e+08, 4.7756458e+08, ...,
               4.7756458e+08, 4.7756458e+08, 4.7756458e+08],
              [4.4668708e+07, 4.4668708e+07, 4.4668708e+07, ...,
               4.4668708e+07, 4.4668708e+07, 4.4668708e+07],
              [7.1500038e+05, 7.1500038e+05, 7.1500038e+05, ...,
               7.1500038e+05, 7.1500038e+05, 7.1500038e+05],
      ...
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00]],
      
             [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              ...,
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00]]], dtype=float32)
    • area
      (time, rgi_id, gcm_scenario)
      float32
      8.55e+06 8.55e+06 ... 0.0 0.0
      description :
      Total glacier area
      unit :
      m 2
      array([[[8549507.   , 8549507.   , 8549507.   , ..., 8549507.   ,
               8549507.   , 8549507.   ],
              [1111295.   , 1111295.   , 1111295.   , ..., 1111295.   ,
               1111295.   , 1111295.   ],
              [  55455.395,   55455.395,   55455.395, ...,   55455.395,
                 55455.395,   55455.395],
              ...,
              [3176870.8  , 3176870.8  , 3176870.8  , ..., 3176870.8  ,
               3176870.8  , 3176870.8  ],
              [3156077.   , 3156077.   , 3156077.   , ..., 3156077.   ,
               3156077.   , 3156077.   ],
              [  36516.465,   36516.465,   36516.465, ...,   36516.465,
                 36516.465,   36516.465]],
      
             [[8549494.   , 8549494.   , 8549494.   , ..., 8549494.   ,
               8549494.   , 8549494.   ],
              [1112750.5  , 1112750.5  , 1112750.5  , ..., 1112750.5  ,
               1112750.5  , 1112750.5  ],
              [  61691.57 ,   61691.57 ,   61691.57 , ...,   61691.57 ,
                 61691.57 ,   61691.57 ],
      ...
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ]],
      
             [[      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              ...,
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ]]], dtype=float32)
    • on_area
      (time, rgi_id, gcm_scenario)
      float32
      8.55e+06 8.55e+06 ... nan nan
      description :
      On-glacier area
      unit :
      m 2
      array([[[8549507.   , 8549507.   , 8549507.   , ..., 8549507.   ,
               8549507.   , 8549507.   ],
              [1111295.   , 1111295.   , 1111295.   , ..., 1111295.   ,
               1111295.   , 1111295.   ],
              [  55455.395,   55455.395,   55455.395, ...,   55455.395,
                 55455.395,   55455.395],
              ...,
              [3176870.8  , 3176870.8  , 3176870.8  , ..., 3176870.8  ,
               3176870.8  , 3176870.8  ],
              [3156077.   , 3156077.   , 3156077.   , ..., 3156077.   ,
               3156077.   , 3156077.   ],
              [  36516.465,   36516.465,   36516.465, ...,   36516.465,
                 36516.465,   36516.465]],
      
             [[8549494.   , 8549494.   , 8549494.   , ..., 8549494.   ,
               8549494.   , 8549494.   ],
              [1112750.5  , 1112750.5  , 1112750.5  , ..., 1112750.5  ,
               1112750.5  , 1112750.5  ],
              [  61691.57 ,   61691.57 ,   61691.57 , ...,   61691.57 ,
                 61691.57 ,   61691.57 ],
      ...
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ],
              [      0.   ,       0.   ,       0.   , ...,       0.   ,
                     0.   ,       0.   ]],
      
             [[        nan,         nan,         nan, ...,         nan,
                       nan,         nan],
              [        nan,         nan,         nan, ...,         nan,
                       nan,         nan],
              [        nan,         nan,         nan, ...,         nan,
                       nan,         nan],
              ...,
              [        nan,         nan,         nan, ...,         nan,
                       nan,         nan],
              [        nan,         nan,         nan, ...,         nan,
                       nan,         nan],
              [        nan,         nan,         nan, ...,         nan,
                       nan,         nan]]], dtype=float32)
    • off_area
      (time, rgi_id, gcm_scenario)
      float32
      3.973e-09 3.973e-09 ... nan nan
      description :
      Off-glacier area
      unit :
      m 2
      array([[[3.9726729e-09, 3.9726729e-09, 3.9726729e-09, ...,
               3.9726729e-09, 3.9726729e-09, 3.9726729e-09],
              [1.5270416e-09, 1.5270416e-09, 1.5270416e-09, ...,
               1.5270416e-09, 1.5270416e-09, 1.5270416e-09],
              [4.1791282e-10, 4.1791282e-10, 4.1791282e-10, ...,
               4.1791282e-10, 4.1791282e-10, 4.1791282e-10],
              ...,
              [2.9303919e-09, 2.9303919e-09, 2.9303919e-09, ...,
               2.9303919e-09, 2.9303919e-09, 2.9303919e-09],
              [2.8267095e-09, 2.8267095e-09, 2.8267095e-09, ...,
               2.8267095e-09, 2.8267095e-09, 2.8267095e-09],
              [2.9626790e-09, 2.9626790e-09, 2.9626790e-09, ...,
               2.9626790e-09, 2.9626790e-09, 2.9626790e-09]],
      
             [[1.5209646e+03, 1.5209646e+03, 1.5209646e+03, ...,
               1.5209646e+03, 1.5209646e+03, 1.5209646e+03],
              [6.7160774e+01, 6.7160774e+01, 6.7160774e+01, ...,
               6.7160774e+01, 6.7160774e+01, 6.7160774e+01],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
      ...
              [3.1768708e+06, 3.1768708e+06, 3.1768708e+06, ...,
               3.1768708e+06, 3.1768708e+06, 3.1768708e+06],
              [3.1560770e+06, 3.1560770e+06, 3.1560770e+06, ...,
               3.1560770e+06, 3.1560770e+06, 3.1560770e+06],
              [3.6516465e+04, 3.6516465e+04, 3.6516465e+04, ...,
               3.6516465e+04, 3.6516465e+04, 3.6516465e+04]],
      
             [[          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              ...,
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan]]], dtype=float32)
    • melt_off_glacier
      (time, rgi_id, gcm_scenario)
      float32
      3.682e-06 3.682e-06 ... nan nan
      description :
      Off-glacier melt
      unit :
      kg yr-1
      array([[[3.6817712e-06, 3.6817712e-06, 3.6817712e-06, ...,
               3.6817712e-06, 3.6817712e-06, 3.6817712e-06],
              [1.7959863e-06, 1.7959863e-06, 1.7959863e-06, ...,
               1.7959863e-06, 1.7959863e-06, 1.7959863e-06],
              [5.3454715e-07, 5.3454715e-07, 5.3454715e-07, ...,
               5.3454715e-07, 5.3454715e-07, 5.3454715e-07],
              ...,
              [3.7212692e-06, 3.7212692e-06, 3.7212692e-06, ...,
               3.7212692e-06, 3.7212692e-06, 3.7212692e-06],
              [3.3891708e-06, 3.3891708e-06, 3.3891708e-06, ...,
               3.3891708e-06, 3.3891708e-06, 3.3891708e-06],
              [4.1741537e-06, 4.1741537e-06, 4.1741537e-06, ...,
               4.1741537e-06, 4.1741537e-06, 4.1741537e-06]],
      
             [[1.7996970e+06, 1.7996970e+06, 1.7996970e+06, ...,
               1.7996970e+06, 1.7996970e+06, 1.7996970e+06],
              [9.1956477e+04, 9.1956477e+04, 9.1956477e+04, ...,
               9.1956477e+04, 9.1956477e+04, 9.1956477e+04],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
      ...
              [4.2830029e+09, 4.2131860e+09, 2.4955994e+09, ...,
               2.4652861e+09, 5.7194890e+09, 2.5279729e+09],
              [4.9612913e+09, 4.3255506e+09, 2.6371233e+09, ...,
               2.6211569e+09, 5.8915220e+09, 2.4937019e+09],
              [4.6517684e+07, 4.8293612e+07, 2.8962880e+07, ...,
               2.9016538e+07, 6.8497568e+07, 3.2371022e+07]],
      
             [[          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              ...,
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan]]], dtype=float32)
    • melt_on_glacier
      (time, rgi_id, gcm_scenario)
      float32
      1.702e+10 1.702e+10 ... nan nan
      description :
      On-glacier melt
      unit :
      kg yr-1
      array([[[1.7021042e+10, 1.7021042e+10, 1.7021042e+10, ...,
               1.7021042e+10, 1.7021042e+10, 1.7021042e+10],
              [2.0625745e+09, 2.0625745e+09, 2.0625745e+09, ...,
               2.0625745e+09, 2.0625745e+09, 2.0625745e+09],
              [7.8831160e+07, 7.8831160e+07, 7.8831160e+07, ...,
               7.8831160e+07, 7.8831160e+07, 7.8831160e+07],
              ...,
              [6.6423465e+09, 6.6423465e+09, 6.6423465e+09, ...,
               6.6423465e+09, 6.6423465e+09, 6.6423465e+09],
              [8.9832499e+09, 8.9832499e+09, 8.9832499e+09, ...,
               8.9832499e+09, 8.9832499e+09, 8.9832499e+09],
              [8.0304024e+07, 8.0304024e+07, 8.0304024e+07, ...,
               8.0304024e+07, 8.0304024e+07, 8.0304024e+07]],
      
             [[1.6957250e+10, 1.6957250e+10, 1.6957250e+10, ...,
               1.6957250e+10, 1.6957250e+10, 1.6957250e+10],
              [2.1589210e+09, 2.1589210e+09, 2.1589210e+09, ...,
               2.1589210e+09, 2.1589210e+09, 2.1589210e+09],
              [8.8871312e+07, 8.8871312e+07, 8.8871312e+07, ...,
               8.8871312e+07, 8.8871312e+07, 8.8871312e+07],
      ...
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00]],
      
             [[          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              ...,
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan]]], dtype=float32)
    • liq_prcp_off_glacier
      (time, rgi_id, gcm_scenario)
      float32
      3.188e-06 3.188e-06 ... nan nan
      description :
      Off-glacier liquid precipitation
      unit :
      kg yr-1
      array([[[3.1881186e-06, 3.1881186e-06, 3.1881186e-06, ...,
               3.1881186e-06, 3.1881186e-06, 3.1881186e-06],
              [7.2383648e-07, 7.2383648e-07, 7.2383648e-07, ...,
               7.2383648e-07, 7.2383648e-07, 7.2383648e-07],
              [2.3950452e-07, 2.3950452e-07, 2.3950452e-07, ...,
               2.3950452e-07, 2.3950452e-07, 2.3950452e-07],
              ...,
              [2.8924826e-06, 2.8924826e-06, 2.8924826e-06, ...,
               2.8924826e-06, 2.8924826e-06, 2.8924826e-06],
              [4.0422710e-06, 4.0422710e-06, 4.0422710e-06, ...,
               4.0422710e-06, 4.0422710e-06, 4.0422710e-06],
              [2.9324119e-06, 2.9324119e-06, 2.9324119e-06, ...,
               2.9324119e-06, 2.9324119e-06, 2.9324119e-06]],
      
             [[1.2728990e+06, 1.2728990e+06, 1.2728990e+06, ...,
               1.2728990e+06, 1.2728990e+06, 1.2728990e+06],
              [4.3783082e+04, 4.3783082e+04, 4.3783082e+04, ...,
               4.3783082e+04, 4.3783082e+04, 4.3783082e+04],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
      ...
              [3.6191759e+09, 4.0985777e+09, 4.3167606e+09, ...,
               2.6621985e+09, 3.7823037e+09, 3.7036541e+09],
              [4.1040335e+09, 4.9704602e+09, 5.0212285e+09, ...,
               3.1417920e+09, 4.9316731e+09, 4.4805443e+09],
              [4.0125268e+07, 4.5787140e+07, 4.6574792e+07, ...,
               2.7789042e+07, 3.6876144e+07, 3.7219080e+07]],
      
             [[          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              ...,
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan]]], dtype=float32)
    • liq_prcp_on_glacier
      (time, rgi_id, gcm_scenario)
      float32
      6.316e+09 6.316e+09 ... nan nan
      description :
      On-glacier liquid precipitation
      unit :
      kg yr-1
      array([[[6.3161851e+09, 6.3161851e+09, 6.3161851e+09, ...,
               6.3161851e+09, 6.3161851e+09, 6.3161851e+09],
              [5.3476963e+08, 5.3476963e+08, 5.3476963e+08, ...,
               5.3476963e+08, 5.3476963e+08, 5.3476963e+08],
              [2.7148782e+07, 2.7148782e+07, 2.7148782e+07, ...,
               2.7148782e+07, 2.7148782e+07, 2.7148782e+07],
              ...,
              [3.4487972e+09, 3.4487972e+09, 3.4487972e+09, ...,
               3.4487972e+09, 3.4487972e+09, 3.4487972e+09],
              [5.1398574e+09, 5.1398574e+09, 5.1398574e+09, ...,
               5.1398574e+09, 5.1398574e+09, 5.1398574e+09],
              [3.4276320e+07, 3.4276320e+07, 3.4276320e+07, ...,
               3.4276320e+07, 3.4276320e+07, 3.4276320e+07]],
      
             [[5.4234977e+09, 5.4234977e+09, 5.4234977e+09, ...,
               5.4234977e+09, 5.4234977e+09, 5.4234977e+09],
              [5.7809370e+08, 5.7809370e+08, 5.7809370e+08, ...,
               5.7809370e+08, 5.7809370e+08, 5.7809370e+08],
              [3.5086336e+07, 3.5086336e+07, 3.5086336e+07, ...,
               3.5086336e+07, 3.5086336e+07, 3.5086336e+07],
      ...
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
              [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
               0.0000000e+00, 0.0000000e+00, 0.0000000e+00]],
      
             [[          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              ...,
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan],
              [          nan,           nan,           nan, ...,
                         nan,           nan,           nan]]], dtype=float32)
    • melt_off_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               ...,
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [4.2102201e-23, 4.2102201e-23, 4.2102201e-23, ...,
                4.2102201e-23, 4.2102201e-23, 4.2102201e-23]],
      
              [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
      ...
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]],
      
              [[          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               ...,
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]]]], dtype=float32)
    • melt_on_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               ...,
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [5.15169463e-10, 5.15169463e-10, 5.15169463e-10, ...,
                5.15169463e-10, 5.15169463e-10, 5.15169463e-10]],
      
              [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
      ...
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]],
      
              [[           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               ...,
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]]]],
            dtype=float32)
    • liq_prcp_off_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               ...,
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
      
              [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
      ...
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]],
      
              [[           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               ...,
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]]]],
            dtype=float32)
    • liq_prcp_on_glacier_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      array([[[[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               ...,
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00]],
      
              [[0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
               [0.0000000e+00, 0.0000000e+00, 0.0000000e+00, ...,
                0.0000000e+00, 0.0000000e+00, 0.0000000e+00],
      ...
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]],
      
              [[          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               ...,
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan],
               [          nan,           nan,           nan, ...,
                          nan,           nan,           nan]]]], dtype=float32)
    • runoff_monthly
      (time, month_2d, rgi_id, gcm_scenario)
      float32
      0.0 0.0 0.0 0.0 ... nan nan nan nan
      unit :
      kg month-1
      description :
      Monthly glacier runoff from sum of monthly melt and liquid precipitation on and off the glacier using a fixed-gauge with a glacier minimum reference area from year 2000
      array([[[[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               ...,
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [5.15169463e-10, 5.15169463e-10, 5.15169463e-10, ...,
                5.15169463e-10, 5.15169463e-10, 5.15169463e-10]],
      
              [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
               [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
                0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
      ...
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]],
      
              [[           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               ...,
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan],
               [           nan,            nan,            nan, ...,
                           nan,            nan,            nan]]]],
            dtype=float32)
    • runoff
      (time, rgi_id, gcm_scenario)
      float32
      2.334e+10 2.334e+10 ... nan nan
      unit :
      kg yr-1
      description :
      Annual glacier runoff: sum of annual melt and liquid precipitation on and off the glacier using a fixed-gauge with a glacier minimum reference area from year 2000
      array([[[2.33372262e+10, 2.33372262e+10, 2.33372262e+10, ...,
               2.33372262e+10, 2.33372262e+10, 2.33372262e+10],
              [2.59734400e+09, 2.59734400e+09, 2.59734400e+09, ...,
               2.59734400e+09, 2.59734400e+09, 2.59734400e+09],
              [1.05979944e+08, 1.05979944e+08, 1.05979944e+08, ...,
               1.05979944e+08, 1.05979944e+08, 1.05979944e+08],
              ...,
              [1.00911432e+10, 1.00911432e+10, 1.00911432e+10, ...,
               1.00911432e+10, 1.00911432e+10, 1.00911432e+10],
              [1.41231073e+10, 1.41231073e+10, 1.41231073e+10, ...,
               1.41231073e+10, 1.41231073e+10, 1.41231073e+10],
              [1.14580344e+08, 1.14580344e+08, 1.14580344e+08, ...,
               1.14580344e+08, 1.14580344e+08, 1.14580344e+08]],
      
             [[2.23838208e+10, 2.23838208e+10, 2.23838208e+10, ...,
               2.23838208e+10, 2.23838208e+10, 2.23838208e+10],
              [2.73715046e+09, 2.73715046e+09, 2.73715046e+09, ...,
               2.73715046e+09, 2.73715046e+09, 2.73715046e+09],
              [1.23957648e+08, 1.23957648e+08, 1.23957648e+08, ...,
               1.23957648e+08, 1.23957648e+08, 1.23957648e+08],
      ...
              [7.90217882e+09, 8.31176397e+09, 6.81235968e+09, ...,
               5.12748442e+09, 9.50179226e+09, 6.23162675e+09],
              [9.06532454e+09, 9.29601126e+09, 7.65835162e+09, ...,
               5.76294912e+09, 1.08231946e+10, 6.97424589e+09],
              [8.66429520e+07, 9.40807520e+07, 7.55376720e+07, ...,
               5.68055800e+07, 1.05373712e+08, 6.95901040e+07]],
      
             [[           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              ...,
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan],
              [           nan,            nan,            nan, ...,
                          nan,            nan,            nan]]], dtype=float32)
    • time
      PandasIndex
      PandasIndex(Index([2000.0, 2001.0, 2002.0, 2003.0, 2004.0, 2005.0, 2006.0, 2007.0, 2008.0,
             2009.0,
             ...
             2091.0, 2092.0, 2093.0, 2094.0, 2095.0, 2096.0, 2097.0, 2098.0, 2099.0,
             2100.0],
            dtype='float64', name='time', length=101))
    • rgi_id
      PandasIndex
      PandasIndex(Index(['RGI60-11.00719', 'RGI60-11.00720', 'RGI60-11.00729', 'RGI60-11.00731',
             'RGI60-11.00737', 'RGI60-11.00753', 'RGI60-11.00779', 'RGI60-11.00787',
             'RGI60-11.00814', 'RGI60-11.00822', 'RGI60-11.00831', 'RGI60-11.00844',
             'RGI60-11.00860', 'RGI60-11.00885', 'RGI60-11.00895', 'RGI60-11.00897',
             'RGI60-11.00904', 'RGI60-11.00919', 'RGI60-11.00927', 'RGI60-11.00937',
             'RGI60-11.00943', 'RGI60-11.00957', 'RGI60-11.00961'],
            dtype='object', name='rgi_id'))
    • month_2d
      PandasIndex
      PandasIndex(Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype='int64', name='month_2d'))
    • gcm_scenario
      gcm
      scenario
      PandasMultiIndex
      PandasIndex(MultiIndex([(  'BCC-CSM2-MR', 'ssp585'),
                  (        'CCSM4',  'rcp85'),
                  (        'CESM2', 'ssp370'),
                  (  'CESM2-WACCM', 'ssp370'),
                  (     'CNRM-CM5',  'rcp85'),
                  ('EC-Earth3-Veg', 'ssp370'),
                  (  'FGOALS-f3-L', 'ssp585'),
                  (   'MPI-ESM-LR',  'rcp85'),
                  (   'NorESM2-MM', 'ssp585')],
                 name='gcm_scenario'))
  • description :
    OGGM model output
    oggm_version :
    1.6.1.dev26+gf8a1745
    calendar :
    365-day no leap
    creation_date :
    2025-05-07 20:14:15
    bias_correction :
    bc_2000_2019
    basin_name :
    Rofental
    basin_area_km2 :
    98.64030351364737
    glaciers_in_basin :
    23
    glacierised_area_perc :
    35.36384090218637
    glacierised_area_km2 :
    34.883
Important: For all subsequent analyses, make sure to include only the glaciers that are available across all scenarios to ensure consistency!
Task: For each of your basins, check whether any glaciers were excluded during the filtering process, and if so, calculate the total glacier area in 2000 of the excluded glaciers (in km²) and what percentage this represents of the total 2000 glacier area in the basin.
In [8]:
number_common_glaciers = {}
for basin_id in basin_ids:
    number_common_glaciers[basin_id] = not_nan_rgi_ids_all[basin_id].size
    print(f"{basin_id}: {number_common_glaciers[basin_id]}/{ds_all[basin_id]['1.5°C'].glaciers_in_basin} glaciers available across all scenarios")
djankuat: 6/6 glaciers available across all scenarios
rofental: 23/23 glaciers available across all scenarios

Fortunately, all of the glaciers are available for further analysis. Therefore 100% of the total 2000 glacier area in both basins can be further used.

Describe your basins¶

Before starting your data analysis, take some time to explore your selected basins and do a bit of background research. You can download all basin shapefiles here to examine them more closely.

Please answer at least the following questions:
  • Where are the basins located, and what are their climate conditions?
  • How large is each basin, and what proportion of the area is glacierized? (Tip: check the Attribues of ds_all for the individual basins)

Djankuat Research Basin (INARCH Website)

  • Location: northern slope of the central part of the Main Caucasian Ridge (Russia)
    • Coordinates: 43.21°N, 42.74°E
    • Elevation: 2600 - 4000 m
    • Area: 12.4 km²
  • Physical and Climatic Characteristics
    • Climate: moderate continental to high-alpine (mean annual temperature: 2.7°C; mean annual precipitation: 942 mm)
    • Glacier Coverage: as of 2017, glaciers covered 27% of the basin
    • Main Glacier: Djankuat Glacier with an area of 2.42 km²
  • Monitoring Infrastructure
    • Meteorological Stations (AWS): between 2640 m (Djankuat Base Camp) and 3200 m (on Djankuat Glacier)
    • Hydrometric Stations: two Gauging Stations
    • Additional Measurements: glacier ice thickness via radio-echo sounding and modeling (2012 to 2013)

Rofental Research Basin (INARCH Website)

  • Location: upper Ötztal Alps (Austria)
    • Coordinates: 46.83°N, 10.83°E
    • Elevation: 1891 - 3772 m
    • Area: 98.1 km²
  • Physical and Climatic Characteristics
    • Climate: inner Alpine dry type (mean annual temperature: 2.5°C (in Vent); mean annual precipitation: 797 mm (in Vent) to over 3000 mm (higher elevations))
    • Glacier Coverage: approximately 25% of the basin is glacierized
    • Main Glaciers: Hintereisferner and Vernagtferner
  • Monitoring Infrastructure
    • Meteorological Stations (AWS): multiple AWS
    • Hydrometric Stations: two Gauging Stations (at Vent and Vernagtbach)
    • Additional Measurements: Snow Observation Stations established since 2013 at high elevations

Volume and area evolution¶

Analyze the volume and area evolution of all glaciers in your basin. Tip: use ds.sum(dim='rgi_id') to sum over all glaciers.

For each basin, create:

  • One plot showing total glacier volume evolution (in km³) from 2020 to 2100
  • One plot showing total glacier area evolution (in km²) from 2020 to 2100

Each plot should include all three temperature scenarios, displayed as the median with interquartile range (17th to 83rd percentile). The title of each plot should include the name of the basin and the glacierized area fraction (in percent).

In [9]:
# Define basin areas (in km²)
basin_area_dict = {
    'djankuat': ds_all[basin_ids[0]]['1.5°C'].basin_area_km2,   
    'rofental': ds_all[basin_ids[1]]['1.5°C'].basin_area_km2
}

# Define glacierized areas (in km²)
glacierized_area = {
    'djankuat': ds_all[basin_ids[0]]['1.5°C'].glacierised_area_perc,   
    'rofental': ds_all[basin_ids[1]]['1.5°C'].glacierised_area_perc
}

# Glacier volume and area evolution plots
for basin in basin_ids:
    fig, ax = plt.subplots(2, 1, figsize=(10, 8), constrained_layout=True)

    for temp in temp_scenarios:
        # Filter valid glaciers only
        ds_filtered = ds_all[basin][temp].sel(rgi_id=not_nan_rgi_ids_all[basin])

        # Sum over glaciers
        ds_sum = ds_filtered.sum(dim='rgi_id')

        # Median and IQR
        vol_median = ds_sum.volume.median(dim="gcm_scenario")
        vol_p17 = ds_sum.volume.quantile(0.17, dim="gcm_scenario")
        vol_p83 = ds_sum.volume.quantile(0.83, dim="gcm_scenario")

        area_median = ds_sum.area.median(dim="gcm_scenario")
        area_p17 = ds_sum.area.quantile(0.17, dim="gcm_scenario")
        area_p83 = ds_sum.area.quantile(0.83, dim="gcm_scenario")

        # Plot Volume
        ax[0].plot(ds_sum.time, vol_median, label=f"{temp}", linewidth=2)
        ax[0].fill_between(ds_sum.time, vol_p17, vol_p83, alpha=0.3)

        # Plot Area
        ax[1].plot(ds_sum.time, area_median, label=f"{temp}", linewidth=2)
        ax[1].fill_between(ds_sum.time, area_p17, area_p83, alpha=0.3)

    # Glacierized fraction
    frac = glacierized_area[basin]

    # Improve titles and labels
    ax[0].set_title(f"Glacier Volume Evolution – {basin.capitalize()} ({frac:.1f}% glacierized)", fontsize=14, fontweight='bold')
    ax[0].set_ylabel("Volume (km³)")
    ax[1].set_title(f"Glacier Area Evolution – {basin.capitalize()} ({frac:.1f}% glacierized)", fontsize=14, fontweight='bold')
    ax[1].set_ylabel("Area (km²)")

    # Add gridlines for better readability
    for axis in ax:
        axis.set_xlabel("Year")
        axis.legend(title="Temp. Scenario", fontsize=10, loc="upper left", bbox_to_anchor=(1, 1))
        axis.grid(True, linestyle="--", alpha=0.6)

    plt.show()
No description has been provided for this image
No description has been provided for this image
Questions:
  • What do you observe when comparing the different scenarios within each basin?
  • Do the two basins react similarly or differently?
  • Is there a noticeable difference in the behavior between glacier area and volume?

Answers to the questions

  1. What do you observe when comparing the different scenarios within each basin?
    • across both basins, higher temperature scenarios (e.g. 4°C) lead to faster glacier volume and area loss compared to lower temperature scenarios (e.g. 1.5°C)
    • the uncertainty range (shaded areas) shows that projections vary, but the overall trend remains consistent: glaciers shrink significantly under warming scenarios
  2. Do the two basins react similarly or differently?
    • Rofental basin (35.4% glacierized) experiences a more gradual decline in glacier volume and area compared to Djankuat basin (22.6% glacierized), which shows a steeper loss
    • this difference is likely due to basin size and glacier distribution: Rofental basin has a larger glacierized area, meaning it retains ice longer
    • both basins show similar trends, but the rate of decline differs, with Djankuat basin reacting more sensitively to warming
  3. Is there a noticeable difference in the behavior between glacier area and volume?
    • glacier volume declines more rapidly than glacier area, especially under higher temperature scenarios
    • glacier area loss is slower because thin ice layers may persist even as volume decreases
    • this suggests that glacier thinning occurs before complete area loss, meaning glaciers may still exist but with significantly reduced ice mass

Hydrological output¶

Analyze the hydrological output of your basins. For guidance, you can refer to the plots of this tutorial.

For each basin, create the following plots:

  • Total runoff for all temperature scenarios in one plot (showing median and interquartile range)
  • Runoff components (only median), one plot per temperature scenario
  • Monthly runoff (median only), as a 2D plot (x-axis: Months, y-axis: Years), one plot per temperature scenario
  • Annual runoff at three time steps (e.g. 2020, 2060, 2100), showing median and interquartile range, one plot per temperature scenario

The title of each plot should include the name of the basin and the glacierized area fraction (in percent), and, if needed, the temperature scenario.

In [10]:
for basin_id in basin_ids:
    fig, ax = plt.subplots(figsize=(18,7))
    for i, temp_scenario in enumerate(temp_scenarios.keys()):
        
        median = ds_all[basin_id][temp_scenario].runoff.loc['2020':].sum(dim='rgi_id').median(dim='gcm_scenario').rolling(time=11,center=True).mean()*1e-9
        q17 = ds_all[basin_id][temp_scenario].runoff.loc['2020':].sum(dim='rgi_id').quantile(0.17,dim='gcm_scenario').rolling(time=11,center=True).mean()*1e-9
        q83 = ds_all[basin_id][temp_scenario].runoff.loc['2020':].sum(dim='rgi_id').quantile(0.83,dim='gcm_scenario').rolling(time=11,center=True).mean()*1e-9
        median.plot(ax=ax,label = temp_scenario,color=sns.color_palette("rocket")[i])
        ax.fill_between(ds_all[basin_id][temp_scenario].time.loc['2020':],q17,q83,alpha=0.3,color=sns.color_palette("rocket")[i])
    ax.legend()
    ax.set_title(f'{basin_id.capitalize()}: {ds_all[basin_id][temp_scenario].glacierised_area_perc:.1f}% glacierized')
    ax.set_ylabel('Annual runoff (Mt)'); ax.set_xlabel('Year'); ax.grid();
    

    runoff_vars = ['melt_off_glacier', 'melt_on_glacier', 'liq_prcp_off_glacier', 'liq_prcp_on_glacier']
    for i, temp_scenario in enumerate(temp_scenarios.keys()):
        df_runoff = ds_all[basin_id][temp_scenario][runoff_vars].sum(dim='rgi_id').median(dim='gcm_scenario').to_dataframe()
        df_runoff = df_runoff[runoff_vars]*1e-9
        fig, ax = plt.subplots(figsize=(10, 6));
        df_runoff.rolling(window=11, center=True).mean().loc['2020':'2095'].plot.area(ax=ax, color=sns.color_palette("rocket")); 
        plt.xlabel('Years'); plt.ylabel('Runoff (Mt)');
        plt.title(f'{temp_scenario} warming scenario for {basin_id.capitalize()} basin: {ds_all[basin_id][temp_scenario].glacierised_area_perc:.1f}% glacierized');
    
    fig,ax=plt.subplots(1,3,figsize=(18,4.5))
    fig.suptitle(f'Annual runoff: {basin_id.capitalize()} ({ds_all[basin_id][temp_scenario].glacierised_area_perc:.1f} % glacierized)')
    for i,temp_scenario in enumerate(temp_scenarios.keys()):
        monthly_median_runoff = ds_all[basin_id][temp_scenario].runoff_monthly.sum('rgi_id').median('gcm_scenario')
        monthly_median_runoff.rolling(time=11,center=True).mean().clip(0).loc['2020':'2095'].plot(ax=ax[i],cmap='Blues', cbar_kwargs={'label': 'Annual runoff (Mt)'}); plt.xlabel('Months'); plt.ylabel('Years');
        ax[i].set_title(f'{temp_scenario} warming')
    
    fig,ax=plt.subplots(1,3,figsize=(18,5))
    fig.suptitle(f'Annual cycle: {basin_id.capitalize()} basin ({ds_all[basin_id][temp_scenario].glacierised_area_perc:.1f} % glacierized)')
    for i,temp_scenario in enumerate(temp_scenarios.keys()):
        median = ds_all[basin_id][temp_scenario].runoff_monthly.sum('rgi_id').median('gcm_scenario') *1e-9
        q17 = ds_all[basin_id][temp_scenario].runoff_monthly.sum('rgi_id').quantile(0.17,'gcm_scenario') *1e-9
        q83 = ds_all[basin_id][temp_scenario].runoff_monthly.sum('rgi_id').quantile(0.83,'gcm_scenario') *1e-9
        median.sel(time=[2020, 2060, 2099]).plot(ax=ax[i],hue='time');
        ax[i].fill_between(ds_all[basin_id][temp_scenario].month_2d,q17.sel(time=2020),q83.sel(time=2020),alpha=0.3)
        ax[i].fill_between(ds_all[basin_id][temp_scenario].month_2d,q17.sel(time=2060),q83.sel(time=2060),alpha=0.3)
        ax[i].fill_between(ds_all[basin_id][temp_scenario].month_2d,q17.sel(time=2099),q83.sel(time=2099),alpha=0.3)
        ax[i].set_title(f'under {temp_scenario} warming');
        ax[i].set_xlabel('Month');
        ax[i].set_ylabel('Runoff (Mt)');
        ax[i].grid();
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Questions:
  • What do you observe when comparing the different scenarios within each basin?
  • Do the two basins react similarly or differently?
  • Can you identify any evidence of peak water?

Annual runoff projections under different climate scenarios

  • Djankuat Basin
    • until 2050, all scenarios show a similar decrease from 12.5 Mt per year to 11 Mt per year.
    • afterwards, the 1.5°C and 2.7°C scenarios stabilize, whereas the 4°C scenario decreases further to 10 Mt per year and only stabilizes around 2080.
    • the runoff timeseries does not have an increase at the start, indicating that 2020 may already be past peakwater for this basin.
    • the differences between the 2.7°C and 4°C scenario after 2050 cannot stem from glacier mass loss, which is comparable, therefore a shift towards more precipitation in the warmer scenario may be indicated.
  • Rofental Basin
    • scenarios exhibit differences in the first 20 years of the projection: while the 4°C scenario remains fairly constant and drops off after 2030, 1.5°C scenario increases until 2026 and then drops off, 2.7°C even more drastically so until 2028 before dropping off
    • this should be evidence that depending on the future climate, peak water occurs around now in the rofental basin.
    • for the following decade all scenraios converge to a decreasing trend, resulting in around 100 Mt runoff in 2050.
    • afterwards, the scenarios diverge slightly with the warmest declining faster, until at 2080 the two cooler scenarios stagnate at 90-95 Mt yr^-1, whereas the 4°C scenario drops off and finds an equilibrium at 80 Mt yr^-1 in 2090.

Shifts in the hydrological regime and annual peak runoff timing

  • Djankuat Basin
    • all 3 scenarios show a shift to earlier annual peak runoff: from late July to late June for 1.5°C and 2.7°C warming, and to early June for 4°C.
    • the 2d-plots show that at first August runoff decreases the most for all scenarios, then at around 2050, July runoff starts to push over into June for 2.7°C and 4°C scenarios, but not as strong in the 2.7°C scenario. For the 1.5°C scenario, this shift does not happen.
  • Rofental Basin
    • again, all 3 scenarios show a shift to earlier annual peak runoff, from August to July/June/late May for 1.5°C/2.7°C/4°C respectively.
    • from the 2d-plots it can be seen - similarly to how the transition at djankuat works - that first the later months in the ablation season reduce their runoff contribution, and then the other months subsequently follow.
    • here the shifts of August to July runoff occur between 2030 and 2040, more delayed for warmer scenarios. This shift between July and June occurs shortly thereafter for the warmer two scenarios, although less extreme in the 2.7°C case. For the warmest scenario, after 2080 the additional shift to even earlier runoff peaks starts.
    • overall the annual runoff cycle flattens out for rofental, stronger for warmer scenarios. For Djankuat, this phenomenon is there, but not as pronounced.

Contextualize your results with the literature¶

Task: Compare your findings with existing studies or reports. For each basin, find at least one relevant source from the scientific literature. Compare your results to those presented in the literature, and discuss any similarities or differences. Use the knowledge you have gained during the practical sessions, particularly about OGGM and how the data is generated, to help interpret and explain any contrasts between your findings and those in other studies.

Context and literature

Djankuat Basin

  • analysis shows a substantial decrease in glacier volume and area across all three temperature scenarios (1.5°C, 2.7°C and 4°C) from 2020 to 2100, with more dramatic losses under higher warming levels
  • aligns with Verhaegen et al. (2020) who modeled Djankuat Glacier evolution from 1752 to 2100 using a numerical flowline model:
    • continous retreat since the 1850s, with minor stabilization periods
    • projected glacier shrinkage of ~30% by 2100 under constant present-day climate conditions
    • even under extreme warming (RCP8.5), the glacier will not completely disappear due to supraglacial debris slowing retreat
  • comparison with our results:
    • our results extend this trend into the future using OGGM which dynamically simulates glacier mass and area changes based on temperature and precipitation inputs
    • glacier volume in the Djankuat basin is projected to decrease by more than 90%, nearly disappearing by 2100 under the 4°C scenario, this is steeper than historical observations which is expected due to future climate scenarios
    • differences may stem from OGGM's simplified glacier geometry which does not explicitly account for debris cover effects, potentially making real-world retreat more variable
  • analysis also suggests that peakwater has already been reached. Overall runoff levels will decline and a shift to earlier annual peak runoff of about a month is expected
  • aligns with Rets et al. (2020), who state that peakwater might have already occured around 2000:
    • compared to the preceeding 30 years, Djankuat glacier mass loss rate increased 7-fold in the period 1996-2017
    • peak runoff since 1945 has decreased by 0.6-4.4% and shifted 1-2 weeks earlier
    • trend in summer months showed a decrease for August runoff, but not for June/July
  • comparison with our results:
    • we also found that peakwater lies in the past for Djankuat basin, our projections now propagate the results further into the future
    • August runoffs will decrease further, and also July runoffs will start to decrease for the 2.7°C and 4°C scenarios
    • As a result of this shift, June (and for 4°C warming also May) runoff show an increase towards the end of the century

Rofental Basin

  • our model runs show significant glacier retreat, particularly under the 2.7°C and 4°C scenarios
  • this is consistent with Strasser et al. (2018) who analyzed 150 years of hydrometeorological and glaciological observations in the Rofental basin:
    • annual mass balance, glacier front variation, and flow velocities for glaciers like Hintereisferner, Kesselwandferner, and Vernagtferner
    • long-term monitoring of temperature, precipitation, and runoff confirming consistent glacier retreat
    • laser scanning data since 2001 showing accelerated glacier loss in recent decades
  • comparison with our results:
    • our simulations show sharp declines in glacier area and volume by 2100, aligning with previous studies
    • the OGGM-based results reinforce the robustness of projections, as they match trends from other modeling approaches
    • some variation may occur due to OGGM's idealized mass redistribution schemes and regional climate forcing, rather than downscaled local meteorology which could influence glacier sensitivity in complex alpine terrain
  • Hartl et al. (2025) projected glacier loss for the Ötztal and Stubai region, where Rofental is situated in:
    • for their three temperature scenarios of +1.5, +2 and +3°C warming, they find that only 20.7%, 14.9% and 11.2% of 2017 glacier volume exists by 2050 for the respective scenarios
    • for the end of the century, 2.7% / 0.4% / 0% of 2017 glacier volume is left.
  • comparison with our results:
    • we find less drastic declines in ice volume, for which the answer is given in their paper already: the missing regional forcing calibrated by local measurements leads to an underestimation of the actual glacier loss
  • also we expect peak water in the region to occur before 2030, with different timing and magnitude for the 3 scenarios analysed. After that, scenarios converge again until 2050, when warmer scenarios show a larger decline in annual runoff. The runoff peaks also shift about 1-2 months earlier, more for the warmer scenarios
  • Hanzer et al. (2018) study the future hydrology in the ötztal
    • they project a shift from summer to winter precipitation, along with enhanced warming in winter. As a result, snow water equivalent (swe) is expected to decline, especially in summer. -> shift of peak swe from april to march
    • a shift of annual peak runoff from July to June is expected, but no increase in net or peak annual runoff.
    • Their projections show that most of this shift occurs between 2040 and 2070, while no significant change is projected before 2040.
    • Runoff from ice melt is forecasted to decrease monotonically with a vanishing contribution to annual runoff by the end of the 21st century.
  • comparison with our results:
    • our findings agree with the shift to earlier peak runoff and decline in peak runoff, however 1.5°C and 2.7°C scenarios show increases in net annual runoff and peakwater in the 2020s.
    • the timing of the shift in the hydrological cycle corresponds good, maybe for us it is projected to begein slightly earlier.
    • Since our runoff is split into lquid precipitation and melt, whereas they use rainfall, snowmelt and ice melt, the proportion of ice melt of the total runoff cannot be inferred and compared from our simulations. Our simulations, however, exhibit a much higher contribution of rainfall in 2100. Although it is hard to pinpoint where exactly the difference comes from, a natural suspicion is the different hydrology model used (OGGM vs. AMUNDSEN).
In [ ]: