OceanDataCatalog | NOC Near-Present Day¶
About¶
This Notebook demonstrates how to use the OceanDataCatalog API to explore the Near-Present-Day global ocean sea-ice simulations developed by the National Oceanography Centre as part of the Atlantic Climate and Environment Strategic Science (AtlantiS) programme.
from OceanDataStore import OceanDataCatalog
- Create an instance of the OceanDataCatalog class to access the National Oceanography Centre ocean model Spatio-Temporal Access Catalog (
noc-stac):
catalog = OceanDataCatalog(catalog_name="noc-stac")
- Let's use the
available_collectionsproperty to return the names (IDs) of all available dataset collections in thenoc-stac:
catalog.available_collections
['noc-rapid-evolution', 'noc-npd-jra55', 'noc-npd-era5', 'nsidc', 'woa23', 'oisst', 'en4.2.2', 'armor3d', 'hadisst', 'era5', 'ostia']
- Let's use the
.search()method to search the Near-Present Day ERA-5 collection for all ocean model outputs including the sea surface temperature (SST) standard variable name:
catalog.search(collection='noc-npd-era5', standard_name='sea_surface_temperature')
| Item ID | Title | Platform | Start Date | End Date | Variables |
|---|---|---|---|---|---|
| noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/T1y | NPD eORCA1 ERA5v1 T1y | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 74 variablesberg_latent_heat_flux evs deptht_bounds fsitherm friver ficeberg e3t hfds empmr hfls hflx_rnf hfss hfns hfempds mlotst hfsr mlotstmax hfrainds hfevapds mlotstmin ocontemptend ocontempadvect ocontempmint ocontemppmdiff osaltdiff osaltpmdiff pbo osaltadvect rsdoabsorb ocontempdiff rsdo rlntds prsn osalttend mlotstsq hfto rsntds so_abs somint_abs sbt_con snowpre soicecov sohfcisf sohflisf sfdsi snow_ai_cea sbs_abs somixhgt somxl010 somxzint1 sowindsp sossq_abs sowaflup sowflisf sos_abs sosafldo strd_atf_li strd_bbl_li strd_evd_li time_centered_bounds thetao_con ttrd_atf_li tossq_con vohfcisf tos_con ttrd_qns_li ttrd_bbl_li time_counter_bounds zossq zos tnpeo vohflisf vowflisf ttrd_evd_li |
| noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/T1m | NPD eORCA1 ERA5v1 T1m | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 74 variablesberg_latent_heat_flux deptht_bounds e3t friver hfds evs ficeberg fsitherm hfevapds hfsr hfempds empmr hfls hfns hfss hfrainds hflx_rnf ocontempmint mlotstmax mlotst mlotstmin mlotstsq hfto osaltdiff ocontempdiff ocontempadvect osaltadvect osaltpmdiff ocontemptend osalttend ocontemppmdiff pbo rlntds sfdsi rsdo rsdoabsorb sbt_con rsntds prsn snowpre soicecov somxzint1 sohflisf sohfcisf sbs_abs somixhgt somxl010 somint_abs snow_ai_cea so_abs sos_abs sowaflup sowflisf sowindsp strd_atf_li strd_bbl_li sosafldo sossq_abs tossq_con time_counter_bounds ttrd_atf_li tnpeo thetao_con time_centered_bounds strd_evd_li tos_con ttrd_evd_li vowflisf zos zossq ttrd_bbl_li vohflisf vohfcisf ttrd_qns_li |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/T1y_3d | NPD eORCA025 ERA5v1 T1y_3d | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 51 variableshfls empmr evs friver hfds hfempds fsitherm ficeberg berg_latent_heat_flux hfevapds hfss hfto mlotstmin mlotst mlotstsq hfns hflx_rnf ocontempmint rsntds hfrainds hfsr rlntds prsn mlotstmax pbo sfdsi sbt_con snow_ai_cea sbs_abs sohfcisf snowpre soicecov sohflisf sossq_abs sowindsp somxzint1 sowaflup sowflisf somixhgt somint_abs somxl010 sos_abs time_centered_bounds tos_con tossq_con sosafldo tnpeo zos ttrd_qns_li time_counter_bounds zossq |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/T1m_3d | NPD eORCA025 ERA5v1 T1m_3d | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 51 variablesberg_latent_heat_flux evs fsitherm hfevapds friver hfls ficeberg empmr hfds hfempds hfss mlotstmin hfsr mlotst hfrainds mlotstsq mlotstmax hflx_rnf hfns rlntds hfto pbo prsn ocontempmint sbs_abs soicecov somint_abs sfdsi sohfcisf sohflisf sbt_con snowpre rsntds snow_ai_cea sos_abs sosafldo sossq_abs sowindsp somxzint1 somixhgt sowaflup sowflisf somxl010 time_centered_bounds tnpeo zos ttrd_qns_li zossq time_counter_bounds tossq_con tos_con |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/T5d_3d | NPD eORCA025 ERA5v1 T5d_3d | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 50 variableshfls hfevapds hfds hfempds berg_latent_heat_flux evs fsitherm ficeberg empmr hfrainds hfss hfsr friver mlotstmax mlotstmin hfto hflx_rnf hfns mlotst mlotstsq sbt_con ocontempmint rlntds pbo sfdsi rsntds snow_ai_cea sohfcisf sbs_abs prsn soicecov snowpre somixhgt sohflisf somint_abs sosafldo sowflisf sossq_abs sowaflup time_centered_bounds sos_abs sowindsp somxl010 somxzint1 tos_con time_counter_bounds zossq tnpeo zos tossq_con |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/T1y_3d | NPD eORCA12 ERA5v1 T1y_3d | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 50 variableshfls empmr evs fsitherm ficeberg hfevapds hfempds berg_latent_heat_flux friver hfds hfto hflx_rnf hfns mlotst mlotstsq hfrainds hfss hfsr rsntds mlotstmin sfdsi prsn mlotstmax rlntds sbt_con sbs_abs snowpre sohflisf sohfcisf snow_ai_cea somint_abs soicecov somixhgt somxzint1 ocontempmint somxl010 pbo sos_abs sowindsp sowaflup time_counter_bounds sosafldo sossq_abs sowflisf time_centered_bounds tnpeo tos_con zos tossq_con zossq |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/T1m_3d | NPD eORCA12 ERA5v1 T1m_3d | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 50 variableshfempds empmr evs friver hfevapds fsitherm hfds berg_latent_heat_flux hfls hflx_rnf hfrainds hfns hfsr mlotst mlotstmax ficeberg prsn ocontempmint mlotstmin pbo hfss mlotstsq snow_ai_cea rsntds sbs_abs sohfcisf rlntds sbt_con sfdsi snowpre hfto sohflisf sosafldo sowaflup sowflisf somxl010 time_centered_bounds soicecov somixhgt somxzint1 somint_abs sos_abs sowindsp sossq_abs time_counter_bounds zossq tos_con tossq_con zos tnpeo |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/T5d | NPD eORCA12 ERA5v1 T5d | gn | 1990-01-01T00:00:00Z | 2024-12-31T00:00:00Z | 16 variablesbathymetry e1t hfds e3t_0 e2t tmask sos_abs thetao_con tmaskutil wfo siconc tos_con mlotst so_abs sithick zos |
- Now that we have performed a
searchoperation on our catalog, we can also use theavailable_itemsproperty to return the names (IDs) of the available STAC Items resulting from our search.
catalog.available_items
['noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/T1y', 'noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/T1m', 'noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/T1y_3d', 'noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/T1m_3d', 'noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/T5d_3d', 'noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/T1y_3d', 'noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/T1m_3d', 'noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/T5d']
- To view a STAC Item in detail, we can pass the Item ID to the
.item_summary()method.
catalog.item_summary(id='noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/T1y')
| Title | Description |
|---|---|
| NPD eORCA1 ERA5v1 T1y | Annual mean global ocean scalar outputs defined at T-points. |
catalog.open_dataset(id='noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/T1y') catalog.open_repo(id='noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/T1y') | Property | Value |
|---|---|
| dataset_type | model |
| product_type | timeseries |
| product_version | 1.0 |
| institution | National Oceanography Centre, UK |
| citation | Blaker, A. T., Tooth, O. J., PalmiƩri, J., Coward, A. C., and Mecking, J. (2025). NOC-MSM/NOC_Near_Present_Day: v0.9.0 (v0.9.0). Zenodo. https://doi.org/10.5281/zenodo.15310354. |
| acknowledgement | NOC Near-Present Day Documentation available at: https://noc-msm.github.io/NOC_Near_Present_Day/ |
| license | UK Open Government License v3.0 |
| doi | pending |
| horizontal_grid_type | curvilinear |
| horizontal_grid_resolution | 1 degree |
| vertical_grid_type | zps |
| vertical_grid_coordinate | depth with partial step topography |
| vertical_grid_levels | 75 |
| dimensions | 5 itemstime_counter y x deptht axis_nbounds |
| variables | 74 itemsberg_latent_heat_flux evs deptht_bounds fsitherm friver ficeberg e3t hfds empmr hfls hflx_rnf hfss hfns hfempds mlotst hfsr mlotstmax hfrainds hfevapds mlotstmin ocontemptend ocontempadvect ocontempmint ocontemppmdiff osaltdiff osaltpmdiff pbo osaltadvect rsdoabsorb ocontempdiff rsdo rlntds prsn osalttend mlotstsq hfto rsntds so_abs somint_abs sbt_con snowpre soicecov sohfcisf sohflisf sfdsi snow_ai_cea sbs_abs somixhgt somxl010 somxzint1 sowindsp sossq_abs sowaflup sowflisf sos_abs sosafldo strd_atf_li strd_bbl_li strd_evd_li time_centered_bounds thetao_con ttrd_atf_li tossq_con vohfcisf tos_con ttrd_qns_li ttrd_bbl_li time_counter_bounds zossq zos tnpeo vohflisf vowflisf ttrd_evd_li |
| variable_standard_names | 74 itemslatent_heat_flux_from_icebergs water_evaporation_flux deptht_bounds fsitherm water_flux_into_sea_water_from_rivers water_flux_into_sea_water_from_icebergs cell_thickness ocean_surface_downward_total_heat_flux water_flux_out_of_sea_ice_and_sea_water ocean_surface_downward_latent_heat_flux temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water ocean_surface_downward_sensible_heat_flux surface_net_downward_non_solar_heat_flux ocean_surface_downward_heat_flux_from_E-P ocean_mixed_layer_thickness_defined_by_sigma_theta surface_net_downward_solar_heat_flux ocean_mixed_layer_thickness_defined_by_sigma_theta temperature_flux_due_to_rain_expressed_as_heat_flux_into_sea_water temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water ocean_mixed_layer_thickness_defined_by_sigma_theta ocontemptend ocontempadvect integral_wrt_depth_of_product_of_density_and_conservative_temperature ocontemppmdiff osaltdiff osaltpmdiff sea_water_pressure_at_sea_floor osaltadvect rsdoabsorb ocontempdiff downwelling_shortwave_flux_in_sea_water ocean_surface_net_downward_longwave_heat_flux snowfall_flux osalttend square_of_ocean_mixed_layer_thickness_defined_by_sigma_theta surface_net_downward_total_heat_flux ocean_surface_net_downward_shortwave_heat_flux sea_water_absolute_salinity integral_wrt_depth_of_product_of_density_and_absolute_salinity sbt_con snowfall_flux sea_ice_area_fraction downward_sea_ice_basal_salt_flux snowfall_flux sbs_abs ocean_mixed_layer_thickness_defined_by_vertical_tracer_diffusivity ocean_mixed_layer_thickness_defined_by_sigma_theta ocean_mixed_layer_thickness_defined_by_sigma_theta wind_speed square_of_sea_surface_Salinity water_flux_out_of_sea_ice_and_sea_water sea_surface_salinity salt_flux_into_sea_water strd_atf_li strd_bbl_li strd_evd_li time_centered_bounds sea_water_conservative_temperature ttrd_atf_li square_of_sea_surface_temperature sea_surface_temperature ttrd_qns_li ttrd_bbl_li time_counter_bounds square_of_sea_surface_height_above_geoid sea_surface_height_above_geoid tnpeo ttrd_evd_li |
| aggregation | mean |
| aggregation_frequency | annual |
| status | ongoing |
| update_frequency | quarterly |
| latest_data_update | 2026-06-29T10:07:29.282842 |
| variant | r1i1c1f1 |
| ocean_component | NEMO v4.2.2 |
| sea_ice_component | SI3 v4.0 |
| biogeochemistry_component | None |
| atmosphere_component | ā |
| atmospheric_forcing | ERA5 v1 |
| Key | Media Type | Endpoint | Bucket | Prefix |
|---|---|---|---|---|
| T1y | application/vnd.zarr+icechunk | https://noc-msm-o.s3-ext.jc.rl.ac.uk | npd-eorca1-era5v1 | T1y |
Alternatively, we can explore the first Item in our search results by accessing the
Itemattribute of the catalog. This Item corresponds to the annual-mean T-grid variables output by the 1-degree NPD eORCA1 ERA5v1 simulation.By looking in
properties/variable_standard_names, we can see that 'sea_surface_temperature' is the 59th variable in this dataset and is namedtos_con.
catalog.Items[0]
Next, let's open a subset (1980-1990) of the annual-mean SST data as an
xarray.Datasetby using the.open_dataset()method and specifying start and end date strings.Here, we use the
.idattribute of our first Item, but we could have also copied theidstring from above.
ds = catalog.open_dataset(id=catalog.Items[0].id,
start_datetime='1980-01',
end_datetime='1990-12',
)
ds
<xarray.Dataset> Size: 9GB
Dimensions: (time_counter: 11, y: 331, x: 360, deptht: 75,
axis_nbounds: 2)
Coordinates:
* time_counter (time_counter) datetime64[ns] 88B 1980-07-02 ... 1...
time_centered (time_counter) datetime64[ns] 88B dask.array<chunksize=(1,), meta=np.ndarray>
nav_lat (y, x) float64 953kB dask.array<chunksize=(331, 360), meta=np.ndarray>
nav_lon (y, x) float64 953kB dask.array<chunksize=(331, 360), meta=np.ndarray>
* deptht (deptht) float32 300B 0.5058 1.556 ... 5.902e+03
Dimensions without coordinates: y, x, axis_nbounds
Data variables: (12/74)
berg_latent_heat_flux (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
friver (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
fsitherm (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
empmr (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
deptht_bounds (deptht, axis_nbounds) float32 600B dask.array<chunksize=(25, 2), meta=np.ndarray>
e3t (time_counter, deptht, y, x) float32 393MB dask.array<chunksize=(1, 25, 331, 360), meta=np.ndarray>
... ...
vohfcisf (time_counter, deptht, y, x) float32 393MB dask.array<chunksize=(1, 25, 331, 360), meta=np.ndarray>
tossq_con (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
zos (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
zossq (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
vowflisf (time_counter, deptht, y, x) float32 393MB dask.array<chunksize=(1, 25, 331, 360), meta=np.ndarray>
ttrd_qns_li (time_counter, y, x) float32 5MB dask.array<chunksize=(1, 331, 360), meta=np.ndarray>
Attributes: (12/32)
name: OUTPUT/eORCA1_ERA5_1y_grid_T
description: NOC Near-Present Day annual mean global ocea...
title: National Oceanography Centre Near-Present Da...
Conventions: CF-1.6
timeStamp: 2026-Mar-24 13:59:28 GMT
uuid: c54f54b1-bc06-49fe-9e9a-a56d46c8bbd5
... ...
ocean_component: NEMO v4.2.2
sea_ice_component: SI3 v4.0
biogeochemistry_component: None
atmospheric_component: None
atmospheric_forcing: ERA5 v1
variant: r1i1c1f1- Finally, let's create a plot of the time-mean (1980-1990) SST for the globe:
Pre-Calculated Diagnostics¶
So far, we have seen how to access NPD ocean model variables (e.g., temperature, salinity and velocities) defined on their native NEMO model grid.
In addition to these variables, we can also access a range of pre-calculated diagnostics, such as the meridional overturning, heat and freshwater transports across the following trans-basin sections:
- Overturning in the Subpolar North Atlantic Program (OSNAP) array
- Rapid Climate Change-Meridional Overturning Circulation and Heatflux Array (RAPID-MOCHA) at 26.5°N
- Meridional Overturning Variability Experiment (MOVE) array at 16°N
- South Atlantic Meridional overturning circulation Basin-wide Array (SAMBA) array at 34.5°S
These diagnostics are calculated using the Meridional ovErTurning ciRculation diagnostIC (METRIC) package.
Next, let's see how we can access these diagnostics by searching the
OceanDataCatalogfor any Items with identifiers containing the key word "M1m", which corresponds to monthly mean outputs defined on transects on the native NEMO model grid:
catalog.search(collection='noc-npd-era5', item_name='M1m')
| Item ID | Title | Platform | Start Date | End Date | Variables |
|---|---|---|---|---|---|
| noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/M1m/MOVE_16N | NPD eORCA1 ERA5v1 M1m/MOVE_16N | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 34 variablesdh dz dx fw_model fw_move moc_model q_bdry fw_int_model fw_bdry q_model q_move moc_move q_int_model q_int rho t_move fw_int s_bdry_fwt t_bdry_fwt s_int s_move temp t_int salt v trans_bdry v_bdry vgeo v_move trans_int_model v_int_model v_int trans_int v_model |
| noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/M1m/SAMBA_34_5S | NPD eORCA1 ERA5v1 M1m/SAMBA_34_5S | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 58 variablesdh dx fw_gyre_samba fw_ebw fw_ek ebw ekman fw_gyre_model fw_eddy dz fw_geoint fw_mo fw_net_samba fw_sum_model fw_ot_samba int_mod mocmax_samba moc_model fw_sum_samba fw_ot_model moc_samba mocmax_model fw_wbw fw_net_model geoint q_geoint q_net_samba q_gyre_samba q_ebw q_ek q_gyre_model q_eddy q_mo q_net_model q_ot_model q_sum_model sf_ebw sf_int_mod q_sum_samba s_basin sf_geoint q_ot_samba sf_samba sf_wbw rho sf_ek salt sf_model sf_mo q_wbw v_basin_samba temp wbw v v_basin_model umo t_basin vgeo |
| noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/M1m/RAPID_26N | NPD eORCA1 ERA5v1 M1m/RAPID_26N | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 62 variablesdh ekman fw_geoint fw_gyre_model fw_net_model fc fw_gyre_rapid dz fw_ek dx fw_mo fw_eddy fw_fc fw_wbw geoint fw_sum_model fw_net_rapid fw_ot_model int_mod moc_model fw_ot_rapid moc_rapid mocmax_rapid mocmax_model q_geoint q_eddy fw_sum_rapid q_mo mass_balance q_gyre_rapid q_ek q_net_rapid q_ot_model q_ot_rapid q_net_model q_fc q_gyre_model q_sum_rapid s_basin salt sf_fc q_sum_model rho q_wbw sf_ek sf_geoint s_fc_fwt sf_int_mod t_fc_fwt sf_rapid t_basin temp umo sf_mo sf_wbw v v_basin_rapid vgeo v_basin_model wbw v_fc sf_model |
| noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/M1m/OSNAP | NPD eORCA1 ERA5v1 M1m/OSNAP | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 14 variablesflux_dir j_bdy e1b i_bdy e3b flux_type thetao_con sigma0 moc_total moc_west moc_east so_abs velocity volume_transport |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/M1m/MOVE_16N | NPD eORCA025 ERA5v1 M1m/MOVE_16N | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 34 variablesfw_int dx moc_move dh fw_int_model fw_move fw_bdry fw_model dz moc_model q_int rho q_int_model t_int s_bdry_fwt salt q_model q_move q_bdry s_int s_move t_bdry_fwt trans_int v_int v_bdry t_move trans_bdry v_int_model trans_int_model v temp vgeo v_move v_model |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/M1m/SAMBA_34_5S | NPD eORCA025 ERA5v1 M1m/SAMBA_34_5S | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 58 variablesdh ebw fw_ebw fw_ek fw_eddy dz dx ekman fw_gyre_model fw_geoint fw_sum_model geoint fw_ot_model fw_gyre_samba fw_wbw fw_net_model fw_sum_samba fw_net_samba fw_ot_samba fw_mo q_eddy q_gyre_model q_geoint mocmax_samba q_ek int_mod q_gyre_samba q_ot_model q_ebw moc_model mocmax_model q_ot_samba rho q_mo q_sum_samba q_net_model q_wbw moc_samba sf_ek salt sf_ebw sf_geoint q_net_samba sf_int_mod s_basin q_sum_model sf_wbw temp sf_mo umo vgeo t_basin v v_basin_model sf_samba v_basin_samba wbw sf_model |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/M1m/RAPID_26N | NPD eORCA025 ERA5v1 M1m/RAPID_26N | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 62 variablesdh dx dz fc fw_fc fw_gyre_model fw_eddy fw_ek ekman fw_geoint fw_gyre_rapid fw_mo fw_net_model fw_net_rapid fw_sum_rapid fw_sum_model fw_ot_rapid fw_ot_model fw_wbw moc_rapid moc_model q_ek q_gyre_rapid q_fc mocmax_rapid geoint q_gyre_model mass_balance q_eddy q_geoint int_mod mocmax_model q_net_model q_ot_rapid rho q_net_rapid q_mo q_ot_model s_basin q_sum_model q_wbw sf_model sf_ek sf_mo s_fc_fwt salt q_sum_rapid sf_fc sf_geoint sf_int_mod sf_wbw v temp sf_rapid t_basin umo v_basin_rapid v_basin_model vgeo wbw v_fc t_fc_fwt |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/M1m/OSNAP | NPD eORCA025 ERA5v1 M1m/OSNAP | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 14 variablese1b flux_dir j_bdy i_bdy e3b flux_type moc_west thetao_con moc_total so_abs moc_east sigma0 velocity volume_transport |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/M1m/MOVE_16N | NPD eORCA12 ERA5v1 M1m/MOVE_16N | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 34 variablesdh fw_bdry fw_int_model moc_model dx fw_model fw_int dz fw_move moc_move rho q_int_model q_move s_bdry_fwt q_bdry s_int q_model q_int s_move t_int salt t_bdry_fwt temp t_move trans_int_model trans_int trans_bdry v_int v_model v_move vgeo v_bdry v v_int_model |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/M1m/SAMBA_34_5S | NPD eORCA12 ERA5v1 M1m/SAMBA_34_5S | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 58 variablesdh ebw fw_gyre_samba fw_mo fw_eddy dx ekman fw_geoint fw_ebw fw_ek fw_gyre_model dz fw_ot_samba fw_sum_samba fw_sum_model fw_net_model moc_model fw_wbw int_mod geoint fw_net_samba fw_ot_model q_gyre_model mocmax_model q_eddy q_ebw moc_samba q_mo mocmax_samba q_geoint q_ek q_gyre_samba q_sum_model q_ot_model rho q_sum_samba q_wbw q_net_samba salt q_ot_samba s_basin sf_ek sf_int_mod sf_model sf_mo q_net_model t_basin sf_wbw temp v_basin_model umo v v_basin_samba sf_ebw sf_geoint sf_samba wbw vgeo |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/M1m/RAPID_26N | NPD eORCA12 ERA5v1 M1m/RAPID_26N | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 62 variablesdh dx fc fw_eddy fw_ek fw_geoint fw_net_model fw_ot_rapid fw_fc ekman fw_net_rapid fw_ot_model dz fw_mo fw_gyre_rapid fw_sum_model fw_wbw mass_balance int_mod mocmax_model fw_sum_rapid moc_rapid q_fc q_eddy geoint mocmax_rapid q_geoint q_ek q_mo moc_model q_gyre_rapid fw_gyre_model q_gyre_model rho q_wbw salt s_fc_fwt q_sum_model q_ot_model q_sum_rapid q_net_rapid s_basin q_ot_rapid q_net_model sf_fc sf_wbw sf_model sf_ek sf_mo t_basin sf_int_mod sf_rapid sf_geoint t_fc_fwt temp v_basin_model wbw umo v v_basin_rapid v_fc vgeo |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/M1m/OSNAP | NPD eORCA12 ERA5v1 M1m/OSNAP | tn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 14 variablesflux_type i_bdy e3b j_bdy e1b flux_dir moc_east moc_west thetao_con sigma0 velocity moc_total so_abs volume_transport |
We can see from the list of search Items that
OSNAP,RAPID_26N,MOVE_16NandSAMBA_34_5Sdiagnostics are available for all NPD model configurations.Now, let's open the
RAPID_26Nfile for the 1-degree NPD eORCA1 ERA5v1 simulation we explored earlier.
ds_rapid = catalog.open_dataset(id="noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/M1m/RAPID_26N")
ds_rapid
<xarray.Dataset> Size: 158MB
Dimensions: (time: 595, z: 75, xbounds: 72, x: 71)
Coordinates:
* time (time) datetime64[ns] 5kB 1976-01-16T12:00:00 ... 2025-07-...
* z (z) float64 600B 0.5058 1.556 2.668 ... 5.698e+03 5.902e+03
* xbounds (xbounds) float64 576B -81.0 -80.0 -79.0 ... -11.0 -9.998
* x (x) float64 568B -80.5 -79.5 -78.5 ... -12.5 -11.5 -10.5
Data variables: (12/62)
fc (time) float64 5kB dask.array<chunksize=(298,), meta=np.ndarray>
fw_fc (time) float64 5kB dask.array<chunksize=(298,), meta=np.ndarray>
dh (time, z, xbounds) float64 26MB dask.array<chunksize=(1, 75, 72), meta=np.ndarray>
fw_gyre_model (time) float64 5kB dask.array<chunksize=(298,), meta=np.ndarray>
fw_ek (time) float64 5kB dask.array<chunksize=(298,), meta=np.ndarray>
fw_geoint (time) float64 5kB dask.array<chunksize=(298,), meta=np.ndarray>
... ...
wbw (time) float64 5kB dask.array<chunksize=(298,), meta=np.ndarray>
v_basin_model (time, z) float64 357kB dask.array<chunksize=(1, 75), meta=np.ndarray>
v (time, z, x) float64 25MB dask.array<chunksize=(1, 75, 71), meta=np.ndarray>
v_fc (time, z) float64 357kB dask.array<chunksize=(1, 75), meta=np.ndarray>
v_basin_rapid (time, z) float64 357kB dask.array<chunksize=(1, 75), meta=np.ndarray>
vgeo (time, z, x) float64 25MB dask.array<chunksize=(1, 75, 71), meta=np.ndarray>Ocean Model Domain Variables¶
So far, we have seen how to access NPD ocean model variables (e.g., temperature, salinity and velocities) defined on their native NEMO model grid.
But often when calculating diagnostics derived from these variables, such as volume, heat and freshwater transports, we also need access to the variables describing the model domain.
Let's next search the
OceanDataCatalogfor any Items with identifiers which contain the "domain" key word:
catalog.search(collection='noc-npd-era5', item_name='domain_cfg')
| Item ID | Title | Platform | Start Date | End Date | Variables |
|---|---|---|---|---|---|
| noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/domain/domain_cfg | NPD eORCA1 ERA5v1 domain/domain_cfg | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 49 variablesbathy_metry e1u bottom_level atlmsk e2u e2t e2f e1v e1t e2v e3t_1d e3w_0 e3t_0 e3vw_0 e3u_0 e3uw_0 e1f e3w_1d e3f_0 e3v_0 ff_f glamu fmask glamf glamv gphiu ff_t gdepw_1d gphif gphit glamt gdepw_0 gdept_1d indmsk mask_opensea tmask mbathy pacmsk socmsk gphiv umaskutil vmask tmaskutil top_level umask misf gdept_0 vmaskutil wmask |
| noc-npd-era5/npd-eorca025-era5v1/r1i1c1f1/domain/domain_cfg | NPD eORCA025 ERA5v1 domain/domain_cfg | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 49 variablese2f bathy_metry bottom_level e1t e1u e2t e1f e2u atlmsk e1v e3v_0 e3w_0 e3w_1d e3uw_0 e3f_0 e3t_1d e2v e3vw_0 ff_t fmask e3t_0 e3u_0 ff_f gdepw_1d gdepw_0 glamf glamu gdept_0 glamt gphif gphit gdept_1d glamv mbathy pacmsk gphiu indmsk misf tmask top_level vmaskutil wmask tmaskutil vmask umask socmsk mask_opensea umaskutil gphiv |
| noc-npd-era5/npd-eorca12-era5v1/r1i1c1f1/domain/domain_cfg | NPD eORCA12 ERA5v1 domain/domain_cfg | gn | 1976-01-01T00:00:00Z | 2026-05-15T00:00:00Z | 57 variablesbathy_metry e1u e1f e2u e1v e2f e1t bottom_level e2t e2v e3w_0 e3v_0 e3vw_0 e3uw_0 e3t_0 e3f_0 e3w_1d e3u_0 e3t_1d ff_f fmask glamf gphif gphit glamt fmaskutil glamv glamu ff_t gphiv isf_draft ln_isfcav gphiu ln_sco jpiglo ln_zco ln_zps mask_csgrpglo mask_csemp mask_csglo jpkglo mask_csrnf mask_csgrprnf mask_csgrpemp jperio jpjglo umask mask_csundef top_level mask_opensea vmask umaskutil tmaskutil vmaskutil tmask wmask wmaskutil |
We can see from the list of search Items that
domain_cfg,mesh_maskandsubbasinancillary data are available for each NPD model configuration.Next, let's open the
domain_cfgfile for the 1-degree NPD eORCA1 ERA5v1 simulation we explored earlier.
ds_domain_cfg = catalog.open_dataset(id="noc-npd-era5/npd-eorca1-era5v1/r1i1c1f1/domain/domain_cfg")
ds_domain_cfg
<xarray.Dataset> Size: 710MB
Dimensions: (y: 331, x: 360, nav_lev: 75)
Coordinates:
* y (y) int64 3kB 0 1 2 3 4 5 6 7 ... 324 325 326 327 328 329 330
* x (x) int64 3kB 0 1 2 3 4 5 6 7 ... 353 354 355 356 357 358 359
* nav_lev (nav_lev) int64 600B 0 1 2 3 4 5 6 7 ... 68 69 70 71 72 73 74
Data variables: (12/49)
atlmsk (y, x) float32 477kB dask.array<chunksize=(331, 360), meta=np.ndarray>
e2v (y, x) float64 953kB dask.array<chunksize=(331, 360), meta=np.ndarray>
e1v (y, x) float64 953kB dask.array<chunksize=(331, 360), meta=np.ndarray>
e2f (y, x) float64 953kB dask.array<chunksize=(331, 360), meta=np.ndarray>
e2u (y, x) float64 953kB dask.array<chunksize=(331, 360), meta=np.ndarray>
bathy_metry (y, x) float32 477kB dask.array<chunksize=(331, 360), meta=np.ndarray>
... ...
vmask (nav_lev, y, x) int8 9MB dask.array<chunksize=(75, 331, 360), meta=np.ndarray>
umaskutil (y, x) int8 119kB dask.array<chunksize=(331, 360), meta=np.ndarray>
wmask (nav_lev, y, x) bool 9MB dask.array<chunksize=(75, 331, 360), meta=np.ndarray>
top_level (y, x) int32 477kB dask.array<chunksize=(331, 360), meta=np.ndarray>
umask (nav_lev, y, x) int8 9MB dask.array<chunksize=(75, 331, 360), meta=np.ndarray>
vmaskutil (y, x) int8 119kB dask.array<chunksize=(331, 360), meta=np.ndarray>
Attributes: (12/39)
CfgName: UNKNOWN
CfgIndex: -999
Iperio: 1
Jperio: 0
NFold: 1
NFtype: F
... ...
ocean_component: NEMO v4.2.2
sea_ice_component: SI3 v4.0
biogeochemistry_component: None
atmospheric_component: None
atmospheric_forcing: ERA5 v1
variant: r1i1c1f1