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 Alternatively, maybe you can find an alternative non-CMIP6 data source for this.