Hello, I am using the intake-esm library to access CMIP6 data which to my understanding accesses the Pangeo data catalogue on google to make Climate Model data available. This has worked great so far, but I am interested specifically in the “Zostoga” variable for thermosteric sea level rise, however, it only seems to be available as a globally averaged product. I was wondering if someone here knew where I could obtain a gridded data product that shows thermosteric sea level rise, since this must be something that CMIP6 models are outputting at a spatial resolution. Thanks in advance.
Made this tutorial last year to get the
zos variable at Accessing remote data stored on the cloud. Maybe give that a try to see if you can adapt it? You’ll need to choose from several CMIP6 scenarios/models though. Not quite sure what you mean by globally averaged product, but did you want a monthly time-series at some spatial resolution (1 arc degree), or some other spatiotemporal resolution?
I am able to access “zos” data out of the box, however, that variable includes other processes not just thermosteric sea level change. Hence, I was wondering if there is a gridded spatial 2D product at some resolution that shows thermosteric sea level change and not like the “zostoga” which just gives a global average per timestep.
Right, so I just looked up the variable_id spreadsheet at CMIP6 Variables - Google Sheets, and
zostoga stands for Global Average Thermosteric Sea Level Change [m], i.e. one value for the whole world per month. Can confirm this with the following code:
# Adapted from https://tutorial.xarray.dev/intermediate/cmip6-cloud.html import pandas as pd import gcsfs import xarray as xr df = pd.read_csv("https://cmip6.storage.googleapis.com/pangeo-cmip6.csv") df_zostoga = df.query("variable_id == 'zostoga' & experiment_id == 'ssp585'") print(df_zostoga.iloc.zstore) fs = gcsfs.GCSFileSystem(token="anon") store = fs.get_mapper( "gs://cmip6/CMIP6/ScenarioMIP/CNRM-CERFACS/CNRM-CM6-1/ssp585/r1i1p1f2/Omon/zostoga/gn/v20190219/" ) ds = xr.open_zarr(store=store, consolidated=True) ds
produces this result with no spatial dimensions, only time.
<xarray.Dataset> Dimensions: (time: 1032, axis_nbounds: 2) Coordinates: sector |S255 ... * time (time) datetime64[ns] 2015-01-16T12:00:00 ... 2100-12-16T12:... time_bounds (time, axis_nbounds) datetime64[ns] ... Dimensions without coordinates: axis_nbounds Data variables: zostoga (time) float32 ... Attributes: (12/54) CMIP6_CV_version: cv=18.104.22.168-7-g2019642 Conventions: CF-1.7 CMIP-6.2 EXPID: CNRM-CM6-1_ssp585_r1i1p1f2 activity_id: ScenarioMIP arpege_minor_version: 6.3.2 branch_method: standard ... ... variable_id: zostoga variant_label: r1i1p1f2 xios_commit: 1442-shuffle status: 2019-10-25;created;by ...@columbia.edu netcdf_tracking_ids: hdl:21.14100/fc5b6e68-b2e2-4260-b4ca-ce27a1c0c502 version_id: v20190219
So I’d ask the question: Why do you want to get this thermosteric spatial data from CMIP6 actually? Given that the thermosteric component of sea level rise is usually a small percentage of sea level rise (compared to changes in ocean water mass due to melting glaciers, etc), is there a specific reason you want this variable?
Considering that thermosteric sea level rise is a function of temperature, you could probably work it out with the
tos (Sea Surface Temperature [degC]) variable somehow that does have spatial lon/lat fields, but best to ask a proper sea level scientist Alternatively, maybe you can find an alternative non-CMIP6 data source for this.