"Zostoga" Thermosteric Sea level rise geospatial gridded data product available?

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[0].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=6.2.3.0-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 :slightly_smiling_face: Alternatively, maybe you can find an alternative non-CMIP6 data source for this.