{ "cells": [ { "cell_type": "markdown", "id": "a36fd3c8-0c33-46a4-9583-02b4ee02d5d9", "metadata": {}, "source": [ "# Aggregate projections and error analysis" ] }, { "cell_type": "code", "execution_count": 2, "id": "271fac05-be93-4c0e-8b0b-1e8a5ff40e44", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2026-01-05 09:50:55: oggm.cfg: Reading default parameters from the OGGM `params.cfg` configuration file.\n", "2026-01-05 09:50:55: oggm.cfg: Multiprocessing switched OFF according to the parameter file.\n", "2026-01-05 09:50:55: oggm.cfg: Multiprocessing: using all available processors (N=32)\n", "2026-01-05 09:50:55: oggm.utils: Checking the download verification file checksum...\n" ] } ], "source": [ "from oggm import cfg, workflow, utils, shop\n", "import pandas as pd\n", "import os, glob\n", "import numpy as np\n", "import xarray as xr\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "sns.set_style(\"whitegrid\")\n", "\n", "cfg.initialize()\n", "\n", "import matplotlib\n", "matplotlib.rcParams['figure.figsize'] = (14, 8)\n", "import geopandas as gpd" ] }, { "cell_type": "code", "execution_count": 40, "id": "8f9ce697-2cbd-42fc-a775-f6b972033ac9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "215547" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(pd_geodetic)" ] }, { "cell_type": "code", "execution_count": 2, "id": "7c860fdd-35fe-4b4c-ac58-a18c794ae540", "metadata": {}, "outputs": [], "source": [ "pd_geodetic = utils.get_geodetic_mb_dataframe()[utils.get_geodetic_mb_dataframe().period=='2000-01-01_2020-01-01']\n", "# ok, connectivity level 2 glaciers are not inside ...\n", "rgis_05 = gpd.read_file(utils.get_rgi_region_file('05', version='62'))\n", "rgis_05_remove = rgis_05.loc[(rgis_05['Connect'] ==2)].RGIId.values\n", "assert len(np.intersect1d(pd_geodetic.index.values,rgis_05_remove)) == 0\n", "total_area = pd_geodetic.area.sum()\n", "total_counts = len(pd_geodetic)" ] }, { "cell_type": "markdown", "id": "4afd0dfb-81dc-4432-b0c9-55ee7c843735", "metadata": {}, "source": [ "# Get a list with the amount of failing glaciers and area for the different scenarios" ] }, { "cell_type": "code", "execution_count": 8, "id": "cda61ecf-616b-4561-899d-13070c20a8f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "10\n", "11\n", "12\n", "13\n", "14\n", "15\n", "16\n", "17\n", "18\n", "19\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_3702685/1437045573.py:42: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value 'True' has dtype incompatible with float64, please explicitly cast to a compatible dtype first.\n", " pd_working.loc[all_running_rgis, 'all_running_rgis'] = True\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "w5e5_bc_1975_2014_to_0_40_sim_year_starting_at_1979_glacier_state_from_0_sim_year_climate\n", "Amount of glaciers that run over the entire time period: 209846\n", "Relative percentage of glacier amount where all gcms and ssp could run over the entire time period: 97.36%\n", "Relative percentage of glacier area where all gcms and ssp could run over the entire time period: 99.46%\n" ] } ], "source": [ "scenarios = ['hist', # same model (UKESM1.2-LL) being forced through the CMIP historical forcing\n", " 'up2p0', # ramp-up phase\n", " 'up2p0-gwl2p0', # stabilisation at 2°C\n", " 'up2p0-gwl2p0-50y-dn2p0', # \"ramp-down\" from 2C stabilisation after 50 years'\n", " 'up2p0-gwl4p0', # stabilisation at 4C\n", " \"up2p0-gwl4p0-50y-dn2p0\", # \"ramp-down\" from 4C stabilisation after 50 years'\n", " #\"piControl\" # same model with pre-industrial forcing'\n", " ]\n", "bc = '_bc_1975_2014'\n", "b_clim = 'w5e5'\n", "\n", "pd_working = pd.DataFrame(index = pd_geodetic.index,\n", " columns=scenarios)\n", "# we will set those that are not running afterwards to np.NaN value\n", "pd_working.loc[pd_geodetic.index] = True\n", "pd_working['area'] = pd_geodetic.area\n", "pd_working['all_running_rgis'] = np.NaN\n", "pd_working['rgi_reg'] = pd_geodetic.reg\n", "for rgi_reg in np.arange(1,20,1): \n", " print(rgi_reg)\n", " if rgi_reg < 10:\n", " rgi_reg_s = f'0{rgi_reg}'\n", " else:\n", " rgi_reg_s = rgi_reg\n", " dpath = f'/home/www/lschuster/terrafirma_oggm_proj/output_dir/RGI{rgi_reg_s}'\n", " # amount of glaciers in that rgi region\n", " rgi_reg_glaciers = pd_working.loc[pd_working.rgi_reg==int(rgi_reg)].index\n", " for scen in scenarios: \n", " if scen == 'hist':\n", " opt = '_starting_at_1979_glacier_state_from_1975_sim_year_climate'\n", " else:\n", " opt = '_to_0_40_sim_year_starting_at_1979_glacier_state_from_0_sim_year_climate'\n", " #run_hydro_hc_era5_rgi62_gcm_from_2000_endyr2100_ISIMIP3b_mri-esm2-0_r1i1p1f1_ssp126_rgi01_7000_8000.nc\n", " with xr.open_mfdataset(f'{dpath}/run_terrafirma_UKESM1-2-LL_esm_{scen}{bc}{opt}_Batch_*.nc') as ds:\n", " ds = ds.volume.sel(time=1975).load()\n", " # make sure that all glaciers have been running\n", " assert len(ds.rgi_id.values) == len(rgi_reg_glaciers)\n", " rgis_error = list(set(rgi_reg_glaciers) - set(ds.dropna(dim='rgi_id').rgi_id.values))\n", " pd_working.loc[rgis_error, scen] = np.NaN\n", " ds.close()\n", "all_running_rgis = pd_working[scenarios].dropna().index\n", "pd_working.loc[all_running_rgis, 'all_running_rgis'] = True\n", "all_running_rel = len(all_running_rgis)*100/len(pd_geodetic)\n", "all_running_rel_area = pd_working.loc[all_running_rgis].area.sum()*100/pd_working.area.sum()\n", "print(f'{b_clim}{bc}{opt}')\n", "print(f'Amount of glaciers that run over the entire time period: {len(all_running_rgis)}')\n", "print(f'Relative percentage of glacier amount where all gcms and ssp could run over the entire time period: {all_running_rel:0.2f}%')\n", "print(f'Relative percentage of glacier area where all gcms and ssp could run over the entire time period: {all_running_rel_area:0.2f}%')\n", "#pd_rel_error_area_L5.to_csv('rel_error_area_statistics_for_oversh_stab_scenarios.csv')\n", "pd_working.to_csv(f'working_rgis_for_oggm_v163_terrafirma_ukesm_bclim{bc}_rgi62.csv') #opt\n" ] }, { "cell_type": "code", "execution_count": 27, "id": "30d8f469-9fe0-4525-a1a0-1f5fd84bdbc7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "Amount of glaciers that run over the entire time period: 26989\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 99.56%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.98%\n", "2\n", "Amount of glaciers that run over the entire time period: 17295\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 91.73%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.48%\n", "3\n", "Amount of glaciers that run over the entire time period: 4483\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 98.40%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.84%\n", "4\n", "Amount of glaciers that run over the entire time period: 7276\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 98.13%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.91%\n", "5\n", "Amount of glaciers that run over the entire time period: 18947\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 98.14%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.93%\n", "6\n", "Amount of glaciers that run over the entire time period: 567\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 99.82%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 100.00%\n", "7\n", "Amount of glaciers that run over the entire time period: 1460\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 90.40%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 96.95%\n", "8\n", "Amount of glaciers that run over the entire time period: 3273\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 95.79%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.48%\n", "9\n", "Amount of glaciers that run over the entire time period: 1062\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 99.35%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.96%\n", "10\n", "Amount of glaciers that run over the entire time period: 4766\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 92.53%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 95.61%\n", "11\n", "Amount of glaciers that run over the entire time period: 3889\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 99.03%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.93%\n", "12\n", "Amount of glaciers that run over the entire time period: 1526\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 80.83%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 90.79%\n", "13\n", "Amount of glaciers that run over the entire time period: 53439\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 98.18%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.45%\n", "14\n", "Amount of glaciers that run over the entire time period: 27647\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 98.78%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.79%\n", "15\n", "Amount of glaciers that run over the entire time period: 12933\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 98.58%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.49%\n", "16\n", "Amount of glaciers that run over the entire time period: 2864\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 97.45%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.44%\n", "17\n", "Amount of glaciers that run over the entire time period: 15677\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 98.55%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 99.64%\n", "18\n", "Amount of glaciers that run over the entire time period: 3536\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 99.97%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 100.00%\n", "19\n", "Amount of glaciers that run over the entire time period: 2217\n", "Relative percentage of glacier amount where all scenarios could run over the entire time period: 80.56%\n", "Relative percentage of glacier area where all scenarios could run over the entire time period: 98.78%\n" ] } ], "source": [ "for rgi_reg in np.arange(1,20,1): \n", " if rgi_reg < 10:\n", " rgi_reg_s = f'0{rgi_reg}'\n", " else:\n", " rgi_reg_s = rgi_reg\n", " pd_working = pd.read_csv(f'working_rgis_for_oggm_v163_terrafirma_ukesm_bclim{bc}_rgi62.csv', index_col='rgiid')\n", " pd_working_sel = pd_working.loc[pd_working.rgi_reg==int(rgi_reg)]\n", " all_running_rgis_reg = pd_working_sel[scenarios].dropna().index\n", " all_running_rel_reg = len(all_running_rgis_reg)*100/len(pd_working_sel)\n", " all_running_rel_area_reg = pd_working.loc[all_running_rgis_reg].area.sum()*100/pd_working_sel.area.sum()\n", " print(rgi_reg)\n", " print(f'Amount of glaciers that run over the entire time period: {len(all_running_rgis_reg)}')\n", " assert all_running_rel_reg > 80\n", " assert all_running_rel_area_reg>90\n", " print(f'Relative percentage of glacier amount where all scenarios could run over the entire time period: {all_running_rel_reg:0.2f}%')\n", " print(f'Relative percentage of glacier area where all scenarios could run over the entire time period: {all_running_rel_area_reg:0.2f}%')" ] }, { "cell_type": "markdown", "id": "5f9eebb7-6ff9-4950-9fe6-d09519cd530c", "metadata": {}, "source": [ "- in all regions minimum 90% of glacier area, and minimum 80% of glaciers did run for all scenarios (for all, except for RGI12, above 95% of area works)\n", "- in total, globally 99.5% of glacier area works and 97.4% of glaciers" ] }, { "cell_type": "code", "execution_count": null, "id": "49b01013-1267-4902-a6d0-376e75dd4ac3", "metadata": {}, "outputs": [], "source": [ "pd_working = pd.read_csv(f'working_rgis_for_oggm_v163_terrafirma_ukesm_bclim{bc}_rgi62.csv', index_col='rgiid')\n", "dfs = []\n", "for scen in scenarios: \n", " if scen == 'hist':\n", " opt = '_starting_at_1979_glacier_state_from_1975_sim_year_climate'\n", " else:\n", " opt = '_to_0_40_sim_year_starting_at_1979_glacier_state_from_0_sim_year_climate'\n", " df = []\n", " for rgi_reg in np.arange(1,20,1): \n", " if rgi_reg < 10:\n", " rgi_reg_s = f'0{rgi_reg}'\n", " else:\n", " rgi_reg_s = rgi_reg\n", " dpath = f'/home/www/lschuster/terrafirma_oggm_proj/output_dir/RGI{rgi_reg_s}'\n", " rgi_reg_glaciers = pd_geodetic.loc[pd_geodetic.reg==int(rgi_reg)].index\n", " rgi_reg_glaciers_working = pd_working.loc[pd_working.rgi_reg == int(rgi_reg)]['all_running_rgis'].dropna().index.values\n", " #run_hydro_hc_era5_rgi62_gcm_from_2000_endyr2100_ISIMIP3b_mri-esm2-0_r1i1p1f1_ssp126_rgi01_7000_8000.nc\n", " with xr.open_mfdataset(f'{dpath}/run_terrafirma_UKESM1-2-LL_esm_{scen}{bc}{opt}_Batch_*.nc') as ds:\n", " ds = ds[['volume','volume_bsl','area']].sel(rgi_id=rgi_reg_glaciers_working).load().sum(dim='rgi_id')\n", " #ds_area = ds.area.sel(rgi_id=rgi_reg_glaciers_working).load().sum()\n", " ds = ds.reset_coords()\n", " ds = ds.drop_vars(['hydro_year','hydro_month','calendar_month', 'calendar_year'])\n", " ds.coords['rgi_reg'] = rgi_reg_s\n", " ds = ds.expand_dims('rgi_reg')\n", " df.append(ds)\n", " df = xr.concat(df, dim='rgi_reg', fill_value=np.NaN)\n", " df.coords['scenario'] = scen\n", " df.coords['gcm'] = 'terrafirma_ukesm'\n", " df.coords['n_all_running_rgis'] = len(pd_working.index.values)\n", " dfs.append(df)\n", " print(scen)\n", "df_all_scenario = xr.concat(dfs, dim='scenario', fill_value=np.NaN)" ] }, { "cell_type": "markdown", "id": "b5b60b6b-e3d2-4eb3-aa3a-e075edf21e55", "metadata": {}, "source": [ "### Compute SLE since 1975 and save it as additional variable " ] }, { "cell_type": "code", "execution_count": 63, "id": "ee6f5890-5e5f-4f5b-b60f-31521f600001", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1.91762740e+13, 1.10928108e+12, 2.61374953e+13, 8.92136115e+12,\n", " 1.49684968e+13, 3.78715872e+12, 6.69398073e+12, 2.96313422e+11,\n", " 1.23704946e+13, 1.36031232e+11, 1.24292473e+11, 5.10827397e+10,\n", " 3.19209000e+12, 2.78125373e+12, 8.37448696e+11, 1.33278925e+11,\n", " 5.54703834e+12, 7.36944538e+10, 3.27195579e+13], dtype=float32)" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds_1975_volume_asl" ] }, { "cell_type": "code", "execution_count": 66, "id": "ca311613-d50f-4da8-a7db-191348e170d2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "335.84048\n" ] } ], "source": [ "### similarly done as in Schuster et al. (2025): \n", "# http://localhost:7269/lab/tree/www_lschuster/provide/gfdl-esm2m_oversh_stab_uni_bern/B_main_analysis_figure_creation/2a_fig_2_suppl_prcp.ipynb\n", "# sea level makes only sense globally probably\n", "df_all_scenario['volume_asl']= df_all_scenario['volume']-df_all_scenario['volume_bsl']\n", "# in 1975 (start of simluations), we just have one estimate, check this \n", "assert np.all(df_all_scenario.sel(time=1975).volume_asl.std(dim='scenario')/df_all_scenario.sel(time=1975).volume_asl.mean(dim='scenario')<0.001)\n", "ds_1975_volume_asl = df_all_scenario.sel(time=1975).volume_asl.mean(dim='scenario')\n", "# test when assuming that entire volume above sea level completely melts \n", "vol_asl_diff_1975 = ds_1975_volume_asl\n", "# convert m3 into sea-level equivalent \n", "A_ocean = 3.625 * 10**8 * 1e6 # km2 --> 1e6\n", "m_slr_all_1975_volume_lost = (vol_asl_diff_1975/A_ocean) *900/1028 # rhoice/rho_ocean\n", "mm_slr_all_1975_volume_lost = m_slr_all_1975_volume_lost * 1000\n", "### Farinotti et al 2019 states around 333mm in 2000, so around 336 in 1975 sounds reasonable... oK! \n", "# also note that this is the OGGM above sea-level estimates, thus can be different to the Farinotti et al. 2019 community estimate \n", "# (even if we would look at the same date, but here we also look at another date, i.e. 1975 and not the inventory year)\n", "print(mm_slr_all_1975_volume_lost.sum().values)\n", "## now compute slr from glacier melt from the various scenarios\n", "# in 2500, volume asl depends on scenario\n", "ds_volume_asl = df_all_scenario.volume_asl\n", "\n", "vol_asl_diff = vol_asl_diff_1975 - ds_volume_asl\n", "# convert m3 into sea-level equivalent \n", "m_slr = (vol_asl_diff/A_ocean) *900/1028 # rhoice/rho_ocean\n", "mm_slr = m_slr * 1000\n", "df_all_scenario['mm_slr_since_1975'] = mm_slr" ] }, { "cell_type": "code", "execution_count": 78, "id": "a76de0d2-ffd8-4b8a-920d-26e25b776739", "metadata": {}, "outputs": [], "source": [ "mm_slr_global_since_1975 = df_all_scenario['mm_slr_since_1975'].sum(dim='rgi_reg') " ] }, { "cell_type": "code", "execution_count": 81, "id": "0718b42e-4b9d-4f4b-9f49-05f0ce615bd5", "metadata": {}, "outputs": [], "source": [ "assert np.all(mm_slr_global_since_1975 >-2)\n", "# the total glacier slr contribution since 1975 should be less than if all glaciers melted away (assuming 1975 volume)\n", "assert np.all(mm_slr_global_since_1975< mm_slr_all_1975_volume_lost.sum())" ] }, { "cell_type": "code", "execution_count": 84, "id": "39b51c5b-0a44-4ee6-9d7b-870ea6264ac7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(310.04666138)" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mm_slr_global_since_1975.max().values" ] }, { "cell_type": "markdown", "id": "9c22376b-48cc-4d7a-9765-073540071c31", "metadata": {}, "source": [ "## Add some attributes to the netCDF file" ] }, { "cell_type": "code", "execution_count": 107, "id": "24eb4c5a-27c9-42ac-a8b6-32d58d6bc936", "metadata": {}, "outputs": [], "source": [ "df_all_scenario = df_all_scenario.drop_vars('volume_asl')" ] }, { "cell_type": "code", "execution_count": 6, "id": "17553c3b-7557-4150-91ad-203343780e0e", "metadata": {}, "outputs": [], "source": [ "df_all_scenario.attrs['OGGM_version'] = 'oggm_v163'\n", "df_all_scenario.attrs['RGI_version'] = 'rgiv62'\n", "\n", "df_all_scenario.attrs['info'] = \"\"\"Reanalysis dataset used for calibration: W5E5.\n", "Bias correction period: 1975–2014, applied from W5E5 to up2p0 simulation years 0–39.\n", "Simulations were initialized using the 1979 glacier state from the dynamical spinup\n", "\"\"\"\n", "\n", "df_all_scenario.attrs['time_validity'] = \"\"\"All variables describe the state at the beginning of the given year.\n", "For all \"up2p0\"-related scenarios, the time variable was shifted to start in 1975 instead of 1850, to match the adjusted climate period more realistically.\n", "For the \"hist\"-scenario, we start in the original 1975 year. \n", "\"\"\"\n", "\n", "df_all_scenario.attrs['rgi_reg_info'] = 'sum over all rgi_reg to get global estimates'\n", "df_all_scenario.volume.attrs['unit'] = 'm3'\n", "df_all_scenario.area.attrs['unit'] = 'm2'\n", "df_all_scenario.mm_slr_since_1975.attrs['unit'] = 'mm sea-level rise since 1975 from glaciers'\n", "df_all_scenario.volume_bsl.attrs['unit'] = 'm3' \n", "df_all_scenario.volume_bsl.attrs['info'] = 'Regional glacier volume below sea-level from all glaciers that did not fail for any of the scenarios (>99.5% of global glacier area)'\n", "df_all_scenario.volume.attrs['info'] = 'Regional total glacier volume from all glaciers that did not fail for any of the scenarios (>99.5% of global glacier area)'\n", "df_all_scenario.area.attrs['info'] = 'Regional total glacier area from all glaciers that did not fail for any of the scenarios (>99.5% of global glacier area)'\n", "\n", "df_all_scenario.mm_slr_since_1975.attrs['info'] = \"\"\"\n", "Sea-level rise contribution from glaciers.\n", "Same approach as in Schuster et al. (2025).\n", "\n", "Steps:\n", "1. df_all_scenario['volume_asl'] = df_all_scenario['volume'] - df_all_scenario['volume_bsl']\n", "2. ds_1975_volume_asl = df_all_scenario.sel(time=1975).volume_asl.mean(dim='scenario')\n", "2. A_ocean = 3.625e8 * 1e6 # km² --> m²\n", "3. vol_asl_diff = ds_1975_volume_asl - df_all_scenario['volume_asl'] # compute difference relative to 1975\n", "4. m_slr = (vol_asl_diff / A_ocean) * 900 / 1028 # convert volume to m sea-level rise\n", "5. mm_slr = m_slr * 1000 # convert meters to millimeters\n", "\"\"\"\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "39b24350-3186-4ffa-afa3-2633101b0877", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset> Size: 1MB\n",
"Dimensions: (scenario: 6, rgi_reg: 19, time: 696)\n",
"Coordinates:\n",
" * scenario (scenario) <U22 528B 'hist' ... 'up2p0-gwl4p0-50y-dn2p0'\n",
" * rgi_reg (rgi_reg) <U2 152B '01' '02' '03' ... '17' '18' '19'\n",
" * time (time) float64 6kB 1.975e+03 1.976e+03 ... 2.67e+03\n",
" gcm <U16 64B ...\n",
" n_all_running_rgis int64 8B ...\n",
"Data variables:\n",
" volume (scenario, rgi_reg, time) float32 317kB ...\n",
" volume_bsl (scenario, rgi_reg, time) float32 317kB ...\n",
" area (scenario, rgi_reg, time) float32 317kB ...\n",
" mm_slr_since_1975 (rgi_reg, scenario, time) float32 317kB ...\n",
"Attributes:\n",
" OGGM_version: oggm_v163\n",
" RGI_version: rgiv62\n",
" info: Reanalysis dataset used for calibration: W5E5.\\nBias corr...\n",
" time_validity: All variables describe the state at the beginning of the ...\n",
" rgi_reg_info: sum over all rgi_reg to get global estimates<xarray.Dataset> Size: 2MB\n",
"Dimensions: (scenario: 6, rgi_reg: 19, time: 696)\n",
"Coordinates:\n",
" * scenario (scenario) <U22 528B 'hist' ... 'up2p0-gwl4p0-50y-dn2p0'\n",
" * rgi_reg (rgi_reg) <U21 2kB '01' '02' '03' ... '17' '18' '19'\n",
" * time (time) float64 6kB 1.975e+03 1.976e+03 ... 2.67e+03\n",
" gcm <U16 64B 'terrafirma_ukesm'\n",
" n_all_running_rgis int64 8B 215547\n",
"Data variables:\n",
" volume (scenario, rgi_reg, time) float32 317kB 2.01e+13 ... nan\n",
" volume_bsl (scenario, rgi_reg, time) float32 317kB 9.272e+11 ......\n",
" area (scenario, rgi_reg, time) float32 317kB 8.744e+10 ......\n",
" volume_asl (scenario, rgi_reg, time) float32 317kB 1.918e+13 ......\n",
" mm_slr_since_1975 (rgi_reg, scenario, time) float32 317kB 0.0 ... nan"
],
"text/plain": [
"