How to use the COSIMA Cookbook

This tutorial is designed to help new users get to grips with the COSIMA Cookbook. The COSIMA Cookbook collection of recipes for analysing ocean and sea ice model output, using a common method of loading the output.

It assumes that:

  • You have access to the ACCESS-NRI Intake Catalog (through project xp65).

  • You can fire up a Jupyter notebook on NCI’s ARE.

  • You can access an appropriate set of conda packages to load the appropriate python libraries (such as through the hh5 conda packages, which I’ve used here).

Before starting, load in some standard libraries that you are likely to need:

[1]:
import matplotlib.pyplot as plt
import cmocean as cm
import numpy as np
import cf_xarray

In addition, you always need to load the intake module. This provides functions that we use to load data via the ACCESS-NRI Intake Catalog:

[2]:
import intake

1. The Cookbook Philosophy

The COSIMA Cookbook is a framework for analysing ocean-sea ice model output. It is designed to:

  • Provide examples of commonly used diagnostics;

  • Write efficient, well-documented, openly accessible code;

  • Encourage community input to the code;

  • Ensure diagnostic results are reproducible;

  • Process diagnostics directly from the model output, minimising creation of intermediate files;

  • Find methods to deal with the memory limitations of analysing high-resolution model output.

1.1 A database of experiments

The COSIMA Cookbook relies on a database of experiments (let’s call it a datastore) in order to load model output. This datastore effectively holds metadata for each experiment, as well as variable names, data ranges and so on.

NCI Projects: Access to COSIMA ocean-sea ice model output requires that you are a member of NCI projects xp65, hh5, ik11 and cj50.

With that sorted out, there are three different ways for you to access the datastore:

  1. Use the default ACCESS-NRI catalog, which is periodically refreshed automatically. This datastore includes many experiments stored in the COSIMA data directories on NCI under the projects mentioned above. The examples in this tutorial use this datastore.

  2. Use another datastore that someone has made for you.

  3. Make your own catalog, which is stored in your own path and includes only the experiments you are interested in. Please refer to the `Make_Your_Own_Intake_Datastore <https://cosima-recipes.readthedocs.io/en/latest/Tutorials/Make_Your_Own_Intake_Datastore.html>`__ tutorial for instructions on how to create this datastore.

To access the default datastore, you need to load it each time you fire up a notebook:

[3]:
catalog = intake.cat.access_nri

1.2 Inbuilt Catalog Functions

We have constructed a few functions to help you operate the cookbook and to access the datasets. The following functions query and display the data available in the datastore, without loading the data itself.

catalog lists all of the experiments and variables that are included in the datastore. The format is mostly self-explanatory, but the list is huge (and noth particularly useful):

[4]:
catalog

access_nri catalog with 94 source(s) across 2247 rows:

model description realm frequency variable
name
01deg_jra55v13_ryf9091 {ACCESS-OM2} {0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.3 RYF9091 repeat year forcing (May 1990 to Apr 1991)} {seaIce, ocean} {1day, fx, 1mon, 3mon, 3hr} {uvel_m, lprec, sfc_hflux_coupler, alvdr_ai_m, frazil_3d, pme_river, uocn_m, temp_global_ave, pot_rho_1, fprec_melt_heat, eta_global, TLON, fsalt_ai_m, fmeltt_ai_m, total_net_sfc_heating, drag_coe...
01deg_jra55v140_iaf {ACCESS-OM2} {Cycle 1 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, daidtd_m, alvdr_ai_m, vicen, snoice, pme_river, aicen, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_t, TLON, fsalt_ai_m, fmeltt_a...
01deg_jra55v140_iaf_cycle2 {ACCESS-OM2} {Cycle 2 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, daidtd_m, alvdr_ai_m, vicen, melts, snoice, pme_river, aicen, temp_global_ave, strocny_m, fprec_melt_heat, eta_global, diff_cbt_t, TLON, fs...
01deg_jra55v140_iaf_cycle3 {ACCESS-OM2} {Cycle 3 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, daidtd_m, alvdr_ai_m, melts, snoice, pme_river, temp_global_ave, strocny_m, fprec_melt_heat, eta_global, diff_cbt_t, TLON, fsalt_ai_m, fres...
01deg_jra55v140_iaf_cycle4 {ACCESS-OM2} {Cycle 4 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {seaIce, ocean} {1day, fx, 6hr, 1mon, 3hr} {daidtd_m, surface_no3, vicen, det_intmld, melts, src07, temp_global_ave, fprec_melt_heat, fresh_m, caco3_xflux_adv, meltb, drag_coeff, vvel_h, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, V...
01deg_jra55v140_iaf_cycle4_jra55v150_extension {ACCESS-OM2} {Extensions of cycle 4 of 0.1 degree ACCESS-OM2 + WOMBAT BGC global model configuration with JRA55-do v1.5.0 and v1.5.0.1 interannual forcing} {seaIce, ocean} {1mon, 1day, subhr, fx} {uvel_m, radbio_intmld, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, surface_no3, daidtd_m, alvdr_ai_m, det_intmld, melts, snoice, pprod_gross_int100, pme_river, src07, o2_yflux_adv, tem...
01deg_jra55v150_iaf_cycle1 {ACCESS-OM2} {Cycle 1 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.5.0 OMIP2 interannual forcing} {seaIce, ocean} {1mon, 1day, fx} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, pme_river, fprec_melt_heat, diff_cbt_t, TLON, drag_coeff, temp_xflux_adv_int_z, ty_trans_rho, area_t, sea_level_sq, ULON, hi_m, ty_trans, dxt, salt...
025deg_era5_iaf {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with ERA5 interannual\nforcing (1980-2021)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, alvdr_ai_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, TLON, fsalt_ai_m, fh...
025deg_era5_ryf {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with ERA5 RYF9091 repeat\nyear forcing (May 1990 to Apr 1991)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, alvdr_ai_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, diff_cbt_t, TLON, fs...
025deg_jra55_iaf_era5comparison {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with JRA55-do v1.5.0\ninterannual forcing (1980-2019)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, TLON, fsalt_ai_m, fhocn_ai_m, fm...
025deg_jra55_iaf_omip2_cycle1 {ACCESS-OM2} {Cycle 1/6 of 0.25 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2019)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, eta_adjust, alvdr_ai_m, liceht, melts, frazil_3d, snoice, pme_river, pbot_adjust, temp_global_ave, fswfac_m, strocny_m...
025deg_jra55_iaf_omip2_cycle2 {ACCESS-OM2} {Cycle 1/6 of 0.25 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2019)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, eta_adjust, alvdr_ai_m, liceht, melts, frazil_3d, snoice, pme_river, pbot_adjust, temp_global_ave, fswfac_m, strocny_m...
025deg_jra55_iaf_omip2_cycle3 {ACCESS-OM2} {Cycle 3/6 of 0.25 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2019)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, eta_adjust, alvdr_ai_m, liceht, melts, frazil_3d, snoice, pme_river, pbot_adjust, temp_global_ave, fswfac_m, strocny_m...
025deg_jra55_iaf_omip2_cycle4 {ACCESS-OM2} {Cycle 4/6 of 0.25 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2019)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, eta_adjust, alvdr_ai_m, liceht, melts, frazil_3d, snoice, pme_river, pbot_adjust, temp_global_ave, fswfac_m, strocny_m...
025deg_jra55_iaf_omip2_cycle5 {ACCESS-OM2} {Cycle 5/6 of 0.25 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2019)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, eta_adjust, alvdr_ai_m, liceht, melts, frazil_3d, snoice, pme_river, pbot_adjust, temp_global_ave, fswfac_m, strocny_m...
025deg_jra55_iaf_omip2_cycle6 {ACCESS-OM2} {Cycle 6/6 of 0.25 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2019)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, eta_adjust, alvdr_ai_m, liceht, melts, frazil_3d, snoice, pme_river, pbot_adjust, temp_global_ave, fswfac_m, strocny_m...
025deg_jra55_ryf9091_gadi {ACCESS-OM2} {0.25 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.3 RYF9091 repeat year forcing (May 1990 to Apr 1991)} {seaIce, ocean} {1mon, fx, 1yr} {uvel_m, daidtd_m, evap_ai_m, alvdr_ai_m, pme_river, uocn_m, temp_global_ave, fswfac_m, strocny_m, diff_cbt_t, eta_global, TLON, fsalt_ai_m, fhocn_ai_m, drag_coeff, frazil_m, ty_trans_rho, total_o...
025deg_jra55_ryf_era5comparison {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0\nRYF9091 repeat year forcing (May 1990 to Apr 1991)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, alvdr_ai_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, TLON, fsalt_ai_m, fh...
1deg_era5_iaf {ACCESS-OM2} {1 degree ACCESS-OM2 global model configuration with ERA5 interannual\nforcing (1960-2019)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, alvdr_ai_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, diff_cbt_t, TLON, fs...
1deg_era5_ryf {ACCESS-OM2} {1 degree ACCESS-OM2 global model configuration with ERA5 RYF9091 repeat\nyear forcing (May 1990 to Apr 1991)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, alvdr_ai_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, TLON, fsalt_ai_m, fh...
1deg_jra55_iaf_era5comparison {ACCESS-OM2} {1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0\ninterannual forcing (1960-2019)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, alvdr_ai_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, diff_cbt_t, TLON, fs...
1deg_jra55_iaf_omip2_cycle1 {ACCESS-OM2} {Cycle 1/6 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2_cycle2 {ACCESS-OM2} {Cycle 2/6 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2_cycle3 {ACCESS-OM2} {Cycle 3/6 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2_cycle4 {ACCESS-OM2} {Cycle 4/6 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2_cycle5 {ACCESS-OM2} {Cycle 5/6 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2_cycle6 {ACCESS-OM2} {Cycle 6/6 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2spunup_cycle1 {ACCESS-OM2} {Cycle 1/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2spunup_cycle10 {ACCESS-OM2} {Cycle 10/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle11 {ACCESS-OM2} {Cycle 11/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle12 {ACCESS-OM2} {Cycle 12/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle13 {ACCESS-OM2} {Cycle 13/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle14 {ACCESS-OM2} {Cycle 14/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle15 {ACCESS-OM2} {Cycle 15/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle16 {ACCESS-OM2} {Cycle 16/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle17 {ACCESS-OM2} {Cycle 17/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle18 {ACCESS-OM2} {Cycle 18/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle19 {ACCESS-OM2} {Cycle 19/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle2 {ACCESS-OM2} {Cycle 2/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2spunup_cycle20 {ACCESS-OM2} {Cycle 20/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle21 {ACCESS-OM2} {Cycle 21/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle22 {ACCESS-OM2} {Cycle 22/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle23 {ACCESS-OM2} {Cycle 23/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle24 {ACCESS-OM2} {Cycle 24/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle25 {ACCESS-OM2} {Cycle 25/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle26 {ACCESS-OM2} {Cycle 26/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle27 {ACCESS-OM2} {Cycle 27/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle28 {ACCESS-OM2} {Cycle 28/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle29 {ACCESS-OM2} {Cycle 29/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle3 {ACCESS-OM2} {Cycle 3/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2spunup_cycle30 {ACCESS-OM2} {Cycle 30/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle31 {ACCESS-OM2} {Cycle 31/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle32 {ACCESS-OM2} {Cycle 32/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle33 {ACCESS-OM2} {Cycle 33/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle34 {ACCESS-OM2} {Cycle 34/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle35 {ACCESS-OM2} {Cycle 35/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle36 {ACCESS-OM2} {Cycle 36/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle37 {ACCESS-OM2} {Cycle 37/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle38 {ACCESS-OM2} {Cycle 38/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle39 {ACCESS-OM2} {Cycle 39/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle4 {ACCESS-OM2} {Cycle 4/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {daidtd_m, eta_adjust, liceht, temp_global_ave, fprec_melt_heat, salt_eta_smooth, talkos_raw, drag_coeff, o2, total_ocean_swflx, ty_trans_rho, alk, vert_pv, uatm_m, total_ocean_river, Tair_m, hs_m...
1deg_jra55_iaf_omip2spunup_cycle40 {ACCESS-OM2} {Cycle 40/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle41 {ACCESS-OM2} {Cycle 41/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle42 {ACCESS-OM2} {Cycle 42/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle43 {ACCESS-OM2} {Cycle 43/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle44 {ACCESS-OM2} {Cycle 44/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle45 {ACCESS-OM2} {Cycle 45/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle5 {ACCESS-OM2} {Cycle 5/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle6 {ACCESS-OM2} {Cycle 6/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, fx, 1yr} {temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, caco3, eta_adjust, alvdr_ai_m, liceht, frazil_3d, pbot_adjust, pme_river, temp_xflux_sigma, temp_global_ave, fprec_melt_heat, eta_global, diff_cbt_...
1deg_jra55_iaf_omip2spunup_cycle7 {ACCESS-OM2} {Cycle 7/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1day, 1yr} {uvel_m, daidtd_m, evap_ai_m, caco3, alvdr_ai_m, snoice, temp_global_ave, fswfac_m, strocny_m, eta_global, TLON, fsalt_ai_m, fhocn_ai_m, fmeltt_ai_m, dvidtd, hi, frazil_m, o2, alk, strcorx_m, open...
1deg_jra55_iaf_omip2spunup_cycle8 {ACCESS-OM2} {Cycle 8/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_iaf_omip2spunup_cycle9 {ACCESS-OM2} {Cycle 9/45 of 1 degree ACCESS-OM2-BGC global configuration with JRA55-do v1.4 OMIP2 spunup interannual forcing (1958-2018)} {seaIce, ocean} {1mon, 1yr} {salt_global_ave, caco3, mld, fswup_m, aicen_m, average_T1, ANGLET, alvdr_ai_m, sss, stf07, aice_m, blkmask, temp_global_ave, dyt, HTN, HTE, fe, time_bounds, temp_surface_ave, no3, alvdf_ai_m, eta...
1deg_jra55_ryf9091_gadi {ACCESS-OM2} {1 degree ACCESS-OM2 physics-only global configuration with JRA55-do v1.3 RYF9091 repeat year forcing (May 1990 to Apr 1991)} {seaIce, ocean} {1mon, fx, 1yr} {uvel_m, daidtd_m, evap_ai_m, temp_advection_on_nrho, alvdr_ai_m, neutral_gm_on_nrho_temp, frazil_3d, pme_river, uocn_m, ty_trans_nrho, temp_global_ave, fswfac_m, strocny_m, temp_sigma_diff_on_nrh...
1deg_jra55v14_ryf {ACCESS-OM2} {1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 RYF9091\nrepeat year forcing (May 1990 to Apr 1991)} {seaIce, ocean} {1mon, 1day, fx} {uvel_m, temp_yflux_adv_int_z, lprec, sfc_hflux_coupler, evap_ai_m, daidtd_m, alvdr_ai_m, snoice, pme_river, temp_global_ave, fswfac_m, strocny_m, fprec_melt_heat, eta_global, TLON, fsalt_ai_m, fh...
HI_CN_05 {ACCESS-ESM1-5} {Historical run using same configuration as CMIP6 ACCESS-ESM1.5 historical r1i1p1f1, but with phosphorus limitation disabled within CASA-CNP} {atmos, seaIce, ocean} {1day, 6hr, 1mon, 3hr, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s08i236, fld_s17i221, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
HI_C_05_r1 {ACCESS-ESM1-5} {Historical run using same configuration as CMIP6 ACCESS-ESM1.5 historical r1i1p1f1, but with nitrogen and phosphorus limitations disabled within CASA-CNP} {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s08i236, fld_s17i221, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
HI_nl_C_05_r1 {ACCESS-ESM1-5} {Historical run using same configuration as CMIP6 ACCESS-ESM1.5 historical r1i1p1f1, but with nitrogen and phosphorus limitations disabled within CASA-CNP, and land-use change disabled} {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s08i236, fld_s17i221, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
HI_noluc_CN_05 {ACCESS-ESM1-5} {Historical run using same configuration as CMIP6 ACCESS-ESM1.5 historical r1i1p1f1, but with phosphorus limitation disabled within CASA-CNP, and land-use change disabled} {atmos, seaIce, ocean} {1day, 6hr, 1mon, 3hr, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s08i236, fld_s17i221, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
PI_GWL_B2035 {ACCESS-ESM1-5} {Climate stabilization run at different global warming levels with zero C02 emissions and pre-industrial aerosols, starting in 2035 } {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s17i221, fld_s08i236, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
PI_GWL_B2040 {ACCESS-ESM1-5} {Climate stabilization run at different global warming levels with zero C02 emissions and pre-industrial aerosols, starting in 2040} {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s17i221, fld_s08i236, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
PI_GWL_B2045 {ACCESS-ESM1-5} {Climate stabilization run at different global warming levels with zero C02 emissions and pre-industrial aerosols, starting in 2045} {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s17i221, fld_s08i236, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
PI_GWL_B2050 {ACCESS-ESM1-5} {Climate stabilization run at different global warming levels with zero C02 emissions and pre-industrial aerosols, starting in 2050} {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s17i221, fld_s08i236, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
PI_GWL_B2055 {ACCESS-ESM1-5} {Climate stabilization run at different global warming levels with zero C02 emissions and pre-industrial aerosols, starting in 2055} {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s17i221, fld_s08i236, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
PI_GWL_B2060 {ACCESS-ESM1-5} {Climate stabilization run at different global warming levels with zero C02 emissions and pre-industrial aerosols, starting in 2060} {atmos, seaIce, ocean} {1mon, 1day, 1yr} {fld_s03i317, fld_s03i287, fld_s02i287, eta_adjust, fld_s01i208, vicen, fld_s00i508, src07, fld_s17i221, fld_s08i236, temp_global_ave, fld_s03i860, fprec_melt_heat, tz_trans_sq, dissicnat_raw, fld...
bx944 {ACCESS-CM2} {Standard CMIP6 historical simulation, control experiment for by473 pacemaker experiment (948d8676-2c56-49db-8ea1-b80572b074c8)} {atmos, seaIce, ocean} {1mon, 1day} {fld_s03i317, fld_s03i287, fld_s34i071, eta_adjust, fld_s01i208, vicen, melts, uatm, fld_s00i508, fld_s17i221, fld_s08i236, temp_global_ave, fld_s02i303, sistrydtop, sipr, sidmassevapsubl, fprec_m...
by473 {ACCESS-CM2} {Pacemaker variation of CMIP6 historical simulation, Topical Atlantic region replaced with fixed SSTs from observations} {atmos, seaIce, ocean} {1mon, 1day} {fld_s03i317, fld_s03i287, fld_s34i071, eta_adjust, fld_s01i208, vicen, melts, uatm, fld_s00i508, fld_s17i221, fld_s08i236, temp_global_ave, fld_s02i303, sistrydtop, sipr, sidmassevapsubl, fprec_m...
by578 {ACCESS-CM2} {Pacemaker variation of CMIP6 ssp245 simulation with Tropical Atlantic region replaced with fixed SSTs from observations} {atmos, seaIce, ocean} {1mon, 1day} {fld_s03i317, fld_s03i287, fld_s34i071, eta_adjust, fld_s01i208, vicen, melts, uatm, fld_s00i508, fld_s17i221, fld_s08i236, temp_global_ave, fld_s02i303, sistrydtop, sipr, sidmassevapsubl, fprec_m...
by647 {ACCESS-CM2} {Standard CMIP6 ssp245 simulation, control experiment for by578 pacemaker experiment (1fd9e682-d393-4b17-a9cd-934c3a48a1f8)} {atmos, seaIce, ocean} {1mon, 1day} {fld_s03i317, fld_s03i287, fld_s34i071, eta_adjust, fld_s01i208, vicen, melts, uatm, fld_s00i508, fld_s17i221, fld_s08i236, temp_global_ave, fld_s02i303, sistrydtop, sipr, sidmassevapsubl, fprec_m...
bz687 {ACCESS-CM2} {ACCESS-CM2 CMIP6 with 1 degree ocean. Present day atmospheric forcing with 1985-2014 mean GHG, aerosol emissions etc.} {atmos, seaIce, ocean} {1mon, 1day} {fld_s03i317, fld_s03i287, fld_s34i071, eta_adjust, fld_s01i208, vicen, melts, uatm, fld_s00i508, fld_s17i221, fld_s08i236, temp_global_ave, fld_s02i303, sistrydtop, sipr, sidmassevapsubl, fprec_m...
cj877 {ACCESS-CM2} {ACCESS-CM2 with COSIMA OM2 0.25 degree ocean configuration. Present day atmospheric forcing with 1985-2014 mean GHG, aerosol emissions etc.} {atmos, seaIce, ocean} {1mon, 1day, fx} {fld_s03i317, fld_s03i287, fld_s34i071, fld_s01i208, vicen, melts, uatm, fld_s00i508, fld_s17i221, fld_s08i236, temp_global_ave, fld_s02i303, sistrydtop, sipr, sidmassevapsubl, fprec_melt_heat, fl...
cmip5_al33 {IPSL-CM5B-LR, GISS-E2-H, inmcm4, MIROC-ESM, HadGEM2-ES, CanESM2, NorESM1-ME, CMCC-CESM, GISS-E2-H-CC, CESM1-WACCM, FGOALS-gl, HadGEM2-A, CNRM-CM5, MRI-AGCM3-2S, MRI-CGCM3, fio-esm, MIROC5, BNU-ES... {Replicated CMIP5-era datasets catalogued by NCI} {seaIce, land, aerosol, atmos, none, ocnBgchem, ocean, landIce} {1day, subhr, fx, 6hr, 1mon, 1yr, 3hr} {rlussi, albisccp, msftmrhozba, hfsithermds2d, hflssi, dissoc, rldssi, frc, chl, treeFracPrimEver, concpoa, hfevapds, c4PftFrac, dfe, o2, tasmax, huss, tauu, intppico, clmcalipso, mfo, od550lt1aer...
cmip5_rr3 {IPSL-CM5B-LR, MIROC-ESM, CanESM2, MRI-CGCM3, CNRM-CM5, CSIRO-BOM-ACCESS1-3, MIROC5, BNU-ESM, GFDL-ESM2G, NOAA-GFDL-GFDL-CM3, ACCESS1-3, CSIRO-Mk3-6-0, MPI-M-MPI-ESM-LR, CCSM4, CNRM-CERFACS-CNRM-C... {Australian CMIP5-era datasets catalogued by NCI} {seaIce, land, aerosol, atmos, none, ocean, landIce} {1day, fx, 1hr, 6hr, 1mon, 3mon, 3hr} {concdust, grFrazil, hfss, loadso4, hus, zmla, thetaoga, volcello, strocny, evspsblveg, tas, evspsbl, vmo, treeFracPrimEver, zg800, concss, prsn, concpoa, snc, va, tauuo, hfy, c4PftFrac, transix, ...
cmip6_fs38 {ACCESS-CM2, ACCESS-OM2-025, ACCESS-ESM1-5, ACCESS-OM2} {Australian CMIP6-era datasets catalogued by NCI} {seaIce, land, aerosol, atmos, ocnBgchem, ocean, landIce} {1day, fx, 6hr, 1mon, 1yr, 3hr} {hfbasinpadv, siarean, albisccp, sistrydtop, sipr, sidmassevapsubl, arag, chl, opottempmint, rlntds, hfevapds, c4PftFrac, dfe, sihc, o2, tasmax, huss, tauu, mrsol, mfo, od550lt1aer, areacello, rls...
cmip6_oi10 {NorESM2-MM, SAM0-UNICON, GFDL-CM4C192, CanESM5-CanOE, GISS-E2-1-H, ECMWF-IFS-MR, CESM2, MRI-AGCM3-2-S, E3SM-1-1-ECA, HadGEM3-GC31-HH, HadGEM3-GC31-HM, EC-Earth3-CC, MPI-ESM1-2-LR, CNRM-ESM2-1, MC... {Replicated CMIP6-era datasets catalogued by NCI} {seaIce, land, aerosol, atmos, ocnBgchem, ocean, landIce, atmosChem} {1day, subhr, fx, 1hr, 6hr, 1mon, 1yr, 3hr} {co2s, cLitterSurf, dissoc, raLut, sistrydtop, sidmassevapsubl, opottempmint, hfevapds, fLulccAtmLut, dfe, sihc, o2, tasmax, huss, tauu, mrsol, mfo, areacello, rls, vsfcorr, grassFrac, netAtmosLan...

Each line in the table above references a directory full of netCDF files with model output.

The COSIMA cookbook philosophy is that you don’t need to know about the directories in which these files are stored to be able to interrogate them or to load the data.

However, with thousands of experiments in the datastore, the above table isn’t so easy to understand. Luckily, we can refine our search to limit the experiments we see. For example, if we already know the name of the experiment we are after, we can specify it via:

This is more useful, because it focusses just on the experiment I’m interested in – and provides a list of all the variables available that experiment. It also gives a short description which is a nice way to explore which experiments might be available.

However, we may notice that the list of variables in the right-most column here is too long for this format. There are other ways to get hold of a list of all of these variables, such as:

[5]:
variables = catalog.search(name='025deg_jra55_ryf9091_gadi').unique().variable
print(variables)
['uvel_m', 'daidtd_m', 'evap_ai_m', 'alvdr_ai_m', 'pme_river', 'uocn_m', 'temp_global_ave', 'fswfac_m', 'strocny_m', 'diff_cbt_t', 'eta_global', 'TLON', 'fsalt_ai_m', 'fhocn_ai_m', 'drag_coeff', 'frazil_m', 'ty_trans_rho', 'total_ocean_swflx', 'rhoave', 'total_ocean_hflux_prec', 'area_t', 'strcorx_m', 'total_ocean_pme_river', 'ULON', 'uatm_m', 'total_ocean_river', 'Tair_m', 'hi_m', 'hs_m', 'strocnx_m', 'ty_trans', 'total_ocean_calving_heat', 'dxt', 'rain_ai_m', 'strtltx_m', 'melts_m', 'salt', 'sea_level', 'fresh_ai_m', 'trsig_m', 'fswup_m', 'mld', 'total_ocean_lprec', 'fswabs_ai_m', 'fsens_ai_m', 'alvdf_ai_m', 'snow_ai_m', 'Tsfc_m', 'meltt_m', 'age_global', 'flwdn_m', 'area_u', 'eta_t', 'total_ocean_evap_heat', 'strtlty_m', 'total_ocean_evap', 'strength_m', 'flwup_ai_m', 'ULAT', 'sfc_salt_flux_coupler', 'total_ocean_river_heat', 'vvel_m', 'meltb_m', 'total_ocean_salt', 'salt_surface_ave', 'TLAT', 'vicen_m', 'alidf_ai_m', 'dvidtt_m', 'tx_trans', 'total_ocean_sens_heat', 'v', 'salt_global_ave', 'flat_ai_m', 'average_T1', 'pot_temp', 'sfc_salt_flux_restore', 'dyt', 'time_bounds', 'sst_m', 'fsurfn_ai_m', 'ANGLE', 'strintx_m', 'total_ocean_calving_melt_heat', 'shear_m', 'alidr_ai_m', 'frz_onset_m', 'dyu', 'total_ocean_swflx_vis', 'total_ocean_fprec_melt_heat', 'total_ocean_lw_heat', 'strinty_m', 'temp', 'kmu', 'albsno_m', 'total_ocean_hflux_evap', 'ice_present_m', 'fswthru_ai_m', 'total_ocean_melt', 'total_ocean_calving', 'sea_levelsq', 'sfc_salt_flux_ice', 'dzt', 'fmelttn_ai_m', 'frzmlt_m', 'fswdn_m', 'hu', 'total_ocean_fprec', 'pe_tot', 'sice_m', 'aicen_m', 'flatn_ai_m', 'ANGLET', 'mlt_onset_m', 'aice_m', 'blkmask', 'HTN', 'HTE', 'geolat_c', 'meltl_m', 'temp_surface_ave', 'albsni_m', 'vocn_m', 'frazil_3d_int_z', 'pot_rho_0', 'strairy_m', 'albice_m', 'divu_m', 'geolon_t', 'geolon_c', 'kmt', 'strairx_m', 'dxu', 'net_sfc_heating', 'congel_m', 'total_ocean_hflux_coupler', 'fcondtop_ai_m', 'uarea', 'tmask', 'average_DT', 'total_ocean_runoff_heat', 'ty_trans_int_z', 'ht', 'strcory_m', 'fcondtopn_ai_m', 'daidtt_m', 'vatm_m', 'NCAT', 'wt', 'total_ocean_runoff', 'sss_m', 'tarea', 'total_ocean_sfc_salt_flux_coupler', 'average_T2', 'geolat_t', 'snoice_m', 'ke_tot', 'dvidtd_m', 'tx_trans_int_z', 'total_ocean_heat', 'u']

See the ACCESS-NRI_Intake_Catalog for additional methods.

Sometimes we might like to search on other headers from the above table to find which experiments saved a particular variable, e.g., we may wanna look for outputs with daily surface salt fields:

[6]:
catalog.search(model="ACCESS-OM2", variable="surface_salt", frequency="1day")

Intake dataframe catalog with 12 source(s) across 12 rows:

model description realm frequency variable
name
01deg_jra55v13_ryf9091 {ACCESS-OM2} {0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.3 RYF9091 repeat year forcing (May 1990 to Apr 1991)} {ocean} {1day} {surface_salt}
01deg_jra55v140_iaf {ACCESS-OM2} {Cycle 1 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {ocean} {1day} {surface_salt}
01deg_jra55v140_iaf_cycle2 {ACCESS-OM2} {Cycle 2 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {ocean} {1day} {surface_salt}
01deg_jra55v140_iaf_cycle3 {ACCESS-OM2} {Cycle 3 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {ocean} {1day} {surface_salt}
01deg_jra55v140_iaf_cycle4 {ACCESS-OM2} {Cycle 4 of 0.1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0 OMIP2 interannual forcing} {ocean} {1day} {surface_salt}
01deg_jra55v140_iaf_cycle4_jra55v150_extension {ACCESS-OM2} {Extensions of cycle 4 of 0.1 degree ACCESS-OM2 + WOMBAT BGC global model configuration with JRA55-do v1.5.0 and v1.5.0.1 interannual forcing} {ocean} {1day} {surface_salt}
025deg_era5_iaf {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with ERA5 interannual\nforcing (1980-2021)} {ocean} {1day} {surface_salt}
025deg_era5_ryf {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with ERA5 RYF9091 repeat\nyear forcing (May 1990 to Apr 1991)} {ocean} {1day} {surface_salt}
025deg_jra55_iaf_era5comparison {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with JRA55-do v1.5.0\ninterannual forcing (1980-2019)} {ocean} {1day} {surface_salt}
025deg_jra55_ryf_era5comparison {ACCESS-OM2} {0.25 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0\nRYF9091 repeat year forcing (May 1990 to Apr 1991)} {ocean} {1day} {surface_salt}
1deg_era5_iaf {ACCESS-OM2} {1 degree ACCESS-OM2 global model configuration with ERA5 interannual\nforcing (1960-2019)} {ocean} {1day} {surface_salt}
1deg_jra55_iaf_era5comparison {ACCESS-OM2} {1 degree ACCESS-OM2 global model configuration with JRA55-do v1.4.0\ninterannual forcing (1960-2019)} {ocean} {1day} {surface_salt}

1.3 Loading data from an experiment

Python has many ways of reading data from a netCDF file… so we thought we would add another way. This is done via the .to_dask() function, which is the most commonly used function in the Cookbook. This function takes the output from a catalog.search() query to find a specific variable, and loads the files you need to create that variable.

Let’s take now a little while to get to know how to load output. Most times, we need just three arguments: experiment, variable, and (in most cases) the frequency of the variable.

[7]:
experiment = '025deg_jra55_ryf9091_gadi'
variable = 'temp_global_ave'

ds = catalog[experiment].search(variable=variable).to_dask(xarray_open_kwargs = dict(use_cftime=True))

The above command returns an xarray dataset ds, which contains the metadata of the variable, but it does not the variable itself.

Note 1: it’s also possible to load several variables at once in this fashion and thus get a dataset with many variable.)

Note 2: the xarray_open_kwargs = dict(use_cftime=True) argument is only needed to suppress error warnings for experiments which go outside the range of “normal” dates used by np.datetime

It’s often easier to work with an xarray dataarray instead of a dataset. In that case, we can extract the dataarray that corresponds to the variable of our choice via:

[8]:
ds['temp_global_ave']
[8]:
<xarray.DataArray 'temp_global_ave' (time: 7800, scalar_axis: 1)> Size: 62kB
dask.array<concatenate, shape=(7800, 1), dtype=float64, chunksize=(1, 1), chunktype=numpy.ndarray>
Coordinates:
  * scalar_axis  (scalar_axis) float64 8B 0.0
  * time         (time) object 62kB 1900-01-16 12:00:00 ... 2549-12-16 12:00:00
Attributes:
    long_name:      Global mean temp in liquid seawater
    units:          deg_C
    valid_range:    [ -10. 1000.]
    cell_methods:   time: mean
    time_avg_info:  average_T1,average_T2,average_DT
    standard_name:  sea_water_potential_temperature

We can see that this operation loaded the globally averaged potential temperature from the model output. The time axis runs from year 1900 to year 2459. For some variables (particularly 3D variables that might use a loooot of memory). In that case, we may prefer to restrict ourselves to a smaller time window:

[9]:
ds['temp_global_ave'].cf.sel(time=slice('2000-01-01', '2050-12-31'))
[9]:
<xarray.DataArray 'temp_global_ave' (time: 612, scalar_axis: 1)> Size: 5kB
dask.array<getitem, shape=(612, 1), dtype=float64, chunksize=(1, 1), chunktype=numpy.ndarray>
Coordinates:
  * scalar_axis  (scalar_axis) float64 8B 0.0
  * time         (time) object 5kB 2000-01-16 12:00:00 ... 2050-12-16 12:00:00
Attributes:
    long_name:      Global mean temp in liquid seawater
    units:          deg_C
    valid_range:    [ -10. 1000.]
    cell_methods:   time: mean
    time_avg_info:  average_T1,average_T2,average_DT
    standard_name:  sea_water_potential_temperature

1.4 Exercises

OK, this is a tutorial, so now you have to do some work. Your tasks are to:

  • Find and load sea-surface height (ssh) from an experiment (perhaps choose a 1° configuration for starters).

[ ]:

  • Load potential temperature from an experiment (again, 1° would be quickest). Can you chunk the data differently from the default?

[ ]:

2. How to manipulate and plot variables with xarray

We use the python package xarray (which is built on dask, pandas, matplotlib and numpy) for many of our diagnostics. xarray has a a lot of nice features, some of which we will try to demonstrate for you.

2.1 Plotting

xarray’s .plot() method does its best to figure out what you are trying to plot, and plotting it for you. Let’s start by loading a 1-dimensional variable and plotting.

[10]:
experiment = '025deg_jra55_ryf9091_gadi'
variable = 'temp_global_ave'
ds = catalog[experiment].search(variable=variable).to_dask(xarray_open_kwargs = dict(use_cftime=True))
ds[variable].plot()
[10]:
[<matplotlib.lines.Line2D at 0x1479eb793d60>]
../_images/Tutorials_COSIMA_CookBook_Tutorial_26_1.png

You should see that xarray has figured out that this data is a timeseries, that the x-axis is representing time and that the y-axis is temp_global_ave. You can always modify aspects of your plot if you are unhappy with the default xarray behaviour:

[11]:
plt.figure(figsize=(10, 5))
ds[variable].plot()
plt.xlabel('Year')
plt.ylabel('Temperature (°C)')
plt.title('Globally Averaged Temperature');
../_images/Tutorials_COSIMA_CookBook_Tutorial_28_0.png

Because xarray knows about dimensions, it has plotting routines which can figure out what it should plot. By way of example, let’s load a single time slice of surface_temp and see how .plot() handles it:

[12]:
experiment = '01deg_jra55v13_ryf9091'
variable = 'surface_temp'
ds = catalog[experiment].search(variable=variable, frequency='1mon').to_dask()
temp = ds[variable].isel(time=-1).load()
temp.plot()
[12]:
<matplotlib.collections.QuadMesh at 0x1478bbe8ec80>
../_images/Tutorials_COSIMA_CookBook_Tutorial_30_1.png

A few things you might notice here. Firstly, we didn’t need to pass any xarray_open_kwargs in the .to_dask() function - because this experiment has a smaller date range (1900-2179). Second, we needed to specify the frequency - this is because this field is saved at both daily and monthly frequency, and they need dismabiguation. Also, even though this is an experiment at a 0.1° horizontal resolution for 280 years – we can still load ds, because it’s lazily loading (that is, it only loads the metadata). But before we plot, we need to select a single time level to ensure we don’t run out of memory!

Again, we can customise this plot as we see fit:

[13]:
temp_C = temp - 273.15 # convert from Kelvin to Celsius
temp_C.plot.contourf(levels=np.arange(-2, 32, 2), cmap=cm.cm.thermal)

plt.ylabel('latitude')
plt.xlabel('longitude')
plt.title('Surface Temperature')
[13]:
Text(0.5, 1.0, 'Surface Temperature')
../_images/Tutorials_COSIMA_CookBook_Tutorial_32_1.png

2.2 Slicing and dicing

There are two different ways of subselecting from a DataArray: isel and sel. The first of these two is selecting by index (the i stands for index). This means we specify the value of the index of the array. For the latter, we can specify the value of the coordinate we want to select.

These two methods are demonstrated in the following example:

[14]:
experiment = '025deg_jra55_ryf9091_gadi'
variable = 'pot_rho_0' #potential density referenced to the surface

ds = catalog[experiment].search(variable=variable, frequency='1yr').to_dask(xarray_open_kwargs = dict(use_cftime=True))
rho = ds[variable].isel(time = 200).cf.sel(vertical = 1000, method='nearest')
rho.plot(vmin=1026, vmax=1028)
[14]:
<matplotlib.collections.QuadMesh at 0x1479e0b26380>
../_images/Tutorials_COSIMA_CookBook_Tutorial_34_1.png

In the above example, a 600-year dataset is loaded. We then use isel to select the 201st year (time index of 200) and use sel to select the vertical level that is closest to 1000m deep. The sel method is very flexible, allowing us to use similar code for output that comes from models at different grid resolutions. In addition, both methods allow us to slice a range of values:

[15]:
experiment = '1deg_jra55_iaf_omip2_cycle6'
variable = 'v'

ds = catalog[experiment].search(variable=variable, frequency='1mon').to_dask(xarray_open_kwargs = dict(use_cftime=True))
v = ds[variable].cf.isel(time = 100).cf.sel(vertical = 50, method='nearest').cf.sel({'longitude': slice(-230, -180),
                                                                                     'latitude': slice(-50, -20)})
v.plot()
[15]:
<matplotlib.collections.QuadMesh at 0x1478282b9a20>
../_images/Tutorials_COSIMA_CookBook_Tutorial_36_1.png

Above, we have loaded the monthly-averaged meridional velocity field at 50m depth, and sliced out a small region of interest for our plot.

2.3 Averaging along dimensions

We often perform operations such as averaging on dataarrays. Again, knowledge of the coordinates can be a big help here, as you can instruct the mean() method to operate along given coordinates. The case below takes a temporal and zonal average of potential density.

IMPORTANT

To be precise, it is actually a mean in the \(i\)-grid direction, which is only zonal outside the tripolar region in the Arctic, i.e., south of 65N in the ACCESS-OM2 models. To compute the zonal mean correctly one needs to be a bit more careful; see `Recipes/True_Zonal_Mean.ipynb <https://cosima-recipes.readthedocs.io/en/latest/Recipes/True_Zonal_Mean.html>`__.

[16]:
experiment = '1deg_jra55_iaf_omip2_cycle6'
variable = 'temp'

ds = catalog[experiment].search(variable=variable, frequency='1mon').to_dask(xarray_open_kwargs = dict(use_cftime=True))
ds[variable].cf.mean({'time', 'longitude'}).plot(cmap=cm.cm.haline)
plt.gca().invert_yaxis()
../_images/Tutorials_COSIMA_CookBook_Tutorial_39_0.png

2.4 Resampling

xarray uses datetime conventions to allow for operations such as resampling in time (unless we invoke the xarray_open_kwargs = dict(use_cftime=True) argument). This resampling is simple and powerful. Here is an example of re-plotting a monthly timeseries with annual averaging:

[17]:
experiment = '1deg_jra55_iaf_omip2_cycle6'
variable = 'temp_global_ave'

ds = catalog[experiment].search(variable=variable, frequency='1mon').to_dask()
ds[variable].plot(color='c', label='monthly')

meandata = ds[variable].resample(time='YE').mean(dim='time')
meandata.plot(color='r', label='annual average')

plt.legend()
[17]:
<matplotlib.legend.Legend at 0x147a02fe20e0>
../_images/Tutorials_COSIMA_CookBook_Tutorial_41_1.png

2.5 Exercises

  • Pick an experiment and plot a map of the temperature of the upper 100m of the ocean for one year.

[ ]:

  • Now, take the same experiment and construct a timeseries of spatially averaged (regional or global) upper 700m temperature, resampled every 3 years.

[ ]:

3. More Advanced Stuff

3.1 Making a map with cartopy

The maps shown in this tutorial are not publication quality, are missing coastlines and in fact distort data in the Arctic (due to the tripole grid used there). We suggest going through the `Tutorials/Making_Maps_with_Cartopy <https://cosima-recipes.readthedocs.io/en/latest/Tutorials/Making_Maps_with_Cartopy.html>`__ tutorial.

3.2 Distributed computing

Many of our recipes use multiple cores for their calculations, usually via the using dask to set up a local cluster on your node for distributed computation.

[18]:
from dask.distributed import Client

client = Client(threads_per_worker = 1)
client
[18]:

Client

Client-14b06a41-f65a-11ef-8c6a-00000181fe80

Connection method: Cluster object Cluster type: distributed.LocalCluster
Dashboard: /proxy/8787/status

Cluster Info

The dashboard link should allow you to access information on how your work is distributed between the cores on your local cluster.