diff --git a/mydoc/examples/CMIP6_Amon.json b/mydoc/examples/CMIP6_Amon.json deleted file mode 100644 index 03e8a3e..0000000 --- a/mydoc/examples/CMIP6_Amon.json +++ /dev/null @@ -1,1368 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.27", - "cmor_version": "3.3", - "table_id": "Table Amon", - "realm": "atmos atmosChem", - "table_date": "30 July 2018", - "missing_value": "1e20", - "int_missing_value": "-999", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "alevel alevhalf", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" - }, - "variable_entry": { - "ccb": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_base", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure at Convective Cloud Base", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "longitude latitude time", - "out_name": "ccb", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cct": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_convective_cloud_top", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Pressure at Convective Cloud Top", - "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", - "dimensions": "longitude latitude time", - "out_name": "cct", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc113global": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_cfc113_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CFC113", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y. The chemical formula of CFC113 is CCl2FCClF2. The IUPAC name for CFC113 is 1,1,2-trichloro-1,2,2-trifluoro-ethane.", - "dimensions": "time", - "out_name": "cfc113global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc11global": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_cfc11_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CFC11", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y. The chemical formula of CFC11 is CFCl3. The IUPAC name for CFC11 is trichloro-fluoro-methane.", - "dimensions": "time", - "out_name": "cfc11global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc12global": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_cfc12_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CFC12", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y. The chemical formula of CFC12 is CF2Cl2. The IUPAC name for CFC12 is dichloro-difluoro-methane.", - "dimensions": "time", - "out_name": "cfc12global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "mol mol-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of CH4", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude plev19 time", - "out_name": "ch4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4Clim": { - "frequency": "monC", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of CH4", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude plev19 time2", - "out_name": "ch4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4global": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "1e-09", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CH4", - "comment": "Global Mean Mole Fraction of CH4", - "dimensions": "time", - "out_name": "ch4global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ch4globalClim": { - "frequency": "monC", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_methane_in_air", - "units": "1e-09", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of CH4", - "comment": "Global Mean Mole Fraction of CH4", - "dimensions": "time2", - "out_name": "ch4global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ci": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "convection_time_fraction", - "units": "1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Time Convection Occurs", - "comment": "Fraction of time that convection occurs in the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "ci", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cl": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction_in_atmosphere_layer", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Cloud Area Fraction", - "comment": "Percentage cloud cover, including both large-scale and convective cloud.", - "dimensions": "longitude latitude alevel time", - "out_name": "cl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cli": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_ice_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Cloud Ice", - "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "cli", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clivi": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_cloud_ice", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Ice Water Path", - "comment": "mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clivi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clt": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "cloud_area_fraction", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Total Cloud Fraction", - "comment": "Total cloud area fraction for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.", - "dimensions": "longitude latitude time", - "out_name": "clt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clw": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", - "units": "kg kg-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Mass Fraction of Cloud Liquid Water", - "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude alevel time", - "out_name": "clw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "clwvi": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_cloud_condensed_water", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Condensed Water Path", - "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", - "dimensions": "longitude latitude time", - "out_name": "clwvi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "mole_fraction_of_carbon_dioxide_in_air", - "units": "mol mol-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of CO2", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude plev19 time", - "out_name": "co2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2Clim": { - "frequency": "monC", - "modeling_realm": "atmos", - "standard_name": "mole_fraction_of_carbon_dioxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of CO2", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude plev19 time2", - "out_name": "co2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2mass": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_of_carbon_dioxide", - "units": "kg", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Total Atmospheric Mass of CO2", - "comment": "Total atmospheric mass of Carbon Dioxide", - "dimensions": "time", - "out_name": "co2mass", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co2massClim": { - "frequency": "monC", - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_of_carbon_dioxide", - "units": "kg", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "", - "long_name": "Total Atmospheric Mass of CO2", - "comment": "Total atmospheric mass of Carbon Dioxide", - "dimensions": "time2", - "out_name": "co2mass", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evspsbl": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "water_evapotranspiration_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Evaporation including Sublimation and Transpiration", - "comment": "Evaporation at surface (also known as evapotranspiration): flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", - "dimensions": "longitude latitude time", - "out_name": "evspsbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2antt": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", - "comment": "This is requested only for the emission-driven coupled carbon climate model runs. Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", - "dimensions": "longitude latitude time", - "out_name": "fco2antt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2fos": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", - "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", - "dimensions": "longitude latitude time", - "out_name": "fco2fos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fco2nat": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", - "comment": "This is what the atmosphere sees (on its own grid). This field should be equivalent to the combined natural fluxes of carbon that account for natural exchanges between the atmosphere and land (nep) or ocean (fgco2) reservoirs.", - "dimensions": "longitude latitude time", - "out_name": "fco2nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hcfc22global": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_hcfc22_in_air", - "units": "1e-12", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of HCFC22", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, whereX is a material constituent of Y. A chemical species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The chemicalformula for HCFC22 is CHClF2. The IUPAC name for HCFC22 is chloro-difluoro-methane.", - "dimensions": "time", - "out_name": "hcfc22global", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfls": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_upward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Latent Heat Flux", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. 'Upward' indicates a vector component which is positive when directed upward (negative downward). The surface latent heat flux is the exchange of heat between the surface and the air on account of evaporation (including sublimation). In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude time", - "out_name": "hfls", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfss": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_upward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upward Sensible Heat Flux", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. 'Upward' indicates a vector component which is positive when directed upward (negative downward). The surface sensible heat flux, also called 'turbulent' heat flux, is the exchange of heat between the surface and the air by motion of air. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. Unless indicated in the cell_methods attribute, a quantity is assumed to apply to the whole area of each horizontal grid box. Previously, the qualifier where_type was used to specify that the quantity applies only to the part of the grid box of the named type. Names containing the where_type qualifier are deprecated and newly created data should use the cell_methods attribute to indicate the horizontal area to which the quantity applies.", - "dimensions": "longitude latitude time", - "out_name": "hfss", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hur": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Relative Humidity", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions": "longitude latitude plev19 time", - "out_name": "hur", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hurs": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "relative_humidity", - "units": "%", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Relative Humidity", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", - "dimensions": "longitude latitude time height2m", - "out_name": "hurs", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hus": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Specific Humidity", - "comment": "'specific' means per unit mass. Specific humidity is the mass fraction of water vapor in (moist) air.", - "dimensions": "longitude latitude plev19 time", - "out_name": "hus", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "huss": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "specific_humidity", - "units": "1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Specific Humidity", - "comment": "Near-surface (usually, 2 meter) specific humidity.", - "dimensions": "longitude latitude time height2m", - "out_name": "huss", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mc": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "atmosphere_net_upward_convective_mass_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Mass Flux", - "comment": "The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell.", - "dimensions": "longitude latitude alevhalf time", - "out_name": "mc", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2o": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "mol mol-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of N2O", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y. The chemical formula of nitrous oxide is N2O.", - "dimensions": "longitude latitude plev19 time", - "out_name": "n2o", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2oClim": { - "frequency": "monC", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of N2O", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y. The chemical formula of nitrous oxide is N2O.", - "dimensions": "longitude latitude plev19 time2", - "out_name": "n2o", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2oglobal": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "1e-09", - "cell_methods": "area: time: mean", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of N2O", - "comment": "Global mean Nitrous Oxide (N2O)", - "dimensions": "time", - "out_name": "n2oglobal", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "n2oglobalClim": { - "frequency": "monC", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_nitrous_oxide_in_air", - "units": "1e-09", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "", - "long_name": "Global Mean Mole Fraction of N2O", - "comment": "Global mean Nitrous Oxide (N2O)", - "dimensions": "time2", - "out_name": "n2oglobal", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3": { - "frequency": "mon", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of O3", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude plev19 time", - "out_name": "o3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o3Clim": { - "frequency": "monC", - "modeling_realm": "atmos atmosChem", - "standard_name": "mole_fraction_of_ozone_in_air", - "units": "mol mol-1", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Mole Fraction of O3", - "comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude plev19 time2", - "out_name": "o3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pfull": { - "frequency": "monC", - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Pressure on Model Levels", - "comment": "Air pressure on model levels", - "dimensions": "longitude latitude alevel time2", - "out_name": "pfull", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phalf": { - "frequency": "monC", - "modeling_realm": "atmos", - "standard_name": "air_pressure", - "units": "Pa", - "cell_methods": "area: mean time: mean within years time: mean over years", - "cell_measures": "area: areacella", - "long_name": "Pressure on Model Half-Levels", - "comment": "Air pressure on model half-levels", - "dimensions": "longitude latitude alevhalf time2", - "out_name": "phalf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pr": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Precipitation", - "comment": "includes both liquid and solid phases", - "dimensions": "longitude latitude time", - "out_name": "pr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prc": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "convective_precipitation_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Convective Precipitation", - "comment": "Convective precipitation at surface; includes both liquid and solid phases.", - "dimensions": "longitude latitude time", - "out_name": "prc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Snowfall Flux", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "longitude latitude time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prw": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "atmosphere_mass_content_of_water_vapor", - "units": "kg m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Water Vapor Path", - "comment": "vertically integrated through the atmospheric column", - "dimensions": "longitude latitude time", - "out_name": "prw", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ps": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_air_pressure", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Air Pressure", - "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "psl": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "air_pressure_at_mean_sea_level", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Sea Level Pressure", - "comment": "Sea Level Pressure", - "dimensions": "longitude latitude time", - "out_name": "psl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlds": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Longwave Radiation", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. 'longwave' means longwave radiation. Downwelling radiation is radiation from above. It does not mean 'net downward'. When thought of as being incident on a surface, a radiative flux is sometimes called 'irradiance'. In addition, it is identical with the quantity measured by a cosine-collector light-meter and sometimes called 'vector irradiance'. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude time", - "out_name": "rlds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rldscs": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", - "comment": "Surface downwelling clear-sky longwave radiation", - "dimensions": "longitude latitude time", - "out_name": "rldscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlus": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_longwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Longwave Radiation", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. 'longwave' means longwave radiation. Upwelling radiation is radiation from below. It does not mean 'net upward'. When thought of as being incident on a surface, a radiative flux is sometimes called 'irradiance'. In addition, it is identical with the quantity measured by a cosine-collector light-meter and sometimes called 'vector irradiance'. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude time", - "out_name": "rlus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlut": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Longwave Radiation", - "comment": "at the top of the atmosphere (to be compared with satellite measurements)", - "dimensions": "longitude latitude time", - "out_name": "rlut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlutcs": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", - "comment": "Upwelling clear-sky longwave radiation at top of atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rlutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsds": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Shortwave Radiation", - "comment": "surface solar irradiance for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdscs": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", - "comment": "surface solar irradiance clear sky for UV calculations", - "dimensions": "longitude latitude time", - "out_name": "rsdscs", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdt": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "toa_incoming_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Incident Shortwave Radiation", - "comment": "Shortwave radiation incident at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsdt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsus": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Shortwave Radiation", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. 'shortwave' means shortwave radiation. Upwelling radiation is radiation from below. It does not mean 'net upward'. When thought of as being incident on a surface, a radiative flux is sometimes called 'irradiance'. In addition, it is identical with the quantity measured by a cosine-collector light-meter and sometimes called 'vector irradiance'. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude time", - "out_name": "rsus", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsuscs": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", - "comment": "Surface Upwelling Clear-sky Shortwave Radiation", - "dimensions": "longitude latitude time", - "out_name": "rsuscs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsut": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Shortwave Radiation", - "comment": "at the top of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "rsut", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsutcs": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", - "comment": "Calculated in the absence of clouds.", - "dimensions": "longitude latitude time", - "out_name": "rsutcs", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rtmt": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", - "units": "W m-2", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Net Downward Flux at Top of Model", - "comment": "Net Downward Radiative Flux at Top of Model : I.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", - "dimensions": "longitude latitude time", - "out_name": "rtmt", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sbl": { - "frequency": "mon", - "modeling_realm": "landIce", - "standard_name": "tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_snow_and_ice", - "units": "kg m-2 s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Snow and Ice Sublimation Flux", - "comment": "The snow and ice sublimation flux is the loss of snow and ice mass per unit area from the surface resulting from their direct conversion to water vapor that enters the atmosphere.", - "dimensions": "longitude latitude time", - "out_name": "sbl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sci": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "shallow_convection_time_fraction", - "units": "1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Fraction of Time Shallow Convection Occurs", - "comment": "Fraction of time that shallow convection occurs in the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "sci", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfcWind": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "wind_speed", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Wind Speed", - "comment": "near-surface (usually, 10 meters) wind speed.", - "dimensions": "longitude latitude time height10m", - "out_name": "sfcWind", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ta": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Air Temperature", - "comment": "Air Temperature", - "dimensions": "longitude latitude plev19 time", - "out_name": "ta", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tas": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Near-Surface Air Temperature", - "comment": "near-surface (usually, 2 meter) air temperature", - "dimensions": "longitude latitude time height2m", - "out_name": "tas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmax": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: maximum within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Daily Maximum Near-Surface Air Temperature", - "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tasmin": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "air_temperature", - "units": "K", - "cell_methods": "area: mean time: minimum within days time: mean over days", - "cell_measures": "area: areacella", - "long_name": "Daily Minimum Near-Surface Air Temperature", - "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", - "dimensions": "longitude latitude time height2m", - "out_name": "tasmin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauu": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_downward_eastward_stress", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downward Eastward Wind Stress", - "comment": "Downward eastward wind stress at the surface", - "dimensions": "longitude latitude time", - "out_name": "tauu", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauv": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_downward_northward_stress", - "units": "Pa", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Downward Northward Wind Stress", - "comment": "Downward northward wind stress at the surface", - "dimensions": "longitude latitude time", - "out_name": "tauv", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ts": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "surface_temperature", - "units": "K", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Surface Temperature", - "comment": "Temperature of the lower boundary of the atmosphere", - "dimensions": "longitude latitude time", - "out_name": "ts", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ua": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Wind", - "comment": "'Eastward' indicates a vector component which is positive when directed eastward (negative westward). Wind is defined as a two-dimensional (horizontal) air velocity vector, with no vertical component. (Vertical motion in the atmosphere has the standard name upward_air_velocity.)", - "dimensions": "longitude latitude plev19 time", - "out_name": "ua", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uas": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "eastward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Eastward Near-Surface Wind", - "comment": "Eastward component of the near-surface (usually, 10 meters) wind", - "dimensions": "longitude latitude time height10m", - "out_name": "uas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "va": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Wind", - "comment": "'Northward' indicates a vector component which is positive when directed northward (negative southward). Wind is defined as a two-dimensional (horizontal) air velocity vector, with no vertical component. (Vertical motion in the atmosphere has the standard name upward_air_velocity.)", - "dimensions": "longitude latitude plev19 time", - "out_name": "va", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vas": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "northward_wind", - "units": "m s-1", - "cell_methods": "area: time: mean", - "cell_measures": "area: areacella", - "long_name": "Northward Near-Surface Wind", - "comment": "Northward component of the near surface wind", - "dimensions": "longitude latitude time height10m", - "out_name": "vas", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wap": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "lagrangian_tendency_of_air_pressure", - "units": "Pa s-1", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "omega (=dp/dt)", - "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", - "dimensions": "longitude latitude plev19 time", - "out_name": "wap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zg": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "geopotential_height", - "units": "m", - "cell_methods": "time: mean", - "cell_measures": "area: areacella", - "long_name": "Geopotential Height", - "comment": "Geopotential is the sum of the specific gravitational potential energy relative to the geoid and the specific centripetal potential energy. Geopotential height is the geopotential divided by the standard acceleration due to gravity. It is numerically similar to the altitude (or geometric height) and not to the quantity with standard name height, which is relative to the surface.", - "dimensions": "longitude latitude plev19 time", - "out_name": "zg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/mydoc/examples/CMIP6_CV.json b/mydoc/examples/CMIP6_CV.json deleted file mode 100644 index 5d9475d..0000000 --- a/mydoc/examples/CMIP6_CV.json +++ /dev/null @@ -1,9077 +0,0 @@ -{ - "CV":{ - "required_global_attributes":[ - "Conventions", - "activity_id", - "creation_date", - "data_specs_version", - "experiment", - "experiment_id", - "forcing_index", - "frequency", - "further_info_url", - "grid", - "grid_label", - "initialization_index", - "institution", - "institution_id", - "license", - "mip_era", - "nominal_resolution", - "physics_index", - "product", - "realization_index", - "realm", - "source", - "source_id", - "source_type", - "sub_experiment", - "sub_experiment_id", - "table_id", - "tracking_id", - "variable_id", - "variant_label" - ], - "version_metadata":{ - "CV_collection_modified":"Tue Jul 31 17:33:00 2018 -0700", - "CV_collection_version":"6.2.11.2", - "author":"Paul J. Durack ", - "experiment_id_CV_modified":"Wed Jul 25 07:56:41 2018 -0700", - "experiment_id_CV_note":"Revise LS3MIP experiment_ids, add land-ssp126", - "institution_id":"PCMDI", - "previous_commit":"80f0f714fd30fee5fe9e41c58e60a6d520c0e0d2", - "specs_doc":"v6.2.6 (20th December 2017; https://goo.gl/v1drZl)" - }, - "activity_id":{ - "AerChemMIP":"Aerosols and Chemistry Model Intercomparison Project", - "C4MIP":"Coupled Climate Carbon Cycle Model Intercomparison Project", - "CDRMIP":"Carbon Dioxide Removal Model Intercomparison Project", - "CFMIP":"Cloud Feedback Model Intercomparison Project", - "CMIP":"CMIP DECK: 1pctCO2, abrupt4xCO2, amip, esm-piControl, esm-historical, historical, and piControl experiments", - "CORDEX":"Coordinated Regional Climate Downscaling Experiment", - "DAMIP":"Detection and Attribution Model Intercomparison Project", - "DCPP":"Decadal Climate Prediction Project", - "DynVarMIP":"Dynamics and Variability Model Intercomparison Project", - "FAFMIP":"Flux-Anomaly-Forced Model Intercomparison Project", - "GMMIP":"Global Monsoons Model Intercomparison Project", - "GeoMIP":"Geoengineering Model Intercomparison Project", - "HighResMIP":"High-Resolution Model Intercomparison Project", - "ISMIP6":"Ice Sheet Model Intercomparison Project for CMIP6", - "LS3MIP":"Land Surface, Snow and Soil Moisture", - "LUMIP":"Land-Use Model Intercomparison Project", - "OMIP":"Ocean Model Intercomparison Project", - "PAMIP":"Polar Amplification Model Intercomparison Project", - "PMIP":"Palaeoclimate Modelling Intercomparison Project", - "RFMIP":"Radiative Forcing Model Intercomparison Project", - "SIMIP":"Sea Ice Model Intercomparison Project", - "ScenarioMIP":"Scenario Model Intercomparison Project", - "VIACSAB":"Vulnerability, Impacts, Adaptation and Climate Services Advisory Board", - "VolMIP":"Volcanic Forcings Model Intercomparison Project" - }, - "institution_id":{ - "AER":"Research and Climate Group, Atmospheric and Environmental Research, 131 Hartwell Avenue, Lexington, MA 02421, USA", - "AWI":"Alfred Wegener Institute, Helmholtz Centre for Polar and Marine Research, Am Handelshafen 12, 27570 Bremerhaven, Germany", - "BCC":"Beijing Climate Center, Beijing 100081, China", - "BNU":"Beijing Normal University, Beijing 100875, China", - "CAMS":"Chinese Academy of Meteorological Sciences, Beijing 100081, China", - "CAS":"Chinese Academy of Sciences, Beijing 100029, China", - "CCCR-IITM":"Centre for Climate Change Research, Indian Institute of Tropical Meteorology Pune, Maharashtra 411 008, India", - "CCCma":"Canadian Centre for Climate Modelling and Analysis, Victoria, BC V8P 5C2, Canada", - "CMCC":"Fondazione Centro Euro-Mediterraneo sui Cambiamenti Climatici, Lecce 73100, Italy", - "CNRM-CERFACS":"CNRM (Centre National de Recherches Meteorologiques, Toulouse 31057, France), CERFACS (Centre Europeen de Recherche et de Formation Avancee en Calcul Scientifique, Toulouse 31057, France)", - "CSIR-CSIRO":"CSIR (Council for Scientific and Industrial Research - Natural Resources and the Environment, Pretoria, 0001, South Africa), CSIRO (Commonwealth Scientific and Industrial Research Organisation and Bureau of Meteorology, Melbourne, Victoria 3208, Australia)", - "CSIRO":"Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia", - "CSIRO-ARCCSS-BoM":"Commonwealth Scientific and Industrial Research Organisation, Australian Research Council Centre of Excellence for Climate System Science, and Bureau of Meteorology, Aspendale, Victoria 3195, Australia", - "DKRZ":"Deutsches Klimarechenzentrum, Hamburg 20146, Germany", - "DWD":"Deutscher Wetterdienst, Offenbach am Main 63067, Germany", - "E3SM-Project":"LLNL (Lawrence Livermore National Laboratory, Livermore, CA 94550, USA); ANL (Argonne National Laboratory, Argonne, IL 60439, USA); BNL (Brookhaven National Laboratory, Upton, NY 11973, USA); LANL (Los Alamos National Laboratory, Los Alamos, NM 87545, USA); LBNL (Lawrence Berkeley National Laboratory, Berkeley, CA 94720, USA); ORNL (Oak Ridge National Laboratory, Oak Ridge, TN 37831, USA); PNNL (Pacific Northwest National Laboratory, Richland, WA 99352, USA); SNL (Sandia National Laboratories, Albuquerque, NM 87185, USA). Mailing address: LLNL Climate Program, c/o David C. Bader, Principal Investigator, L-103, 7000 East Avenue, Livermore, CA 94550, USA", - "EC-Earth-Consortium":"AEMET, Spain; BSC, Spain; CNR-ISAC, Italy; DMI, Denmark; ENEA, Italy; FMI, Finland; Geomar, Germany; ICHEC, Ireland; ICTP, Italy; IDL, Portugal; IMAU, The Netherlands; IPMA, Portugal; KIT, Karlsruhe, Germany; KNMI, The Netherlands; Lund University, Sweden; Met Eireann, Ireland; NLeSC, The Netherlands; NTNU, Norway; Oxford University, UK; surfSARA, The Netherlands; SMHI, Sweden; Stockholm University, Sweden; Unite ASTR, Belgium; University College Dublin, Ireland; University of Bergen, Norway; University of Copenhagen, Denmark; University of Helsinki, Finland; University of Santiago de Compostela, Spain; Uppsala University, Sweden; Utrecht University, The Netherlands; Vrije Universiteit Amsterdam, the Netherlands; Wageningen University, The Netherlands. Mailing address: EC-Earth consortium, Rossby Center, Swedish Meteorological and Hydrological Institute/SMHI, SE-601 76 Norrkoping, Sweden", - "ECMWF":"European Centre for Medium-Range Weather Forecasts, Reading RG2 9AX, UK", - "FIO-QLNM":"FIO (First Institute of Oceanography, State Oceanic Administration, Qingdao 266061, China), QNLM (Qingdao National Laboratory for Marine Science and Technology, Qingdao 266237, China)", - "HAMMOZ-Consortium":"ETH Zurich, Switzerland; Max Planck Institut fur Meteorologie, Germany; Forschungszentrum Julich, Germany; University of Oxford, UK; Finnish Meteorological Institute, Finland; Leibniz Institute for Tropospheric Research, Germany; Center for Climate Systems Modeling (C2SM) at ETH Zurich, Switzerland", - "INM":"Institute for Numerical Mathematics, Russian Academy of Science, Moscow 119991, Russia", - "INPE":"National Institute for Space Research, Cachoeira Paulista, SP 12630-000, Brazil", - "IPSL":"Institut Pierre Simon Laplace, Paris 75252, France", - "KIOST":"Korea Institute of Ocean Science & Technology, Busan 49111, Republic of Korea", - "MESSy-Consortium":"The Modular Earth Submodel System (MESSy) Consortium, represented by the Institute for Physics of the Atmosphere, Deutsches Zentrum fur Luft- und Raumfahrt (DLR), Wessling, Bavaria 82234, Germany", - "MIROC":"JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa 236-0001, Japan), AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba 277-8564, Japan), NIES (National Institute for Environmental Studies, Ibaraki 305-8506, Japan), and R-CCS (RIKEN Center for Computational Science, Hyogo 650-0047, Japan)", - "MOHC":"Met Office Hadley Centre, Fitzroy Road, Exeter, Devon, EX1 3PB, UK", - "MPI-M":"Max Planck Institute for Meteorology, Hamburg 20146, Germany", - "MRI":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", - "NASA-GISS":"Goddard Institute for Space Studies, New York, NY 10025, USA", - "NCAR":"National Center for Atmospheric Research, Climate and Global Dynamics Laboratory, 1850 Table Mesa Drive, Boulder, CO 80305, USA", - "NCC":"NorESM Climate modeling Consortium consisting of CICERO (Center for International Climate and Environmental Research, Oslo 0349), MET-Norway (Norwegian Meteorological Institute, Oslo 0313), NERSC (Nansen Environmental and Remote Sensing Center, Bergen 5006), NILU (Norwegian Institute for Air Research, Kjeller 2027), UiB (University of Bergen, Bergen 5007), UiO (University of Oslo, Oslo 0313) and UNI (Uni Research, Bergen 5008), Norway. Mailing address: NCC, c/o MET-Norway, Henrik Mohns plass 1, Oslo 0313, Norway", - "NERC":"Natural Environment Research Council, STFC-RAL, Harwell, Oxford, OX11 0QX, UK", - "NIMS-KMA":"National Institute of Meteorological Sciences/Korea Meteorological Administration, Climate Research Division, Seoho-bukro 33, Seogwipo-si, Jejudo 63568, Republic of Korea", - "NIWA":"National Institute of Water and Atmospheric Research, Hataitai, Wellington 6021, New Zealand", - "NOAA-GFDL":"National Oceanic and Atmospheric Administration, Geophysical Fluid Dynamics Laboratory, Princeton, NJ 08540, USA", - "NUIST":"Nanjing University of Information Science and Technology, Nanjing, 210044, China", - "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", - "SNU":"Seoul National University, Seoul 08826, Republic of Korea", - "THU":"Department of Earth System Science, Tsinghua University, Beijing 100084, China", - "UA":"Department of Geosciences, University of Arizona, Tucson, AZ 85721, USA", - "UHH":"Universitat Hamburg, Hamburg 20148, Germany", - "UTAS":"Institute for Marine and Antarctic Studies, University of Tasmania, Hobart, Tasmania 7001, Australia", - "UofT":"Department of Physics, University of Toronto, 60 St George Street, Toronto, ON M5S1A7, Canada" - }, - "source_id":{ - "ACCESS-CM2":{ - "activity_participation":[ - "CMIP", - "FAFMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CSIRO-ARCCSS-BoM" - ], - "source_id":"ACCESS-CM2", - "source":"ACCESS-CM2 (2018): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N96; 192 x 144 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: CABLE2.3.5\nlandIce: none\nocean: ACCESS-OM2 (GFDL-MOM5, tripolar primarily 1deg; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE5.1 (same grid as ocean)" - }, - "ACCESS-ESM1-5":{ - "activity_participation":[ - "C4MIP", - "CDRMIP", - "CMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CSIRO" - ], - "source_id":"ACCESS-ESM1-5", - "source":"ACCESS-ESM1.5 (2018): \naerosol: CLASSIC (v1.0)\natmos: HadGAM2 (r1.1, N96; 192 x 145 longitude/latitude; 38 levels; top level 39255 m)\natmosChem: none\nland: CABLE2.2.3\nlandIce: none\nocean: ACCESS-OM2 (MOM5, tripolar primarily 1deg; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: WOMBAT1.0 (same grid as ocean)\nseaIce: CICE5.1 (same grid as ocean)" - }, - "ARTS-2-3":{ - "activity_participation":[ - "RFMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "UHH" - ], - "source_id":"ARTS-2-3", - "source":"ARTS 2.3 (2015): \naerosol: none\natmos: none\natmosChem: none\nland: none\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: none" - }, - "AWI-CM-1-1-HR":{ - "activity_participation":[ - "CMIP", - "CORDEX", - "HighResMIP", - "OMIP", - "SIMIP", - "VIACSAB" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "AWI" - ], - "source_id":"AWI-CM-1-1-HR", - "source":"AWI-CM 1.1 HR (2018): \naerosol: none\natmos: ECHAM6.3.04p1 (T127L95 native atmosphere T127 gaussian grid; 384 x 192 longitude/latitude; 95 levels; top level 80 km)\natmosChem: none\nland: JSBACH 3.20\nlandIce: none\nocean: FESOM 1.4 (unstructured grid in the horizontal with 1306775 wet nodes; 46 levels; top grid cell 0-5 m)\nocnBgchem: none\nseaIce: FESOM 1.4" - }, - "AWI-CM-1-1-LR":{ - "activity_participation":[ - "CMIP", - "CORDEX", - "HighResMIP", - "OMIP", - "PMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "AWI" - ], - "source_id":"AWI-CM-1-1-LR", - "source":"AWI-CM 1.1 LR (2018): \naerosol: none\natmos: ECHAM6.3.04p1 (T63L47 native atmosphere T63 gaussian grid; 192 x 96 longitude/latitude; 47 levels; top level 80 km)\natmosChem: none\nland: JSBACH 3.20\nlandIce: none\nocean: FESOM 1.4 (unstructured grid in the horizontal with 126859 wet nodes; 46 levels; top grid cell 0-5 m)\nocnBgchem: none\nseaIce: FESOM 1.4" - }, - "AWI-CM-1-1-MR":{ - "activity_participation":[ - "CMIP", - "CORDEX", - "OMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "AWI" - ], - "source_id":"AWI-CM-1-1-MR", - "source":"AWI-CM 1.1 MR (2018): \naerosol: none\natmos: ECHAM6.3.04p1 (T127L95 native atmosphere T127 gaussian grid; 384 x 192 longitude/latitude; 95 levels; top level 80 km)\natmosChem: none\nland: JSBACH 3.20\nlandIce: none\nocean: FESOM 1.4 (unstructured grid in the horizontal with 830305 wet nodes; 46 levels; top grid cell 0-5 m)\nocnBgchem: none\nseaIce: FESOM 1.4" - }, - "BCC-CSM2-HR":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "BCC" - ], - "source_id":"BCC-CSM2-HR", - "source":"BCC-CSM 2 HR (2017): \naerosol: none\natmos: BCC_AGCM3_LR (T266; 800 x 400 longitude/latitude; 56 levels; top level 0.1 hPa)\natmosChem: none\nland: BCC_AVIM2\nlandIce: none\nocean: MOM4 (1/3 deg 30S-30N, 1/3-1 deg 30-60 N/S, and 1 deg in high latitudes; 360 x 232 longitude/latitude; 40 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: SIS2" - }, - "BCC-CSM2-MR":{ - "activity_participation":[ - "C4MIP", - "CFMIP", - "CMIP", - "DAMIP", - "DCPP", - "GMMIP", - "LS3MIP", - "LUMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "BCC" - ], - "source_id":"BCC-CSM2-MR", - "source":"BCC-CSM 2 MR (2017): \naerosol: none\natmos: BCC_AGCM3_MR (T106; 320 x 160 longitude/latitude; 46 levels; top level 1.46 hPa)\natmosChem: none\nland: BCC_AVIM2\nlandIce: none\nocean: MOM4 (1/3 deg 30S-30N, 1/3-1 deg 30-60 N/S, and 1 deg in high latitudes; 360 x 232 longitude/latitude; 40 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: SIS2" - }, - "BCC-ESM1":{ - "activity_participation":[ - "AerChemMIP", - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "BCC" - ], - "source_id":"BCC-ESM1", - "source":"BCC-ESM 1 (2017): \naerosol: none\natmos: BCC_AGCM3_LR (T42; 128 x 64 longitude/latitude; 26 levels; top level 2.19 hPa)\natmosChem: BCC-AGCM3-Chem\nland: BCC_AVIM2\nlandIce: none\nocean: MOM4 (1/3 deg 30S-30N, 1/3-1 deg 30-60 N/S, and 1 deg in high latitudes; 360 x 232 longitude/latitude; 40 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: SIS2" - }, - "BESM-2-7":{ - "activity_participation":[ - "CMIP", - "DCPP", - "HighResMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "INPE" - ], - "source_id":"BESM-2-7", - "source":"BESM 2.7 (2017): \naerosol: none\natmos: BAM (v1.0, T062L28; 192 x 96 longitude/latitude; 28 levels; top level 3 hPa)\natmosChem: none\nland: SSiB 2.0\nlandIce: none\nocean: MOM-5 (MOM5, tripolar primarily 1 deg, 1/4 deg between 10S-10N; 360 x 300 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: TOPAZ 2.0\nseaIce: SIS 1.0" - }, - "BNU-ESM-1-1":{ - "activity_participation":[ - "C4MIP", - "CDRMIP", - "CFMIP", - "CMIP", - "GMMIP", - "GeoMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "BNU" - ], - "source_id":"BNU-ESM-1-1", - "source":"BNU-ESM 1.1 (2016): \naerosol: CAM-chem; semi-interactive\natmos: CAM4 (2deg; 144 x 96 longitude/latitude; 26 levels; top level 2.194 mb)\natmosChem: none\nland: CoLM version 2014 with carbon-nitrogen interactions\nlandIce: none\nocean: MOM4p1 (tripolar, primarily 1deg latitude/longitude, down to 1/3deg within 30deg of the equatorial tropics; 360 x 200 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: Dynamic ecosystem-carbon model version 1\nseaIce: CICE4.1" - }, - "CAMS-CSM1-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CAMS" - ], - "source_id":"CAMS-CSM1-0", - "source":"CAMS_CSM 1.0 (2016): \naerosol: none\natmos: ECHAM5_CAMS (T106; 320 x 160 longitude/latitude; 31 levels; top level 10 mb)\natmosChem: none\nland: CoLM 1.0\nlandIce: none\nocean: MOM4 (tripolar; 360 x 200 longitude/latitude, primarily 1deg latitude/longitude, down to 1/3deg within 30deg of the equatorial tropics; 50 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: SIS 1.0" - }, - "CAS-ESM1-0":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CFMIP", - "CMIP", - "CORDEX", - "DAMIP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "GeoMIP", - "HighResMIP", - "LS3MIP", - "LUMIP", - "OMIP", - "PMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CAS" - ], - "source_id":"CAS-ESM1-0", - "source":"CAS-ESM 1.0 (2015): \naerosol: IAP AACM\natmos: IAP AGCM4.1 (Finite difference dynamical core; 256 x 128 longitude/latitude; 30 levels; top level 2.2 hPa)\natmosChem: IAP AACM\nland: CoLM\nlandIce: none\nocean: LICOM2.0 (LICOM2.0, primarily 1deg; 362 x 196 longitude/latitude; 30 levels; top grid cell 0-10 m)\nocnBgchem: IAP OBGCM\nseaIce: CICE4" - }, - "CESM2":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CDRMIP", - "CFMIP", - "CMIP", - "CORDEX", - "DAMIP", - "DCPP", - "DynVarMIP", - "GMMIP", - "GeoMIP", - "HighResMIP", - "ISMIP6", - "LS3MIP", - "LUMIP", - "OMIP", - "PAMIP", - "PMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCAR" - ], - "source_id":"CESM2", - "source":"CESM2 (2018): \naerosol: MAM4 (same grid as atmos)\natmos: CAM6 (0.9x1.25 finite volume grid; 288 x 192 longitude/latitude; 32 levels; top level 2.25 mb)\natmosChem: MAM4 (same grid as atmos)\nland: CLM5 (same grid as atmos)\nlandIce: CISM2.1\nocean: POP2 (320x384 longitude/latitude; 60 levels; top grid cell 0-10 m)\nocnBgchem: MARBL (same grid as ocean)\nseaIce: CICE5.1 (same grid as ocean)" - }, - "CIESM":{ - "activity_participation":[ - "CFMIP", - "CMIP", - "CORDEX", - "GMMIP", - "HighResMIP", - "OMIP", - "SIMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "THU" - ], - "source_id":"CIESM", - "source":"CIESM (2017): \naerosol: MAM4\natmos: CIESM-AM (FV/FD; 288 x 192 longitude/latitude; 30 levels; top level 2.255 hPa)\natmosChem: trop_mam4\nland: CIESM-LM (modified CLM4.5)\nlandIce: none\nocean: CIESM-OM (FD, SCCGrid Displaced Pole; 720 x 560 longitude/latitude; 46 levels; top grid cell 0-6 m)\nocnBgchem: none\nseaIce: CICE4" - }, - "CMCC-CM2-HR4":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-HR4", - "source":"CMCC-CM2-HR4 (2016): \naerosol: prescribed MACv2-SP\natmos: CAM4 (1deg; 288 x 192 longitude/latitude; 26 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (SP mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-CM2-HR5":{ - "activity_participation":[ - "CMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-HR5", - "source":"CMCC-CM2-HR5 (2017): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-CM2-SR5":{ - "activity_participation":[ - "CMIP", - "DCPP", - "GMMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-SR5", - "source":"CMCC-CM2-SR5 (2016): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarly 1 deg lat/lon with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-CM2-VHR4":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-CM2-VHR4", - "source":"CMCC-CM2-VHR4 (2017): \naerosol: prescribed MACv2-SP\natmos: CAM4 (1/4deg; 1152 x 768 longitude/latitude; 26 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (SP mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "CMCC-ESM2-HR5":{ - "activity_participation":[ - "CMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-ESM2-HR5", - "source":"CMCC-ESM2-HR5 (2017): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA0.25 1/4 deg from the Equator degrading at the poles; 1442 x 1051 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: BFM5.1\nseaIce: CICE4.0" - }, - "CMCC-ESM2-SR5":{ - "activity_participation":[ - "C4MIP", - "CMIP", - "LS3MIP", - "LUMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CMCC" - ], - "source_id":"CMCC-ESM2-SR5", - "source":"CMCC-ESM2-SR5 (2017): \naerosol: MAM3\natmos: CAM5.3 (1deg; 288 x 192 longitude/latitude; 30 levels; top at ~2 hPa)\natmosChem: none\nland: CLM4.5 (BGC mode)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarly 1 deg lat/lon with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 50 vertical levels; top grid cell 0-1 m)\nocnBgchem: BFM5.1\nseaIce: CICE4.0" - }, - "CNRM-CM6-1":{ - "activity_participation":[ - "CFMIP", - "CMIP", - "DAMIP", - "DCPP", - "FAFMIP", - "GMMIP", - "HighResMIP", - "ISMIP6", - "LS3MIP", - "PMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-CM6-1", - "source":"CNRM-CM6-1 (2017): \naerosol: prescribed monthly fields computed by TACTIC_v2 scheme\natmos: Arpege 6.3 (T127; Gaussian Reduced with 24572 grid points in total distributed over 128 latitude circles (with 256 grid points per latitude circle between 30degN and 30degS reducing to 20 grid points per latitude circle at 88.9degN and 88.9degS); 91 levels; top level 78.4 km)\natmosChem: OZL_v2\nland: Surfex 8.0c\nlandIce: GRISLI: Collaborating with l'Institut des Geosciences de l'Environnement in Grenoble on offline ice-sheet simulations\nocean: Nemo 3.6 (eORCA1, tripolar primarily 1deg; 362 x 294 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: Gelato 6.1" - }, - "CNRM-CM6-1-HR":{ - "activity_participation":[ - "CMIP", - "DCPP", - "HighResMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-CM6-1-HR", - "source":"CNRM-CM6-1-HR (2017): \naerosol: prescribed monthly fields computed by TACTIC_v2 scheme\natmos: Arpege 6.3 (T359; Gaussian Reduced with 181724 grid points in total distributed over 360 latitude circles (with 720 grid points per latitude circle between 32.2degN and 32.2degS reducing to 18 grid points per latitude circle at 89.6degN and 89.6degS); 91 levels; top level 78.4 km)\natmosChem: OZL_v2\nland: Surfex 8.0c\nlandIce: none\nocean: Nemo 3.6 (eORCA025, tripolar primarily 1/4deg; 1442 x 1050 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: Gelato 6.1" - }, - "CNRM-ESM2-1":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CMIP", - "GeoMIP", - "LUMIP", - "OMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-ESM2-1", - "source":"CNRM-ESM2-1 (2017): \naerosol: TACTIC_v2\natmos: Arpege 6.3 (T127; Gaussian Reduced with 24572 grid points in total distributed over 128 latitude circles (with 256 grid points per latitude circle between 30degN and 30degS reducing to 20 grid points per latitude circle at 88.9degN and 88.9degS); 91 levels; top level 78.4 km)\natmosChem: REPROBUS-C_v2\nland: Surfex 8.0c\nlandIce: none\nocean: Nemo 3.6 (eORCA1, tripolar primarily 1deg; 362 x 294 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: Pisces 2.s\nseaIce: Gelato 6.1" - }, - "CNRM-ESM2-1-HR":{ - "activity_participation":[ - "CMIP", - "OMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CNRM-CERFACS" - ], - "source_id":"CNRM-ESM2-1-HR", - "source":"CNRM-ESM2-1-HR (2017): \naerosol: TACTIC_v2\natmos: Arpege 6.3 (T359; Gaussian Reduced with 181724 grid points in total distributed over 360 latitude circles (with 720 grid points per latitude circle between 32.2degN and 32.2degS reducing to 18 grid points per latitude circle at 89.6degN and 89.6degS); 91 levels; top level 78.4 km)\natmosChem: REPROBUS-C_v2\nland: Surfex 8.0c\nlandIce: none\nocean: Nemo 3.6 (eORCA025, tripolar primarily 1/4deg; 1442 x 1050 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: Pisces 2.s\nseaIce: Gelato 6.1" - }, - "CSIRO-Mk3L-1-3":{ - "activity_participation":[ - "CMIP", - "PMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "UTAS" - ], - "source_id":"CSIRO-Mk3L-1-3", - "source":"CSIRO Mk3L 1.3 (2006): \naerosol: none\natmos: unnamed (R21; 64 x 56 longitude/latitude; 18 levels; top level 36355 m)\natmosChem: none\nland: unnamed\nlandIce: none\nocean: MOM1.x (128 x 112 longitude/latitude; 31 levels; top grid cell 0-10 m; bottom grid cell 4600-5000 m)\nocnBgchem: none\nseaIce: unnamed (same grid as atmosphere)" - }, - "CanESM5":{ - "activity_participation":[ - "C4MIP", - "CFMIP", - "CMIP", - "CORDEX", - "DAMIP", - "DCPP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "GeoMIP", - "ISMIP6", - "LS3MIP", - "LUMIP", - "OMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CCCma" - ], - "source_id":"CanESM5", - "source":"CanESM5 (2017): \naerosol: interactive\natmos: CanAM5 (T63L49 native atmosphere, T63 Linear Gaussian Grid; 128 x 64 longitude/latitude; 49 levels; top level 1 hPa)\natmosChem: fast chemistry, aerosol only\nland: CLASS3.6/CTEM1.2\nlandIce: none\nocean: NEMO3.4.1 (ORCA1, tripolar grid, 1 deg with refinement to 1/3 deg within 20 degrees of the equator; 362 x 292 longitude/latitude; 41 vertical levels; top grid cell 0-10 m)\nocnBgchem: CanOE\nseaIce: LIM2" - }, - "E3SM-1-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "E3SM-Project" - ], - "source_id":"E3SM-1-0", - "source":"E3SM 1.0 (2018): \naerosol: MAM4 with resuspension, marine organics, and secondary organics (same grid as atmos)\natmos: EAM (v1.0, cubed sphere spectral-element grid; 5400 elements with p=3; 1 deg average grid spacing; 90 x 90 x 6 longitude/latitude/cubeface; 72 levels; top level 0.1 hPa)\natmosChem: Troposphere specified oxidants for aerosols. Stratosphere linearized interactive ozone (LINOZ v2) (same grid as atmos)\nland: ELM (v1.0, cubed sphere spectral-element grid; 5400 elements with p=3; 1 deg average grid spacing; 90 x 90 x 6 longitude/latitude/cubeface; satellite phenology mode), MOSART (v1.0, 0.5 degree latitude/longitude grid)\nlandIce: none\nocean: MPAS-Ocean (v6.0, oEC60to30 unstructured SVTs mesh with 235160 cells and 714274 edges, variable resolution 60 km to 30 km; 60 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: MPAS-Seaice (v6.0, same grid as ocean)" - }, - "EC-Earth3":{ - "activity_participation":[ - "CMIP", - "CORDEX", - "DCPP", - "DynVarMIP", - "LS3MIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3", - "source":"EC-Earth3 (2018): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 deg with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-AerChem":{ - "activity_participation":[ - "AerChemMIP", - "CMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-AerChem", - "source":"EC-Earth3-AerChem (2018): \naerosol: TM5 (3 x 2 degrees; 120 x 90 longitude/latitude; 34 levels; top level: 0.1 hPa)\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: TM5 (3 x 2 degrees; 120 x 90 longitude/latitude; 34 levels; top level: 0.1 hPa)\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 degree with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-CC":{ - "activity_participation":[ - "C4MIP", - "CMIP", - "LUMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-CC", - "source":"EC-Earth3-CC (2018): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: TM5 (3 x 2 degrees; 120 x 90 longitude/latitude; 34 levels; top level: 0.1 hPa)\nland: HTESSEL (land surface scheme built in IFS) and LPJ-GUESS v4\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 degree with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: PISCES v2\nseaIce: LIM3" - }, - "EC-Earth3-GrIS":{ - "activity_participation":[ - "CMIP", - "ISMIP6", - "PMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-GrIS", - "source":"EC-Earth3-GrIS (2018): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: PISM 0.7 (5 km x 5 km, 442 levels)\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 degree with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-HR":{ - "activity_participation":[ - "DCPP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-HR", - "source":"EC-Earth3-HR (2017): \naerosol: none\natmos: IFS cy36r4 (TL511, linearly reduced Gaussian grid equivalent to 1024 x 512 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA025 tripolar primarily 0.25 degrees; 1442 x 1921 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-LR":{ - "activity_participation":[ - "CMIP", - "PMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-LR", - "source":"EC-Earth3-LR (2018): \naerosol: none\natmos: IFS cy36r4 (TL159, linearly reduced Gaussian grid equivalent to 320 x 160 longitude/latitude; 62 levels; top level 5 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 degree with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-Veg":{ - "activity_participation":[ - "CMIP", - "LS3MIP", - "LUMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-Veg", - "source":"EC-Earth3-Veg (2018): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS) and LPJ-GUESS v4\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 degree with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3-Veg-LR":{ - "activity_participation":[ - "CMIP", - "PMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3-Veg-LR", - "source":"EC-Earth3-Veg-LR (2018): \naerosol: none\natmos: IFS cy36r4 (TL159, linearly reduced Gaussian grid equivalent to 320 x 160 longitude/latitude; 62 levels; top level 5 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS) and LPJ-GUESS v4\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 degree with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3P":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3P", - "source":"EC-Earth3P (2017): \naerosol: none\natmos: IFS cy36r4 (TL255, linearly reduced Gaussian grid equivalent to 512 x 256 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA1 tripolar primarily 1 degree with meridional refinement down to 1/3 degree in the tropics; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3P-HR":{ - "activity_participation":[ - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3P-HR", - "source":"EC-Earth3P-HR (2017): \naerosol: none\natmos: IFS cy36r4 (TL511, linearly reduced Gaussian grid equivalent to 1024 x 512 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA025; tripolar primarily 0.25 degrees; 1442 x 1921 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "EC-Earth3P-VHR":{ - "activity_participation":[ - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "EC-Earth-Consortium" - ], - "source_id":"EC-Earth3P-VHR", - "source":"EC-Earth3P-VHR (2017): \naerosol: none\natmos: IFS cy36r4 (TL1279, linearly reduced Gaussian grid equivalent to 2560 x 1280 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (land surface scheme built in IFS)\nlandIce: none\nocean: NEMO3.6 (ORCA012 tripolar primarily 0.08 degrees; 4322 x 3059 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM3" - }, - "ECMWF-IFS-HR":{ - "activity_participation":[ - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "ECMWF" - ], - "source_id":"ECMWF-IFS-HR", - "source":"ECMWF-IFS-HR (2017): \naerosol: none\natmos: IFS (IFS CY43R1, Tco399, cubic octahedral reduced Gaussian grid equivalent to 1600 x 800 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (as implemented in IFS CY43R1)\nlandIce: none\nocean: NEMO3.4 (NEMO v3.4; ORCA025 tripolar grid; 1442 x 1021 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM2 (LIM v2; ORCA025 tripolar grid; 1442 x 1021 longitude/latitude)" - }, - "ECMWF-IFS-LR":{ - "activity_participation":[ - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "ECMWF" - ], - "source_id":"ECMWF-IFS-LR", - "source":"ECMWF-IFS-LR (2017): \naerosol: none\natmos: IFS (IFS CY43R1, Tco199, cubic octahedral reduced Gaussian grid equivalent to 800 x 400 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (as implemented in IFS CY43R1)\nlandIce: none\nocean: NEMO3.4 (NEMO v3.4; ORCA1 tripolar grid; 362 x 292 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM2 (LIM v2; ORCA1 tripolar grid; 362 x 292 longitude/latitude)" - }, - "ECMWF-IFS-MR":{ - "activity_participation":[ - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "ECMWF" - ], - "source_id":"ECMWF-IFS-MR", - "source":"ECMWF-IFS-MR (2017): \naerosol: none\natmos: IFS (IFS CY43R1, Tco199, cubic octahedral reduced Gaussian grid equivalent to 800 x 400 longitude/latitude; 91 levels; top level 0.01 hPa)\natmosChem: none\nland: HTESSEL (as implemented in IFS CY43R1)\nlandIce: none\nocean: NEMO3.4 (NEMO v3.4; ORCA025 tripolar grid; 1442 x 1021 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: LIM2 (LIM v2; ORCA025 tripolar grid; 1442 x 1021 longitude/latitude)" - }, - "EMAC-2-53-AerChem":{ - "activity_participation":[ - "AerChemMIP", - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MESSy-Consortium" - ], - "source_id":"EMAC-2-53-AerChem", - "source":"EMAC-2-53-AerChem (2017): \naerosol: gmxe 2.2.x\natmos: ECHAM5.3.02 (modified, spectral T42; 128 x 64 longitude/latitude; 47 levels; top level 0.01 hPa)\natmosChem: MECCA 3.8.x\nland: same as Atmosphere\nlandIce: none\nocean: MPIOM 1.3.0-beta (bipolar GR1.5, approximately 1.5deg; 256 x 220 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: none\nseaIce: thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model" - }, - "EMAC-2-53-Vol":{ - "activity_participation":[ - "CMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MESSy-Consortium" - ], - "source_id":"EMAC-2-53-Vol", - "source":"EMAC-2-53-Vol (2017): \naerosol: gmxe 2.2.x\natmos: ECHAM5.3.02 (modified; spectral T42; 128 x 64 longitude/latitude; 47 levels; top level 0.01 hPa)\natmosChem: MECCA 3.8.x\nland: same as Atmosphere\nlandIce: none\nocean: MPIOM 1.3.0-beta (bipolar GR1.5, approximately 1.5deg reducing toward the poles; 256 x 220 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: none\nseaIce: thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model" - }, - "FGOALS-f3-H":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CAS" - ], - "source_id":"FGOALS-f3-H", - "source":"FGOALS-f3-H (2017): \naerosol: none\natmos: FAMIL2.2 (Cubed-sphere, c384; 1440 x 720 longitude/latitude; 32 levels; top level 2.16 hPa)\natmosChem: none\nland: CLM4.0\nlandIce: none\nocean: LICOM3.0 (LICOM3.0, tripolar primarily 0.1deg; 3600 x 2302 longitude/latitude; 55 levels; top grid cell 0-5 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "FGOALS-f3-L":{ - "activity_participation":[ - "CMIP", - "DCPP", - "GMMIP", - "OMIP", - "SIMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CAS" - ], - "source_id":"FGOALS-f3-L", - "source":"FGOALS-f3-L (2017): \naerosol: none\natmos: FAMIL2.2 (Cubed-sphere, c96; 360 x 180 longitude/latitude; 32 levels; top level 2.16 hPa)\natmosChem: none\nland: CLM4.0\nlandIce: none\nocean: LICOM3.0 (LICOM3.0, tripolar primarily 1deg; 360 x 218 longitude/latitude; 30 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "FGOALS-g3":{ - "activity_participation":[ - "CMIP", - "CORDEX", - "DAMIP", - "DCPP", - "FAFMIP", - "GMMIP", - "LS3MIP", - "OMIP", - "PMIP", - "SIMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CAS" - ], - "source_id":"FGOALS-g3", - "source":"FGOALS-g3 (2017): \naerosol: none\natmos: GAMIL2 (180 x 90 longitude/latitude; 26 levels; top level 2.19hPa)\natmosChem: none\nland: CLM4.0\nlandIce: none\nocean: LICOM3.0 (LICOM3.0, tripolar primarily 1deg; 360 x 218 longitude/latitude; 30 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "FIO-ESM-2-0":{ - "activity_participation":[ - "CMIP", - "DCPP", - "GMMIP", - "OMIP", - "ScenarioMIP", - "SIMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "FIO-QLNM" - ], - "source_id":"FIO-ESM-2-0", - "source":"FIO-ESM 2.0 (2018): \naerosol: Prescribed monthly fields\natmos: CAM4 (0.9x1.25 finite volume grid; 192 x 288 longitude/latitude; 26 levels; top level ~2 hPa)\natmosChem: none\nland: CLM4.0 (same grid at atmos)\nlandIce: none\nocean: POP2-W (POP2 coupled with MASNUM surface wave model, Displaced Pole; 320 x 384 longitude/latitude; 60 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE4.0 (same grid as ocean)" - }, - "GFDL-AM4":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-AM4", - "source":"GFDL-AM4 (2018): \naerosol: interactive\natmos: GFDL-AM4.0 (Cubed-sphere (c96) - 1 degree nominal horizontal resolution; 360 x 180 longitude/latitude; 33 levels; top level 1 hPa)\natmosChem: fast chemistry, aerosol only\nland: GFDL-LM4.0\nlandIce: GFDL-LM4.0\nocean: none\nocnBgchem: none\nseaIce: none" - }, - "GFDL-CM4":{ - "activity_participation":[ - "CFMIP", - "CMIP", - "GMMIP", - "OMIP", - "RFMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-CM4", - "source":"GFDL-CM4 (2018): \naerosol: interactive\natmos: GFDL-AM4.1 (Cubed-sphere (c96) - 1 degree nominal horizontal resolution; 360 x 180 longitude/latitude; 33 levels; top level 1 hPa)\natmosChem: unnamed (fast chemistry, aerosol only)\nland: GFDL-LM4.0\nlandIce: GFDL-LM4.0\nocean: GFDL-MOM6 (tripolar - nominal 0.25 deg; 1440 x 720 longitude/latitude; 75 levels; top grid cell 0-2 m)\nocnBgchem: GFDL BLING v2\nseaIce: SIS2" - }, - "GFDL-CM4C192":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-CM4C192", - "source":"GFDL-CM4C192 (2018): \naerosol: interactive\natmos: GFDL-AM4.0.1 (Cubed-sphere (c192) - 0.5 degree nominal horizontal resolution; 720 x 360 longitude/latitude; 33 levels; top level 1 hPa)\natmosChem: unnamed (fast chemistry, aerosol only)\nland: GFDL-LM4.0.1\nlandIce: GFDL-LM4.0.1\nocean: GFDL-MOM6 (tripolar - nominal 0.25 deg; 1440 x 720 longitude/latitude; 75 levels; top grid cell 0-2 m)\nocnBgchem: none\nseaIce: SIS2" - }, - "GFDL-ESM2M":{ - "activity_participation":[ - "CMIP", - "FAFMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-ESM2M", - "source":"GFDL-ESM2M (2012): \naerosol: GFDL-AM2\natmos: GFDL-AM2 (Cubed-sphere (c48L24) - 2.5 degree lon x 2 degree lat; 144 x 90 longitude/latitude; 24 levels; top level ~3 hPa)\natmosChem: GFDL-AM2 (full atmospheric chemistry)\nland: GFDL-LM3.0\nlandIce: GFDL-LM3.0\nocean: GFDL-MOM4p1 (tripolar - nominal 1 deg; 360 x 200 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: SIS (Tripolar360x200L50)" - }, - "GFDL-ESM4":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CDRMIP", - "CMIP", - "DAMIP", - "DynVarMIP", - "LUMIP", - "OMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-ESM4", - "source":"GFDL-ESM4 (2018): \naerosol: interactive\natmos: GFDL-AM4.1 (Cubed-sphere (c96) - 1 degree nominal horizontal resolution; 360 x 180 longitude/latitude; 49 levels; top level 1 Pa)\natmosChem: GFDL-ATMCHEM4.1 (full atmospheric chemistry)\nland: GFDL-LM4.1\nlandIce: GFDL-LM4.1\nocean: GFDL-MOM6 (tripolar - nominal 0.5 deg; 720 x 360 longitude/latitude; 75 levels; top grid cell 0-2 m)\nocnBgchem: COBALT 2.0\nseaIce: SIS2" - }, - "GFDL-OM4p5B":{ - "activity_participation":[ - "CMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NOAA-GFDL" - ], - "source_id":"GFDL-OM4p5B", - "source":"GFDL-OM4p5B (2018): \naerosol: none\natmos: none\natmosChem: none\nland: none\nlandIce: none\nocean: GFDL-MOM6 (tripolar - nominal 0.5 deg; 720 x 576 longitude/latitude; 75 levels; top grid cell 0-2 m)\nocnBgchem: GFDL BLING v2\nseaIce: SIS2" - }, - "GISS-E2-1-G":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CFMIP", - "CMIP", - "DAMIP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "ISMIP6", - "LS3MIP", - "LUMIP", - "OMIP", - "PAMIP", - "PMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NASA-GISS" - ], - "source_id":"GISS-E2-1-G", - "source":"GISS-E2.1G (2016): \naerosol: Varies with physics-version (p==1 none, p==3 OMA, p==4 TOMAS, p==5 MATRIX)\natmos: GISS-E2.1 (2.5x2 degree; 144 x 90 longitude/latitude; 40 levels; top level 0.1 hPa)\natmosChem: Varies with physics-version (p==1 Non-interactive, p>1 GPUCCINI)\nland: GISS LSM\nlandIce: none\nocean: GISS Ocean (1 degree; 360 x 180 latitude/longitude; 32 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: GISS SI" - }, - "GISS-E2-1-H":{ - "activity_participation":[ - "CMIP", - "OMIP", - "PAMIP", - "SIMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NASA-GISS" - ], - "source_id":"GISS-E2-1-H", - "source":"GISS-E2.1H (2016): \naerosol: Varies with physics-version (p==1 none, p==3 OMA, p==4 TOMAS, p==5 MATRIX)\natmos: GISS-E2.1 (2.5x2 degree; 144 x 90 longitude/latitude; 40 levels; top level 0.1 hPa)\natmosChem: Varies with physics-version (p==1 Non-interactive, p>1 GPUCCINI)\nland: GISS LSM\nlandIce: none\nocean: HYCOM Ocean (~1 degree tripolar grid; 360 x 180 latitude/longitude; 26 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: GISS SI" - }, - "GISS-E2-1-MA-G":{ - "activity_participation":[ - "CMIP", - "RFMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NASA-GISS" - ], - "source_id":"GISS-E2-1-MA-G", - "source":"GISS-E2.1MA-G (2018): \naerosol: Varies with physics-version (p==1 none, p==3 OMA, p==4 TOMAS, p==5 MATRIX)\natmos: GISS-E2.1MA (2.5x2 degree; 144 x 90 longitude/latitude; 102 levels; top level 0.002 hPa)\natmosChem: Varies with physics-version (p==1 Non-interactive, p>1 GPUCCINI)\nland: GISS LSM\nlandIce: none\nocean: GISS Ocean (1 degree; 360 x 180 longitude/latitude; 32 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: GISS SI" - }, - "GISS-E3-G":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CFMIP", - "CMIP", - "DAMIP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "ISMIP6", - "LS3MIP", - "LUMIP", - "OMIP", - "PAMIP", - "PMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NASA-GISS" - ], - "source_id":"GISS-E3-G", - "source":"GISS-E3-G (2018): \naerosol: Varies with physics-version (p==1 none, p==3 OMA, p==4 TOMAS, p==5 MATRIX)\natmos: GISS-E3 (Cubed sphere, C90; 90 x 90 x 6 gridboxes/cubeface, grid resolution aligns with longitude/latitude along central lines for each cubeface; 102 levels; top level 0.002 hPa)\natmosChem: Varies with physics-version (p==1 Non-interactive, p>1 GPUCCINI)\nland: GISS LSM\nlandIce: none\nocean: GISS Ocean (1 degree; 360 x 180 longitude/latitude; 32 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: GISS SI" - }, - "HadGEM3-GC31-HH":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC", - "NERC" - ], - "source_id":"HadGEM3-GC31-HH", - "source":"HadGEM3-GC31-HH (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N512; 1024 x 768 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA12 tripolar primarily 1/12 deg; 4320 x 3604 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (eORCA12 tripolar primarily 1/12 deg; 4320 x 3604 longitude/latitude)" - }, - "HadGEM3-GC31-HM":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC", - "NERC" - ], - "source_id":"HadGEM3-GC31-HM", - "source":"HadGEM3-GC31-HM (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N512; 1024 x 768 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude)" - }, - "HadGEM3-GC31-LL":{ - "activity_participation":[ - "CFMIP", - "CMIP", - "DAMIP", - "FAFMIP", - "HighResMIP", - "PMIP", - "RFMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-LL", - "source":"HadGEM3-GC31-LL (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N96; 192 x 144 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA1 tripolar primarily 1 deg with meridional refinement down to 1/3 degree in the tropics; 360 x 330 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (eORCA1 tripolar primarily 1 deg; 360 x 330 longitude/latitude)" - }, - "HadGEM3-GC31-LM":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-LM", - "source":"HadGEM3-GC31-LM (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N96; 192 x 144 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude)" - }, - "HadGEM3-GC31-MH":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-MH", - "source":"HadGEM3-GC31-MH (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N216; 432 x 324 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA12 tripolar primarily 1/12 deg; 4320 x 3604 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (eORCA12 tripolar primarily 1/12 deg; 4320 x 3604 longitude/latitude)" - }, - "HadGEM3-GC31-MM":{ - "activity_participation":[ - "CMIP", - "DCPP", - "GMMIP", - "HighResMIP", - "LS3MIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC" - ], - "source_id":"HadGEM3-GC31-MM", - "source":"HadGEM3-GC31-MM (2016): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N216; 432 x 324 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude)" - }, - "ICON-ESM-LR":{ - "activity_participation":[ - "CMIP", - "OMIP", - "SIMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MPI-M" - ], - "source_id":"ICON-ESM-LR", - "source":"ICON-ESM-LR (2017): \naerosol: none, prescribed MACv2-SP\natmos: ICON-A (icosahedral/triangles; 160 km; 47 levels; top level 80 km)\natmosChem: none\nland: JSBACH4.20\nlandIce: none/prescribed\nocean: ICON-O (icosahedral/triangles; 40 km; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC\nseaIce: unnamed (thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model)" - }, - "IITM-ESM":{ - "activity_participation":[ - "CMIP", - "GMMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CCCR-IITM" - ], - "source_id":"IITM-ESM", - "source":"IITM-ESM (2015): \naerosol: prescribed MAC-v2\natmos: IITM-GFSv1 (T62L64, Linearly Reduced Gaussian Grid; 192 x 94 longitude/latitude; 64 levels; top level 0.2 mb)\natmosChem: none\nland: NOAH LSMv2.7.1\nlandIce: none\nocean: MOM4p1 (tripolar, primarily 1deg; 360 x 200 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: TOPAZv2.0\nseaIce: SISv1.0" - }, - "INM-CM4-8":{ - "activity_participation":[ - "CMIP", - "PMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "INM" - ], - "source_id":"INM-CM4-8", - "source":"INM-CM4-8 (2016): \naerosol: INM-AER1\natmos: INM-AM4-8 (2x1.5; 180 x 120 longitude/latitude; 21 levels; top level sigma = 0.01)\natmosChem: none\nland: INM-LND1\nlandIce: none\nocean: INM-OM5 (North Pole shifted to 60N, 90E; 360 x 318 longitude/latitude; 40 levels; sigma vertical coordinate)\nocnBgchem: none\nseaIce: INM-ICE1" - }, - "INM-CM5-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "INM" - ], - "source_id":"INM-CM5-0", - "source":"INM-CM5-0 (2016): \naerosol: INM-AER1\natmos: INM-AM5-0 (2x1.5; 180 x 120 longitude/latitude; 73 levels; top level sigma = 0.0002)\natmosChem: none\nland: INM-LND1\nlandIce: none\nocean: INM-OM5 (North Pole shifted to 60N, 90E. 0.5x0.25; 720 x 720 longitude/latitude; 40 levels; vertical sigma coordinate)\nocnBgchem: none\nseaIce: INM-ICE1" - }, - "INM-CM5-H":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "INM" - ], - "source_id":"INM-CM5-H", - "source":"INM-CM5-H (2016): \naerosol: INM-AER1\natmos: INM-AM5-H (0.67x0.5; 540 x 360 longitude/latitude; 73 levels; top level sigma = 0.0002)\natmosChem: none\nland: INM-LND1\nlandIce: none\nocean: INM-OM5-H (North Pole shifted to 60N, 90E. 0.167x0.125; 2160x1440 longitude/latitude; 40 levels; vertical sigma coordinate)\nocnBgchem: none\nseaIce: INM-ICE1" - }, - "IPSL-CM6A-ATM-HR":{ - "activity_participation":[ - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "IPSL" - ], - "source_id":"IPSL-CM6A-ATM-HR", - "source":"IPSL-CM6A-ATM-HR (2018): \naerosol: none\natmos: LMDZ (NPv6, N256; 512 x 360 longitude/latitude; 79 levels; top level 40000 m)\natmosChem: none\nland: ORCHIDEE (v2.0, Water/Carbon/Energy mode)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: none" - }, - "IPSL-CM6A-LR":{ - "activity_participation":[ - "C4MIP", - "CFMIP", - "CMIP", - "DCPP", - "FAFMIP", - "GMMIP", - "GeoMIP", - "LS3MIP", - "LUMIP", - "OMIP", - "PMIP", - "RFMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "IPSL" - ], - "source_id":"IPSL-CM6A-LR", - "source":"IPSL-CM6A-LR (2017): \naerosol: none\natmos: LMDZ (NPv6, N96; 144 x 143 longitude/latitude; 79 levels; top level 40000 m)\natmosChem: none\nland: ORCHIDEE (v2.0, Water/Carbon/Energy mode)\nlandIce: none\nocean: NEMO-OPA (eORCA1.3, tripolar primarily 1deg; 362 x 332 longitude/latitude; 75 levels; top grid cell 0-2 m)\nocnBgchem: NEMO-PISCES\nseaIce: NEMO-LIM3" - }, - "KACE-1-0-G":{ - "activity_participation":[ - "CMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NIMS-KMA" - ], - "source_id":"KACE-1-0-G", - "source":"KACE1.0-G (2018): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N96; 192 x 144 longitude/latitude; 85 levels; top level 85 km)\natmosChem: none\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: MOM4p1 (tripolar primarily 1deg; 360 x 200 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE-HadGEM3-GSI8 (tripolar primarily 1deg; 360 x 200 longitude/latitude)" - }, - "KIOST-ESM":{ - "activity_participation":[ - "C4MIP", - "CMIP", - "DynVarMIP", - "PMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "KIOST" - ], - "source_id":"KIOST-ESM", - "source":"KIOST-ESM (2018): \naerosol: none\natmos: GFDL-AM2.0 (cubed sphere (C48); 192 x 96 longitude/latitude; 32 vertical levels; top level 2 hPa)\natmosChem: Simple carbon aerosol model (emission type)\nland: NCAR-CLM4\nlandIce: NCAR-CLM4\nocean: GFDL-MOM5.0 (tripolar - nominal 1.0 deg; 360 x 200 longitude/latitude; 52 levels; top grid cell 0-2 m; NK mixed layer scheme)\nocnBgchem: TOPAZ2\nseaIce: GFDL-SIS" - }, - "LBLRTM":{ - "activity_participation":[ - "RFMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "AER" - ], - "source_id":"LBLRTM", - "source":"LBLRTM (2017): \naerosol: none\natmos: none\natmosChem: none\nland: none\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: none" - }, - "MCM-UA-1-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "UA" - ], - "source_id":"MCM-UA-1-0", - "source":"MCM-UA-1-0 (1991): \naerosol: Modifies surface albedoes (Haywood et al. 1997, doi: 10.1175/1520-0442(1997)010<1562:GCMCOT>2.0.CO;2)\natmos: R30L14 (3.75 X 2.5 degree (long-lat) configuration; 96 x 80 longitude/latitude; 14 levels; top level 0.015 sigma, 15 mb)\natmosChem: none\nland: Standard Manabe bucket hydrology scheme (Manabe 1969, doi: 10.1175/1520-0493(1969)097<0739:CATOC>2.3.CO;2)\nlandIce: Specified location - invariant in time, has high albedo and latent heat capacity\nocean: MOM1.0 (MOM1, 1.875 X 2.5 deg; 192 x 80 longitude/latitude; 18 levels; top grid cell 0-40 m)\nocnBgchem: none\nseaIce: Thermodynamic ice model (free drift dynamics)" - }, - "MIROC-ES2H":{ - "activity_participation":[ - "AerChemMIP", - "CMIP", - "DynVarMIP", - "GeoMIP", - "VIACSAB" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"MIROC-ES2H", - "source":"MIROC-ES2H (2018): \naerosol: SPRINTARS6.0\natmos: CCSR AGCM (T85; 256 x 128 longitude/latitude; 81 levels; top level 0.004 hPa)\natmosChem: CHASER4.0\nland: MATSIRO6.0+VISIT-e ver.1.0\nlandIce: none\nocean: COCO4.9 (tripolar primarily 1deg; 360 x 256 longitude/latitude; 63 levels; top grid cell 0-2 m)\nocnBgchem: OECO ver.2.0; NPZD-type with C/N/P/Fe/O cycles\nseaIce: COCO4.9" - }, - "MIROC-ES2L":{ - "activity_participation":[ - "C4MIP", - "CDRMIP", - "CMIP", - "DynVarMIP", - "GeoMIP", - "LUMIP", - "OMIP", - "PMIP", - "ScenarioMIP", - "VIACSAB", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"MIROC-ES2L", - "source":"MIROC-ES2L (2018): \naerosol: SPRINTARS6.0\natmos: CCSR AGCM (T42; 128 x 64 longitude/latitude; 40 levels; top level 3 hPa)\natmosChem: none\nland: MATSIRO6.0+VISIT-e ver.1.0\nlandIce: none\nocean: COCO4.9 (tripolar primarily 1deg; 360 x 256 longitude/latitude; 63 levels; top grid cell 0-2 m)\nocnBgchem: OECO ver.2.0; NPZD-type with C/N/P/Fe/O cycles\nseaIce: COCO4.9" - }, - "MIROC6":{ - "activity_participation":[ - "AerChemMIP", - "CFMIP", - "CMIP", - "DAMIP", - "DCPP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "HighResMIP", - "LS3MIP", - "OMIP", - "PAMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VIACSAB" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"MIROC6", - "source":"MIROC6 (2017): \naerosol: SPRINTARS6.0\natmos: CCSR AGCM (T85; 256 x 128 longitude/latitude; 81 levels; top level 0.004 hPa)\natmosChem: none\nland: MATSIRO6.0\nlandIce: none\nocean: COCO4.9 (tripolar primarily 1deg; 360 x 256 longitude/latitude; 63 levels; top grid cell 0-2 m)\nocnBgchem: none\nseaIce: COCO4.9" - }, - "MPI-ESM-1-2-HAM":{ - "activity_participation":[ - "AerChemMIP", - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "HAMMOZ-Consortium" - ], - "source_id":"MPI-ESM-1-2-HAM", - "source":"MPI-ESM1.2-HAM (2017): \naerosol: HAM2.3\natmos: ECHAM6.3 (spectral T63; 192 x 96 longitude/latitude; 47 levels; top level 0.01 hPa)\natmosChem: sulfur chemistry (unnamed)\nland: JSBACH 3.20\nlandIce: none\nocean: MPIOM1.63 (bipolar GR1.5, approximately 1.5deg; 256 x 220 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC6\nseaIce: unnamed (thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model)" - }, - "MPI-ESM1-2-HR":{ - "activity_participation":[ - "CMIP", - "CORDEX", - "DCPP", - "DynVarMIP", - "FAFMIP", - "HighResMIP", - "OMIP", - "SIMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MPI-M", - "DWD", - "DKRZ" - ], - "source_id":"MPI-ESM1-2-HR", - "source":"MPI-ESM1.2-HR (2017): \naerosol: none, prescribed MACv2-SP\natmos: ECHAM6.3 (spectral T127; 384 x 192 longitude/latitude; 95 levels; top level 0.01 hPa)\natmosChem: none\nland: JSBACH3.20\nlandIce: none/prescribed\nocean: MPIOM1.63 (tripolar TP04, approximately 0.4deg; 802 x 404 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC\nseaIce: unnamed (thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model)" - }, - "MPI-ESM1-2-LR":{ - "activity_participation":[ - "C4MIP", - "CDRMIP", - "CFMIP", - "CMIP", - "DCPP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "GeoMIP", - "ISMIP6", - "LS3MIP", - "LUMIP", - "OMIP", - "PMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MPI-M", - "AWI" - ], - "source_id":"MPI-ESM1-2-LR", - "source":"MPI-ESM1.2-LR (2017): \naerosol: none, prescribed MACv2-SP\natmos: ECHAM6.3 (spectral T63; 192 x 96 longitude/latitude; 47 levels; top level 0.01 hPa)\natmosChem: none\nland: JSBACH3.20\nlandIce: none/prescribed\nocean: MPIOM1.63 (bipolar GR1.5, approximately 1.5deg; 256 x 220 longitude/latitude; 40 levels; top grid cell 0-12 m)\nocnBgchem: HAMOCC\nseaIce: unnamed (thermodynamic (Semtner zero-layer) dynamic (Hibler 79) sea ice model)" - }, - "MRI-AGCM3-2":{ - "activity_participation":[ - "CMIP", - "DynVarMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MRI" - ], - "source_id":"MRI-AGCM3-2", - "source":"MRI-AGCM3-2 (2017): \naerosol: Prescribed from MRI-ESM2.0\natmos: MRI-AGCM3.2S (TL959; 1920 x 960 longitude/latitude; 64 levels; top level 0.01 hPa)\natmosChem: none\nland: SIB0109\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: none" - }, - "MRI-ESM2-0":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CFMIP", - "CMIP", - "CORDEX", - "DAMIP", - "DCPP", - "DynVarMIP", - "FAFMIP", - "GMMIP", - "GeoMIP", - "LS3MIP", - "OMIP", - "PMIP", - "RFMIP", - "SIMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MRI" - ], - "source_id":"MRI-ESM2-0", - "source":"MRI-ESM2.0 (2017): \naerosol: MASINGAR mk2r4 (TL95; 192 x 96 longitude/latitude; 80 levels; top level 0.01 hPa)\natmos: MRI-AGCM3.5 (TL159; 320 x 160 longitude/latitude; 80 levels; top level 0.01 hPa)\natmosChem: MRI-CCM2.1 (T42; 128 x 64 longitude/latitude; 80 levels; top level 0.01 hPa)\nland: HAL 1.0\nlandIce: none\nocean: MRI.COM4.4 (tripolar primarily 0.5 deg latitude/1 deg longitude with meridional refinement down to 0.3 deg within 10 degrees north and south of the equator; 360 x 364 longitude/latitude; 61 levels; top grid cell 0-2 m)\nocnBgchem: MRI.COM4.4\nseaIce: MRI.COM4.4" - }, - "NESM3":{ - "activity_participation":[ - "CMIP", - "DAMIP", - "DCPP", - "GMMIP", - "GeoMIP", - "PMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NUIST" - ], - "source_id":"NESM3", - "source":"NESM v3 (2016): \naerosol: none\natmos: ECHAM v6.3 (T63; 192 x 96 longitude/latitude; 47 levels; top level 1 Pa)\natmosChem: none\nland: JSBACH v3.1\nlandIce: none\nocean: NEMO v3.4 (NEMO v3.4, tripolar primarily 1deg; 384 x 362 longitude/latitude; 46 levels; top grid cell 0-6 m)\nocnBgchem: none\nseaIce: CICE4.1" - }, - "NICAM16-7S":{ - "activity_participation":[ - "CMIP", - "DynVarMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-7S", - "source":"NICAM16-7S (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (56km icosahedral grid; 163,842 grid cells (=10*4^7+2); 38 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NICAM16-8S":{ - "activity_participation":[ - "CMIP", - "DynVarMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-8S", - "source":"NICAM16-8S (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (28km icosahedral grid; 655,362 grid cells (=10*4^8+2); 38 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NICAM16-9D-L78":{ - "activity_participation":[ - "CFMIP", - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-9D-L78", - "source":"NICAM16-9D-L78 (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (14km icosahedral grid; 2,621,442 grid cells (=10*4^9+2); 78 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NICAM16-9S":{ - "activity_participation":[ - "CMIP", - "DynVarMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MIROC" - ], - "source_id":"NICAM16-9S", - "source":"NICAM16-9S (2017): \naerosol: Prescribed MACv2-SP\natmos: NICAM.16 (14km icosahedral grid; 2,621,442 grid cells (=10*4^9+2); 38 levels; top level 40 km)\natmosChem: none\nland: MATSIRO6 (w/o MOSAIC)\nlandIce: none\nocean: none\nocnBgchem: none\nseaIce: Fixed" - }, - "NorESM2-HH":{ - "activity_participation":[ - "CMIP", - "HighResMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-HH", - "source":"NorESM2-HH (2018): \naerosol: OsloAero\natmos: CAM-OSLO (0.25 degree resolution; 1152 x 768; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (0.25 degree resolution; 1440 x 1152; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-LM":{ - "activity_participation":[ - "AerChemMIP", - "CFMIP", - "CMIP", - "DAMIP", - "DCPP", - "LUMIP", - "OMIP", - "PMIP", - "RFMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-LM", - "source":"NorESM2-LM (2017): \naerosol: OsloAero\natmos: CAM-OSLO (2 degree resolution; 144 x 96; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-LME":{ - "activity_participation":[ - "C4MIP", - "CMIP", - "GeoMIP", - "LUMIP", - "OMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-LME", - "source":"NorESM2-LME (2017): \naerosol: OsloAero\natmos: CAM-OSLO (2 degree resolution; 144 x 96; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-LMEC":{ - "activity_participation":[ - "AerChemMIP", - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-LMEC", - "source":"NorESM2-LMEC (2017): \naerosol: OsloAero\natmos: CAM-OSLO (2 degree resolution; 144 x 96; 32 levels; top level 3 mb)\natmosChem: OsloChemComp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-MH":{ - "activity_participation":[ - "AerChemMIP", - "CFMIP", - "CMIP", - "DAMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-MH", - "source":"NorESM2-MH (2017): \naerosol: OsloAero\natmos: CAM-OSLO (1 degree resolution; 288 x 192; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (0.25 degree resolution; 1440 x 1152; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "NorESM2-MM":{ - "activity_participation":[ - "AerChemMIP", - "CFMIP", - "CMIP", - "DAMIP", - "OMIP", - "RFMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "NCC" - ], - "source_id":"NorESM2-MM", - "source":"NorESM2-MM (2017): \naerosol: OsloAero\natmos: CAM-OSLO (1 degree resolution; 288 x 192; 32 levels; top level 3 mb)\natmosChem: OsloChemSimp\nland: CLM\nlandIce: CISM\nocean: MICOM (1 degree resolution; 360 x 384; 70 levels; top grid cell minimum 0-2.5 m [native model uses hybrid density and generic upper-layer coordinate interpolated to z-level for contributed data])\nocnBgchem: HAMOCC\nseaIce: CICE" - }, - "PCMDI-test-1-0":{ - "activity_participation":[ - "CMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "PCMDI" - ], - "source_id":"PCMDI-test-1-0", - "source":"PCMDI-test 1.0 (1989): \naerosol: none\natmos: Earth1.0-gettingHotter (360 x 180 longitude/latitude; 50 levels; top level 0.1 mb)\natmosChem: none\nland: Earth1.0\nlandIce: none\nocean: BlueMarble1.0-warming (360 x 180 longitude/latitude; 50 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: Declining1.0-warming (360 x 180 longitude/latitude)" - }, - "SAM0-UNICON":{ - "activity_participation":[ - "CMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "SNU" - ], - "source_id":"SAM0-UNICON", - "source":"SAM0-UNICON (2017): \naerosol: MAM3\natmos: CAM5.3 with UNICON (1deg; 288 x 192 longitude/latitude; 30 levels; top level ~2 hPa)\natmosChem: none\nland: CLM4.0\nlandIce: none\nocean: POP2 (Displaced Pole; 320 x 384 longitude/latitude; 60 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE4.0" - }, - "UKESM1-0-LL":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CMIP", - "GeoMIP", - "LUMIP", - "OMIP", - "PMIP", - "ScenarioMIP", - "VolMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC", - "NERC", - "NIMS-KMA", - "NIWA" - ], - "source_id":"UKESM1-0-LL", - "source":"UKESM1.0-LL (2018): \naerosol: UKCA-GLOMAP-mode\natmos: MetUM-HadGEM3-GA7.1 (N96; 192 x 144 longitude/latitude; 85 levels; top level 85 km)\natmosChem: UKCA-StratTrop\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA1 tripolar primarily 1 deg with meridional refinement down to 1/3 degree in the tropics; 360 x 330 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: MEDUSA2\nseaIce: CICE-HadGEM3-GSI8 (eORCA1 tripolar primarily 1 deg; 360 x 330 longitude/latitude)" - }, - "UKESM1-0-MMh":{ - "activity_participation":[ - "AerChemMIP", - "C4MIP", - "CMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "MOHC", - "NERC" - ], - "source_id":"UKESM1-0-MMh", - "source":"UKESM1.0-MMh (2018): \naerosol: UKCA-GLOMAP-mode (horizontal resolution degraded relative to that used for atmosphere physics)\natmos: MetUM-HadGEM3-GA7.1 (N216; 432 x 324 longitude/latitude; 85 levels; top level 85 km)\natmosChem: UKCA-StratTrop (horizontal resolution degraded relative to that used for atmosphere physics)\nland: JULES-HadGEM3-GL7.1\nlandIce: none\nocean: NEMO-HadGEM3-GO6.0 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude; 75 levels; top grid cell 0-1 m)\nocnBgchem: MEDUSA2 (horizontal resolution degraded relative to that used for ocean physics)\nseaIce: CICE-HadGEM3-GSI8 (eORCA025 tripolar primarily 0.25 deg; 1440 x 1205 longitude/latitude)" - }, - "UofT-CCSM4":{ - "activity_participation":[ - "CMIP", - "PMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "UofT" - ], - "source_id":"UofT-CCSM4", - "source":"UofT-CCSM4 (2014): \naerosol: unnamed\natmos: CAM4 (finite-volume dynamical core; 288 x 192 longitude/latitude; 26 levels; top level ~2 hPa)\natmosChem: none\nland: CLM4\nlandIce: none\nocean: POP2 (displaced dipole grid; 384 x 320 longitude/latitude; 60 levels; top grid cell 0-10 m)\nocnBgchem: none\nseaIce: CICE4" - }, - "VRESM-1-0":{ - "activity_participation":[ - "CMIP", - "DAMIP", - "HighResMIP", - "PMIP", - "ScenarioMIP" - ], - "cohort":[ - "Registered" - ], - "institution_id":[ - "CSIR-CSIRO" - ], - "source_id":"VRESM-1-0", - "source":"VRESM 1.0 (2016): \naerosol: Rotstayn-1.0\natmos: VCAM-1.0 (C192; 192 x 192 x 6 longitude/latitude/cubeface; 35 levels; top level 35km)\natmosChem: none\nland: CABLE v2.2.3\nlandIce: none\nocean: VCOM-1.0 (C192; 384 x 384 x 6 longitude/latitude/cubeface; 35 levels; top grid cell 0-10 m)\nocnBgchem: PISCES v3.4socco\nseaIce: CSIR-ICE (visco-plastic)" - } - }, - "source_type":{ - "AER":"aerosol treatment in an atmospheric model where concentrations are calculated based on emissions, transformation, and removal processes (rather than being prescribed or omitted entirely)", - "AGCM":"atmospheric general circulation model run with prescribed ocean surface conditions and usually a model of the land surface", - "AOGCM":"coupled atmosphere-ocean global climate model, additionally including explicit representation of at least the land and sea ice", - "BGC":"biogeochemistry model component that at the very least accounts for carbon reservoirs and fluxes in the atmosphere, terrestrial biosphere, and ocean", - "CHEM":"chemistry treatment in an atmospheric model that calculates atmospheric oxidant concentrations (including at least ozone), rather than prescribing them", - "ISM":"ice-sheet model that includes ice-flow", - "LAND":"land model run uncoupled from the atmosphere", - "OGCM":"ocean general circulation model run uncoupled from an AGCM but, usually including a sea-ice model", - "RAD":"radiation component of an atmospheric model run 'offline'", - "SLAB":"slab-ocean used with an AGCM in representing the atmosphere-ocean coupled system" - }, - "frequency":{ - "1hr":"sampled hourly", - "1hrCM":"monthly-mean diurnal cycle resolving each day into 1-hour means", - "1hrPt":"sampled hourly, at specified time point within an hour", - "3hr":"sampled every 3 hours", - "3hrPt":"sampled 3 hourly, at specified time point within the time period", - "6hr":"sampled every 6 hours", - "6hrPt":"sampled 6 hourly, at specified time point within the time period", - "day":"daily mean samples", - "dec":"decadal mean samples", - "fx":"fixed (time invariant) field", - "mon":"monthly mean samples", - "monC":"monthly climatology computed from monthly mean samples", - "monPt":"sampled monthly, at specified time point within the time period", - "subhrPt":"sampled sub-hourly, at specified time point within an hour", - "yr":"annual mean samples", - "yrPt":"sampled yearly, at specified time point within the time period" - }, - "grid_label":{ - "gm":"global mean data", - "gn":"data reported on a model's native grid", - "gna":"data reported on a native grid in the region of Antarctica", - "gng":"data reported on a native grid in the region of Greenland", - "gnz":"zonal mean data reported on a model's native latitude grid", - "gr":"regridded data reported on the data provider's preferred target grid", - "gr1":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr1a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr1g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr1z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr2":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr2a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr2g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr2z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr3":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr3a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr3g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr3z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr4":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr4a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr4g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr4z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr5":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr5a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr5g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr5z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr6":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr6a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr6g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr6z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr7":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr7a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr7g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr7z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr8":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr8a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr8g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr8z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gr9":"regridded data reported on a grid other than the native grid and other than the preferred target grid", - "gr9a":"regridded data reported in the region of Antarctica on a grid other than the native grid and other than the preferred target grid", - "gr9g":"regridded data reported in the region of Greenland on a grid other than the native grid and other than the preferred target grid", - "gr9z":"regridded zonal mean data reported on a grid other than the native latitude grid and other than the preferred latitude target grid", - "gra":"regridded data in the region of Antarctica reported on the data provider's preferred target grid", - "grg":"regridded data in the region of Greenland reported on the data provider's preferred target grid", - "grz":"regridded zonal mean data reported on the data provider's preferred latitude target grid" - }, - "nominal_resolution":[ - "0.5 km", - "1 km", - "10 km", - "100 km", - "1000 km", - "10000 km", - "1x1 degree", - "2.5 km", - "25 km", - "250 km", - "2500 km", - "5 km", - "50 km", - "500 km", - "5000 km" - ], - "realm":{ - "aerosol":"Aerosol", - "atmos":"Atmosphere", - "atmosChem":"Atmospheric Chemistry", - "land":"Land Surface", - "landIce":"Land Ice", - "ocean":"Ocean", - "ocnBgchem":"Ocean Biogeochemistry", - "seaIce":"Sea Ice" - }, - "table_id":[ - "3hr", - "6hrLev", - "6hrPlev", - "6hrPlevPt", - "AERday", - "AERhr", - "AERmon", - "AERmonZ", - "Amon", - "CF3hr", - "CFday", - "CFmon", - "CFsubhr", - "E1hr", - "E1hrClimMon", - "E3hr", - "E3hrPt", - "E6hrZ", - "Eday", - "EdayZ", - "Efx", - "Emon", - "EmonZ", - "Esubhr", - "Eyr", - "IfxAnt", - "IfxGre", - "ImonAnt", - "ImonGre", - "IyrAnt", - "IyrGre", - "LImon", - "Lmon", - "Oclim", - "Oday", - "Odec", - "Ofx", - "Omon", - "Oyr", - "SIday", - "SImon", - "day", - "fx" - ], - "license":[ - "^CMIP6 model data produced by .* is licensed under a Creative Commons Attribution.*ShareAlike 4.0 International License .https://creativecommons.org/licenses.* *Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment\\. *Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file).*\\. *The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose\\. *All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law\\.$" - ], - "mip_era":[ - "CMIP6" - ], - "sub_experiment_id":{ - "none":"none", - "s1910":"initialized near end of year 1910", - "s1950":"initialized near end of year 1950", - "s1960":"initialized near end of year 1960", - "s1961":"initialized near end of year 1961", - "s1962":"initialized near end of year 1962", - "s1963":"initialized near end of year 1963", - "s1964":"initialized near end of year 1964", - "s1965":"initialized near end of year 1965", - "s1966":"initialized near end of year 1966", - "s1967":"initialized near end of year 1967", - "s1968":"initialized near end of year 1968", - "s1969":"initialized near end of year 1969", - "s1970":"initialized near end of year 1970", - "s1971":"initialized near end of year 1971", - "s1972":"initialized near end of year 1972", - "s1973":"initialized near end of year 1973", - "s1974":"initialized near end of year 1974", - "s1975":"initialized near end of year 1975", - "s1976":"initialized near end of year 1976", - "s1977":"initialized near end of year 1977", - "s1978":"initialized near end of year 1978", - "s1979":"initialized near end of year 1979", - "s1980":"initialized near end of year 1980", - "s1981":"initialized near end of year 1981", - "s1982":"initialized near end of year 1982", - "s1983":"initialized near end of year 1983", - "s1984":"initialized near end of year 1984", - "s1985":"initialized near end of year 1985", - "s1986":"initialized near end of year 1986", - "s1987":"initialized near end of year 1987", - "s1988":"initialized near end of year 1988", - "s1989":"initialized near end of year 1989", - "s1990":"initialized near end of year 1990", - "s1991":"initialized near end of year 1991", - "s1992":"initialized near end of year 1992", - "s1993":"initialized near end of year 1993", - "s1994":"initialized near end of year 1994", - "s1995":"initialized near end of year 1995", - "s1996":"initialized near end of year 1996", - "s1997":"initialized near end of year 1997", - "s1998":"initialized near end of year 1998", - "s1999":"initialized near end of year 1999", - "s2000":"initialized near end of year 2000", - "s2001":"initialized near end of year 2001", - "s2002":"initialized near end of year 2002", - "s2003":"initialized near end of year 2003", - "s2004":"initialized near end of year 2004", - "s2005":"initialized near end of year 2005", - "s2006":"initialized near end of year 2006", - "s2007":"initialized near end of year 2007", - "s2008":"initialized near end of year 2008", - "s2009":"initialized near end of year 2009", - "s2010":"initialized near end of year 2010", - "s2011":"initialized near end of year 2011", - "s2012":"initialized near end of year 2012", - "s2013":"initialized near end of year 2013", - "s2014":"initialized near end of year 2014", - "s2015":"initialized near end of year 2015", - "s2016":"initialized near end of year 2016", - "s2017":"initialized near end of year 2017", - "s2018":"initialized near end of year 2018", - "s2019":"initialized near end of year 2019", - "s2020":"initialized near end of year 2020", - "s2021":"initialized near end of year 2021", - "s2022":"initialized near end of year 2022", - "s2023":"initialized near end of year 2023", - "s2024":"initialized near end of year 2024", - "s2025":"initialized near end of year 2025", - "s2026":"initialized near end of year 2026", - "s2027":"initialized near end of year 2027", - "s2028":"initialized near end of year 2028", - "s2029":"initialized near end of year 2029" - }, - "experiment_id":{ - "1pctCO2":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"1 percent per year increase in CO2", - "experiment_id":"1pctCO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "1pctCO2-4xext":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"extension from year 140 of 1pctCO2 with 4xCO2", - "experiment_id":"1pctCO2-4xext", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "1pctCO2" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "1pctCO2-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"biogeochemically-coupled version of 1 percent per year increasing CO2 experiment", - "experiment_id":"1pctCO2-bgc", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "1pctCO2-cdr":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"1 percent per year decrease in CO2 from 4xCO2", - "experiment_id":"1pctCO2-cdr", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "1pctCO2" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "1pctCO2-rad":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"radiatively-coupled version of 1 percent per year increasing CO2 experiment", - "experiment_id":"1pctCO2-rad", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "1pctCO2Ndep":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"1 percent per year increasing CO2 experiment with increasing N-deposition", - "experiment_id":"1pctCO2Ndep", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "1pctCO2Ndep-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"biogeochemically-coupled version of 1 percent per year increasing CO2 experiment with increasing N-deposition", - "experiment_id":"1pctCO2Ndep-bgc", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "1pctCO2to4x-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"simulation with interactive ice sheet forced by 1 percent per year increase in CO2 to 4xCO2 (subsequently held fixed)", - "experiment_id":"1pctCO2to4x-withism", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "piControl-withism" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G1":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"abrupt quadrupling of CO2 plus reduction in total solar irradiance", - "experiment_id":"G1", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G6SST1":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"SSTs, forcings, and other prescribed conditions from year 2020 of SSP5-8.5", - "experiment_id":"G6SST1", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G6SST2-solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6solar", - "experiment_id":"G6SST2-solar", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G6SST2-sulfur":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6sulfur", - "experiment_id":"G6SST2-sulfur", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G6solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"total solar irradiance reduction to reduce net forcing from SSP585 to SSP245", - "experiment_id":"G6solar", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G6sulfur":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"stratospheric sulfate aerosol injection to reduce net forcing from SSP585 to SSP245", - "experiment_id":"G6sulfur", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G7SST1-cirrus":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2020 of SSP5-8.5 and cirrus thinning", - "experiment_id":"G7SST1-cirrus", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G7SST2-cirrus":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"SSTs from year 2100 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G7cirrus", - "experiment_id":"G7SST2-cirrus", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "G7cirrus":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"increase cirrus ice crystal fall speed to reduce net forcing in SSP585 by 1 W m-2", - "experiment_id":"G7cirrus", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "a4SST":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"as piSST but with SSTs from abrupt-4xCO2", - "experiment_id":"a4SST", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "abrupt-4xCO2" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "a4SSTice":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"as piSST but with SSTs and sea ice from abrupt-4xCO2", - "experiment_id":"a4SSTice", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "abrupt-4xCO2" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "a4SSTice-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"as piSST but with SSTs and sea ice from abrupt-4xCO2, and 4xCO2 seen by radiation and vegetation", - "experiment_id":"a4SSTice-4xCO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "abrupt-4xCO2" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "abrupt-0p5xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"abrupt halving of CO2", - "experiment_id":"abrupt-0p5xCO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "abrupt-2xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"abrupt doubling of CO2", - "experiment_id":"abrupt-2xCO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "abrupt-4xCO2":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"abrupt quadrupling of CO2", - "experiment_id":"abrupt-4xCO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "abrupt-solm4p":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"abrupt 4% decrease in solar constant", - "experiment_id":"abrupt-solm4p", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "abrupt-solp4p":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"abrupt 4% increase in solar constant", - "experiment_id":"abrupt-solp4p", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"AMIP", - "experiment_id":"amip", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP SSTs with 4xCO2", - "experiment_id":"amip-4xCO2", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-TIP":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"same as \"amip\" run, but surface elevations of the Tibetan-Iranian Plateau and Himalayas reduced to 500m", - "experiment_id":"amip-TIP", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-TIP-nosh":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"same as \"amip\" run, but sensible heat not allowed for elevations of the Tibetan-Iranian Plateau and Himalayas above 500m", - "experiment_id":"amip-TIP-nosh", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-a4SST-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"as AMIP but with warming pattern from abrupt-4xCO2 added to SSTs and 4xCO2 seen by radiation and vegetation", - "experiment_id":"amip-a4SST-4xCO2", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-climSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"AMIP with climatological SIC", - "experiment_id":"amip-climSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-climSST":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"AMIP with climatological SST", - "experiment_id":"amip-climSST", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-future4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP with patterned 4K SST increase", - "experiment_id":"amip-future4K", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-hist":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP-style simulation covering the period 1870-2014", - "experiment_id":"amip-hist", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-hld":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"same as \"amip\" run, but surface elevations of the East African Highlands in Africa, Sierra Madre in N. America and Andes in S. America reduced to 500m", - "experiment_id":"amip-hld", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-lfmip-pObs":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"prescribed land (from pseudo-observations) and AMIP SSTs", - "experiment_id":"amip-lfmip-pObs", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-lfmip-pdLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"prescribed land (from current climatology) and AMIP SSTs", - "experiment_id":"amip-lfmip-pdLC", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-lfmip-rmLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"prescribed land conditions (from running mean climatology) and AMIP SSTs", - "experiment_id":"amip-lfmip-rmLC", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP experiment with longwave cloud-radiative effects off", - "experiment_id":"amip-lwoff", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-m4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP with uniform 4K SST decrease", - "experiment_id":"amip-m4K", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-p4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP with uniform 4K SST increase", - "experiment_id":"amip-p4K", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-p4K-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP experiment with uniform 4K SST increase and with longwave cloud radiative effects off", - "experiment_id":"amip-p4K-lwoff", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "amip-piForcing":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"AMIP SSTs with pre-industrial anthropogenic and natural forcing", - "experiment_id":"amip-piForcing", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "aqua-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"aquaplanet with control SST and 4xCO2", - "experiment_id":"aqua-4xCO2", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "aqua-control":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"aquaplanet control", - "experiment_id":"aqua-control", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "aqua-control-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"aquaplanet control with longwave cloud radiative effects off", - "experiment_id":"aqua-control-lwoff", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "aqua-p4K":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"aquaplanet with uniform 4K SST increase", - "experiment_id":"aqua-p4K", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "aqua-p4K-lwoff":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"aquaplanet with uniform 4K SST increase and with longwave cloud radiative effects off", - "experiment_id":"aqua-p4K-lwoff", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "control-1950":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"coupled control with fixed 1950's forcing (HighResMIP equivalent of pre-industrial control)", - "experiment_id":"control-1950", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "spinup-1950" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "control-slab":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"control with slab ocean", - "experiment_id":"control-slab", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "SLAB" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppA-assim":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Assimilation run paralleling the historical simulation, which may be used to generate hindcast initial conditions", - "experiment_id":"dcppA-assim", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppA-hindcast":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"hindcast initialized based on observations and using historical forcing", - "experiment_id":"dcppA-hindcast", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1960", - "s1961", - "s1962", - "s1963", - "s1964", - "s1965", - "s1966", - "s1967", - "s1968", - "s1969", - "s1970", - "s1971", - "s1972", - "s1973", - "s1974", - "s1975", - "s1976", - "s1977", - "s1978", - "s1979", - "s1980", - "s1981", - "s1982", - "s1983", - "s1984", - "s1985", - "s1986", - "s1987", - "s1988", - "s1989", - "s1990", - "s1991", - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999", - "s2000", - "s2001", - "s2002", - "s2003", - "s2004", - "s2005", - "s2006", - "s2007", - "s2008", - "s2009", - "s2010", - "s2011", - "s2012", - "s2013", - "s2014", - "s2015", - "s2016" - ] - }, - "dcppA-hindcast-niff":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"hindcast initialized based on observations but without using knowledge of subsequent historical forcing", - "experiment_id":"dcppA-hindcast-niff", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1960", - "s1961", - "s1962", - "s1963", - "s1964", - "s1965", - "s1966", - "s1967", - "s1968", - "s1969", - "s1970", - "s1971", - "s1972", - "s1973", - "s1974", - "s1975", - "s1976", - "s1977", - "s1978", - "s1979", - "s1980", - "s1981", - "s1982", - "s1983", - "s1984", - "s1985", - "s1986", - "s1987", - "s1988", - "s1989", - "s1990", - "s1991", - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999", - "s2000", - "s2001", - "s2002", - "s2003", - "s2004", - "s2005", - "s2006", - "s2007", - "s2008", - "s2009", - "s2010", - "s2011", - "s2012", - "s2013", - "s2014", - "s2015", - "s2016" - ] - }, - "dcppA-historical-niff":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"hindcast initialized from historical climate simulation but without using knowledge of subsequent historical forcing", - "experiment_id":"dcppA-historical-niff", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1960", - "s1961", - "s1962", - "s1963", - "s1964", - "s1965", - "s1966", - "s1967", - "s1968", - "s1969", - "s1970", - "s1971", - "s1972", - "s1973", - "s1974", - "s1975", - "s1976", - "s1977", - "s1978", - "s1979", - "s1980", - "s1981", - "s1982", - "s1983", - "s1984", - "s1985", - "s1986", - "s1987", - "s1988", - "s1989", - "s1990", - "s1991", - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999", - "s2000", - "s2001", - "s2002", - "s2003", - "s2004", - "s2005", - "s2006", - "s2007", - "s2008", - "s2009", - "s2010", - "s2011", - "s2012", - "s2013", - "s2014", - "s2015", - "s2016" - ] - }, - "dcppB-forecast":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"forecast initialized from observations with forcing from ssp245", - "experiment_id":"dcppB-forecast", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s2017", - "s2018", - "s2019", - "s2020", - "s2021", - "s2022", - "s2023", - "s2024", - "s2025", - "s2026", - "s2027", - "s2028", - "s2029" - ] - }, - "dcppC-amv-ExTrop-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Idealized climate impact of negative extratropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-ExTrop-neg", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-amv-ExTrop-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Idealized climate impact of positive extratropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-ExTrop-pos", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-amv-Trop-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Idealized climate impact of negative tropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-Trop-neg", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-amv-Trop-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized positive tropical AMV anomaly pattern", - "experiment_id":"dcppC-amv-Trop-pos", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-amv-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Idealized climate impact of negative AMV anomaly pattern", - "experiment_id":"dcppC-amv-neg", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-amv-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Idealized climate impact of positive AMV anomaly pattern", - "experiment_id":"dcppC-amv-pos", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-atl-control":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Idealized Atlantic control", - "experiment_id":"dcppC-atl-control", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-atl-pacemaker":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"pacemaker Atlantic experiment", - "experiment_id":"dcppC-atl-pacemaker", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1910", - "s1950" - ] - }, - "dcppC-atl-spg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"predictability of 1990s warming of Atlantic sub-polar gyre", - "experiment_id":"dcppC-atl-spg", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1992", - "s1993", - "s1994", - "s1995", - "s1996", - "s1997", - "s1998", - "s1999" - ] - }, - "dcppC-forecast-addAgung":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"2015 forecast with added Agung forcing", - "experiment_id":"dcppC-forecast-addAgung", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s2014" - ] - }, - "dcppC-forecast-addElChichon":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"2015 forecast with added El Chichon forcing", - "experiment_id":"dcppC-forecast-addElChichon", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s2014" - ] - }, - "dcppC-forecast-addPinatubo":{ - "activity_id":[ - "DCPP", - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"2015 forecast with added Pinatubo forcing", - "experiment_id":"dcppC-forecast-addPinatubo", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s2014" - ] - }, - "dcppC-hindcast-noAgung":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"hindcast but with only background volcanic forcing to be the same as that used in the 2015 forecast", - "experiment_id":"dcppC-hindcast-noAgung", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1962" - ] - }, - "dcppC-hindcast-noElChichon":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"hindcast but with only background volcanic forcing to be the same as that used in the 2015 forecast", - "experiment_id":"dcppC-hindcast-noElChichon", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1981" - ] - }, - "dcppC-hindcast-noPinatubo":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"hindcast but with only background volcanic forcing to be the same as that used in the 2015 forecast", - "experiment_id":"dcppC-hindcast-noPinatubo", - "parent_activity_id":[ - "no parent", - "DCPP" - ], - "parent_experiment_id":[ - "no parent", - "dcppA-assim" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1990" - ] - }, - "dcppC-ipv-NexTrop-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized negative northern extratropical IPV anomaly pattern", - "experiment_id":"dcppC-ipv-NexTrop-neg", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-ipv-NexTrop-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized positive northern extratropical IPV anomaly pattern", - "experiment_id":"dcppC-ipv-NexTrop-pos", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-ipv-neg":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized negative IPV anomaly pattern", - "experiment_id":"dcppC-ipv-neg", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-ipv-pos":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized positive IPV anomaly pattern", - "experiment_id":"dcppC-ipv-pos", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-pac-control":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized Pacific control", - "experiment_id":"dcppC-pac-control", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "dcppC-pac-pacemaker":{ - "activity_id":[ - "DCPP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"pacemaker Pacific experiment", - "experiment_id":"dcppC-pac-pacemaker", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "s1910", - "s1950" - ] - }, - "deforest-globe":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized transient global deforestation", - "experiment_id":"deforest-globe", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-hist":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"all-forcing simulation of the recent past with atmospheric CO2 concentration calculated", - "experiment_id":"esm-hist", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-hist-ext":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"post-2014 all-forcing simulation with atmospheric CO2 concentration calculated", - "experiment_id":"esm-hist-ext", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-hist" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-pi-CO2pulse":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"pulse addition of 100 Gt carbon to pre-industrial atmosphere", - "experiment_id":"esm-pi-CO2pulse", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-pi-cdr-pulse":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"pulse removal of 100 Gt carbon from pre-industrial atmosphere", - "experiment_id":"esm-pi-cdr-pulse", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-piControl":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"pre-industrial control simulation with CO2 concentration calculated", - "experiment_id":"esm-piControl", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-piControl-spinup" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-piControl-spinup":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"pre-industrial control simulation with CO2 concentration calculated (spin-up)", - "experiment_id":"esm-piControl-spinup", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-ssp534-over":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"emission-driven SSP5-3.4-OS scenario", - "experiment_id":"esm-ssp534-over", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-hist" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-ssp585":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"emission-driven RCP8.5 based on SSP5", - "experiment_id":"esm-ssp585", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-hist" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-ssp585-ocn-alk":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"emission-driven SSP5-8.5 scenario but with ocean alkalinization from year 2020 onward", - "experiment_id":"esm-ssp585-ocn-alk", - "parent_activity_id":[ - "C4MIP" - ], - "parent_experiment_id":[ - "esm-ssp585" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-ssp585-ocn-alk-stop":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"emission-driven SSP5-8.5 scenario with alkalinization terminated in year 2070", - "experiment_id":"esm-ssp585-ocn-alk-stop", - "parent_activity_id":[ - "CDRMIP" - ], - "parent_experiment_id":[ - "esm-ssp585-ocn-alk" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-ssp585-ssp126Lu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"emissions-driven SSP5-8.5 with SSP1-2.6 land use", - "experiment_id":"esm-ssp585-ssp126Lu", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "esm-hist" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-ssp585-ssp126Lu-ext":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"extension of the LUMIP emissions-driven simulation following SSP5-8.5 with SSP1-2.6 land use", - "experiment_id":"esm-ssp585-ssp126Lu-ext", - "parent_activity_id":[ - "LUMIP" - ], - "parent_experiment_id":[ - "esm-ssp585-ssp126Lu" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-ssp585ext":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"emission-driven long-term extension of the SSP5-8.5 scenario", - "experiment_id":"esm-ssp585ext", - "parent_activity_id":[ - "C4MIP" - ], - "parent_experiment_id":[ - "esm-ssp585" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-yr2010CO2-CO2pulse":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"instantaneous 100 Gt C addition to an industrial era atmosphere", - "experiment_id":"esm-yr2010CO2-CO2pulse", - "parent_activity_id":[ - "CDRMIP" - ], - "parent_experiment_id":[ - "esm-yr2010CO2-control" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-yr2010CO2-cdr-pulse":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"instantaneous 100 Gt C removal from industrial era atmosphere", - "experiment_id":"esm-yr2010CO2-cdr-pulse", - "parent_activity_id":[ - "CDRMIP" - ], - "parent_experiment_id":[ - "esm-yr2010CO2-control" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-yr2010CO2-control":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"historical emissions followed by fixed 2010 emissions (both model-diagnosed)", - "experiment_id":"esm-yr2010CO2-control", - "parent_activity_id":[ - "CDRMIP" - ], - "parent_experiment_id":[ - "esm-piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "esm-yr2010CO2-noemit":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"branches from esm-yr2010CO2-control with zero emissions", - "experiment_id":"esm-yr2010CO2-noemit", - "parent_activity_id":[ - "CDRMIP" - ], - "parent_experiment_id":[ - "esm-yr2010CO2-control" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "faf-all":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"control plus perturbative surface fluxes of momentum, heat and water into ocean", - "experiment_id":"faf-all", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "faf-heat":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"control plus perturbative surface flux of heat into ocean", - "experiment_id":"faf-heat", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "faf-passiveheat":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"control plus surface flux of passive heat tracer into ocean", - "experiment_id":"faf-passiveheat", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "faf-stress":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"control plus perturbative surface flux of momentum into ocean", - "experiment_id":"faf-stress", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "faf-water":{ - "activity_id":[ - "FAFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"control plus perturbative surface flux of water into ocean", - "experiment_id":"faf-water", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "futSST-pdSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with future SST and present day SIC", - "experiment_id":"futSST-pdSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "futureSST-4xCO2-solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"year 100 SSTs from abrupt-4xCO2 with quadrupled CO2 and solar reduction", - "experiment_id":"futureSST-4xCO2-solar", - "parent_activity_id":[ - "GeoMIP" - ], - "parent_experiment_id":[ - "G1" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "highres-future":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"coupled future 2015-2050 using a scenario as close to CMIP5 RCP8.5 as possible within CMIP6", - "experiment_id":"highres-future", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "hist-1950" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "highresSST-4xCO2":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"highresSST-present SST with 4xCO2 concentrations", - "experiment_id":"highresSST-4xCO2", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "highresSST-LAI":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"common LAI dataset within the highresSST-present experiment", - "experiment_id":"highresSST-LAI", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "highresSST-future":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"forced atmosphere experiment for 2015-2050 using SST/sea-ice derived from CMIP5 RCP8.5 simulations and a scenario as close to RCP8.5 as possible within CMIP6", - "experiment_id":"highresSST-future", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "highresSST-p4K":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"uniform 4K warming of highresSST-present SST", - "experiment_id":"highresSST-p4K", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "highresSST-present":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"forced atmosphere experiment for 1950-2014", - "experiment_id":"highresSST-present", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "highresSST-smoothed":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"smoothed SST version of highresSST-present", - "experiment_id":"highresSST-smoothed", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "highresSST-present" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-1950":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"coupled historical 1950-2014", - "experiment_id":"hist-1950", - "parent_activity_id":[ - "HighResMIP" - ], - "parent_experiment_id":[ - "spinup-1950" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-1950HC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"historical forcing, but with1950s halocarbon concentrations; initialized in 1950", - "experiment_id":"hist-1950HC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-CO2":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical CO2-only run", - "experiment_id":"hist-CO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-GHG":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical well-mixed GHG-only run", - "experiment_id":"hist-GHG", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-aer":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical anthropogenic aerosols-only run", - "experiment_id":"hist-aer", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-all-aer2":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical ALL-forcing run with alternate estimates of aerosol forcing", - "experiment_id":"hist-all-aer2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-all-nat2":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical ALL-forcing run with alternate estimates of natural forcing", - "experiment_id":"hist-all-nat2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"biogeochemically-coupled version of the simulation of the recent past with CO2 concentration prescribed", - "experiment_id":"hist-bgc", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-nat":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical natural-only run", - "experiment_id":"hist-nat", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-noLu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical with no land-use change", - "experiment_id":"hist-noLu", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-piAer":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"historical forcing, but with pre-industrial aerosol emissions", - "experiment_id":"hist-piAer", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-piNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"historical forcing, but with pre-industrial NTCF emissions", - "experiment_id":"hist-piNTCF", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-resAMO":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"initialized from \"historical\" run year 1870 and SSTs in the AMO domain (0deg-70degN, 70degW-0deg) restored to AMIP SSTs with historical forcings", - "experiment_id":"hist-resAMO", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-resIPO":{ - "activity_id":[ - "GMMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"initialized from \"historical\" run year 1870 and SSTs in tropical lobe of the IPO domain (20degS-20degN, 175degE-75degW) restored to AMIP SSTs with historical forcings", - "experiment_id":"hist-resIPO", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-sol":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical solar-only run", - "experiment_id":"hist-sol", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-spAer-aer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical simulation with specified anthropogenic aerosols, no other forcings", - "experiment_id":"hist-spAer-aer", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-spAer-all":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical simulation with specified anthropogenic aerosols", - "experiment_id":"hist-spAer-all", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-stratO3":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "BGC" - ], - "experiment":"historical stratospheric-ozone-only run", - "experiment_id":"hist-stratO3", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "hist-volc":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical volcanic-only run", - "experiment_id":"hist-volc", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "histSST":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"historical prescribed SSTs and historical forcing", - "experiment_id":"histSST", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "histSST-1950HC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"historical SSTs and historical forcing, but with1950 halocarbon concentrations", - "experiment_id":"histSST-1950HC", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "histSST-piAer":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"historical SSTs and historical forcing, but with pre-industrial aerosol emissions", - "experiment_id":"histSST-piAer", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "histSST-piCH4":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"historical SSTs and historical forcing, but with pre-industrial methane concentrations", - "experiment_id":"histSST-piCH4", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "histSST-piN2O":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"historical SSTs and historical forcings, but with pre-industrial N2O concentrations", - "experiment_id":"histSST-piN2O", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "histSST-piNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"historical SSTs and historical forcing, but with pre-industrial NTCF emissions", - "experiment_id":"histSST-piNTCF", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "histSST-piO3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"historical SSTs and historical forcing, but with pre-industrial ozone precursor emissions", - "experiment_id":"histSST-piO3", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "historical":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"all-forcing simulation of the recent past", - "experiment_id":"historical", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "historical-ext":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"post-2014 all-forcing simulation", - "experiment_id":"historical-ext", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "historical-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"historical with interactive ice sheet", - "experiment_id":"historical-withism", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "piControl-withism" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-1pctCO2to4x-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet model forced by ISM's own AOGCM 1pctCO2to4x output", - "experiment_id":"ism-1pctCO2to4x-self", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-piControl-self" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-1pctCO2to4x-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet model forced by ISMIP6-specified AOGCM 1pctCO2to4x output", - "experiment_id":"ism-1pctCO2to4x-std", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-pdControl-std" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-amip-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISMIP6-specified AGCM AMIP output", - "experiment_id":"ism-amip-std", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-ctrl-std" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-asmb-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by initMIP synthetic atmospheric experiment", - "experiment_id":"ism-asmb-std", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-ctrl-std" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-bsmb-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by initMIP synthetic oceanic experiment", - "experiment_id":"ism-bsmb-std", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-ctrl-std" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-ctrl-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet model initMIP control", - "experiment_id":"ism-ctrl-std", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-historical-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISM's own AOGCM historical output", - "experiment_id":"ism-historical-self", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-piControl-self" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-historical-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISMIP6-specified AOGCM historical output", - "experiment_id":"ism-historical-std", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-pdControl-std" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-lig127k-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISMIP6-specified AGCM last interglacial output", - "experiment_id":"ism-lig127k-std", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-pdControl-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISMIP6-specified AOGCM pdControl output", - "experiment_id":"ism-pdControl-std", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-piControl-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISM's own AOGCM piControl output", - "experiment_id":"ism-piControl-self", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-ssp585-self":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISM's own AOGCM ssp585 output", - "experiment_id":"ism-ssp585-self", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-historical-self" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ism-ssp585-std":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline ice sheet forced by ISMIP6-specified AOGCM ssp585 output", - "experiment_id":"ism-ssp585-std", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "ism-historical-std" - ], - "required_model_components":[ - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-cCO2":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only constant CO2", - "experiment_id":"land-cCO2", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-cClim":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only constant climate", - "experiment_id":"land-cClim", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-crop-grass":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with cropland as natural grassland", - "experiment_id":"land-crop-grass", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-crop-noFert":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with no fertilizer", - "experiment_id":"land-crop-noFert", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-crop-noIrrig":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with no irrigation", - "experiment_id":"land-crop-noIrrig", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-crop-noIrrigFert":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with managed crops but with irrigation and fertilization held constant", - "experiment_id":"land-crop-noIrrigFert", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-hist":{ - "activity_id":[ - "LS3MIP", - "LUMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"historical land-only", - "experiment_id":"land-hist", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-hist-altLu1":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only alternate land-use history", - "experiment_id":"land-hist-altLu1", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-hist-altLu2":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only alternate land use history", - "experiment_id":"land-hist-altLu2", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-hist-altStartYear":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only alternate start year", - "experiment_id":"land-hist-altStartYear", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-hist-cruNcep":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"as land-hist with CRU-NCEP forcings", - "experiment_id":"land-hist-cruNcep", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-hist-princeton":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"as land-hist with Princeton forcings", - "experiment_id":"land-hist-princeton", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-hist-wfdei":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"as land-hist with WFDEI forcings", - "experiment_id":"land-hist-wfdei", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-noFire":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with no human fire management", - "experiment_id":"land-noFire", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-noLu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"historical land-only with no land-use change", - "experiment_id":"land-noLu", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-noPasture":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with constant pastureland", - "experiment_id":"land-noPasture", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-noShiftCultivate":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with shifting cultivation turned off", - "experiment_id":"land-noShiftCultivate", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-noWoodHarv":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"historical land-only with no wood harvest", - "experiment_id":"land-noWoodHarv", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-ssp126":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"future ssp1-2.6 land only", - "experiment_id":"land-ssp126", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-ssp434":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"future ssp4-3.4 land only", - "experiment_id":"land-ssp434", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "land-ssp585":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"future ssp5-8.5 land only", - "experiment_id":"land-ssp585", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "LAND" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-initLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"initialized from \"historical\" run year 1980, but with land conditions initialized from pseudo-observations", - "experiment_id":"lfmip-initLC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-pdLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"prescribed land conditions (from current climate climatology) and initialized from \"historical\" run year 1980", - "experiment_id":"lfmip-pdLC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-pdLC-cruNcep":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"as LFMIP-pdLC with Land-Hist-cruNcep", - "experiment_id":"lfmip-pdLC-cruNcep", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-pdLC-princeton":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"as LFMIP-pdLC with Land-Hist-princeton", - "experiment_id":"lfmip-pdLC-princeton", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-pdLC-wfdei":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"as LFMIP-pdLC with Land-Hist-wfdei", - "experiment_id":"lfmip-pdLC-wfdei", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-rmLC":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"prescribed land conditions (from running mean climatology) and initialized from \"historical\" run year 1980", - "experiment_id":"lfmip-rmLC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-rmLC-cruNcep":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"as LFMIP-rmLC with Land-Hist-cruNcep", - "experiment_id":"lfmip-rmLC-cruNcep", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-rmLC-princeton":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"as LFMIP-rmLC with Land-Hist-princeton", - "experiment_id":"lfmip-rmLC-princeton", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lfmip-rmLC-wfdei":{ - "activity_id":[ - "LS3MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"as LFMIP-rmLC with Land-Hist-wfdei", - "experiment_id":"lfmip-rmLC-wfdei", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lgm":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"last glacial maximum", - "experiment_id":"lgm", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "lig127k":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"last interglacial (127k)", - "experiment_id":"lig127k", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "midHolocene":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"mid-Holocene", - "experiment_id":"midHolocene", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "midPliocene-eoi400":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"mid-Pliocene warm period", - "experiment_id":"midPliocene-eoi400", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "modelSST-futArcSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day coupled model SST and future Arctic SIC", - "experiment_id":"modelSST-futArcSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "modelSST-pdSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice present day control with coupled model SST", - "experiment_id":"modelSST-pdSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "omip1":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"OMIP experiment forced by Large and Yeager (CORE-2, NCEP) atmospheric data set and initialized with observed physical and biogeochemical ocean data", - "experiment_id":"omip1", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "omip1-spunup":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"OMIP experiment forced by Large and Yeager (CORE-2, NCEP) atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model", - "experiment_id":"omip1-spunup", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "omip2":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"OMIP experiment forced by JRA55-do atmospheric data set and initialized with observed physical and biogeochemical ocean data", - "experiment_id":"omip2", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "omip2-spunup":{ - "activity_id":[ - "OMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"OMIP experiment forced by JRA55-do atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model", - "experiment_id":"omip2-spunup", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "OGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-futAntSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled time slice constrained by future Antarctic SIC", - "experiment_id":"pa-futAntSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-futAntSIC-ext":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled extended simulation with future Antarctic SIC", - "experiment_id":"pa-futAntSIC-ext", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-futArcSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled time slice constrained by future Arctic SIC", - "experiment_id":"pa-futArcSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-futArcSIC-ext":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled extended simulation with future Arctic SIC", - "experiment_id":"pa-futArcSIC-ext", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-pdSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled time slice contrained by present day SIC", - "experiment_id":"pa-pdSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-pdSIC-ext":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled extended simulation constrained by present day SIC", - "experiment_id":"pa-pdSIC-ext", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-piAntSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled time slice with pre-industrial Antarctic SIC", - "experiment_id":"pa-piAntSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pa-piArcSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Partially-coupled time slice constrained by pre-industrial Arctic SIC", - "experiment_id":"pa-piArcSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "past1000":{ - "activity_id":[ - "PMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"last millennium", - "experiment_id":"past1000", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-futAntSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and future Antarctic SIC", - "experiment_id":"pdSST-futAntSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-futArcSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and future Arctic SIC", - "experiment_id":"pdSST-futArcSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-futArcSICSIT":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and future Arctic SIC and sea ice thickness", - "experiment_id":"pdSST-futArcSICSIT", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-futBKSeasSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and future Barents and Kara Seas SIC", - "experiment_id":"pdSST-futBKSeasSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-futOkhotskSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and future Sea of Okhotsk SIC", - "experiment_id":"pdSST-futOkhotskSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-pdSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and SIC", - "experiment_id":"pdSST-pdSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-pdSICSIT":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice constrained by present day conditions including sea ice thickness", - "experiment_id":"pdSST-pdSICSIT", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-piAntSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and pre-industrial Antarctic SIC", - "experiment_id":"pdSST-piAntSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "pdSST-piArcSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with present day SST and pre-industrial Arctic SIC", - "experiment_id":"pdSST-piArcSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-2xDMS":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of DMS", - "experiment_id":"piClim-2xDMS", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-2xNOx":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled production of NOx due to lightning", - "experiment_id":"piClim-2xNOx", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-2xVOC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of biogenic VOCs", - "experiment_id":"piClim-2xVOC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-2xdust":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of dust", - "experiment_id":"piClim-2xdust", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-2xfire":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions from fires", - "experiment_id":"piClim-2xfire", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-2xss":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with doubled emissions of sea salt", - "experiment_id":"piClim-2xss", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-4xCO2":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"effective radiative forcing by 4xCO2", - "experiment_id":"piClim-4xCO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-BC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 black carbon emissions", - "experiment_id":"piClim-BC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-CH4":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 methane concentrations (including chemistry)", - "experiment_id":"piClim-CH4", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-HC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 halocarbon concentrations (including chemistry)", - "experiment_id":"piClim-HC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-N2O":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 N2O concentrations (including chemistry)", - "experiment_id":"piClim-N2O", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-NH3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 ammonia emissions", - "experiment_id":"piClim-NH3", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-NOx":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 NOx emissions", - "experiment_id":"piClim-NOx", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-NTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 NTCF emissions", - "experiment_id":"piClim-NTCF", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-O3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 ozone precursor emissions", - "experiment_id":"piClim-O3", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-OC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 organic carbon emissions", - "experiment_id":"piClim-OC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-SO2":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 SO2 emissions", - "experiment_id":"piClim-SO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-VOC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"pre-industrial climatological SSTs and forcing, but with 2014 VOC emissions", - "experiment_id":"piClim-VOC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-aer":{ - "activity_id":[ - "RFMIP", - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"effective radiative forcing by present-day aerosols", - "experiment_id":"piClim-aer", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-anthro":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"effective radiative forcing by present day anthropogenic agents", - "experiment_id":"piClim-anthro", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-control":{ - "activity_id":[ - "RFMIP", - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"effective radiative forcing in present-day", - "experiment_id":"piClim-control", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-ghg":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"effective radiative forcing by present-day greenhouse gases", - "experiment_id":"piClim-ghg", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-histaer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"transient effective radiative forcing by aerosols", - "experiment_id":"piClim-histaer", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-histall":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"transient effective radiative forcing", - "experiment_id":"piClim-histall", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-histghg":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"transient effective radiative forcing by greenhouse gases", - "experiment_id":"piClim-histghg", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-histnat":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"transient effective radiative forcing by natural perturbations", - "experiment_id":"piClim-histnat", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-lu":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"effective radiative forcing by present-day land use", - "experiment_id":"piClim-lu", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-spAer-aer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"effective radiative forcing at present day with specified anthropogenic aerosol optical properties, all forcings", - "experiment_id":"piClim-spAer-aer", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-spAer-anthro":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"effective radiative forcing at present day with specified anthropogenic aerosol optical properties, anthropogenic forcings", - "experiment_id":"piClim-spAer-anthro", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-spAer-histaer":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"transient effective radiative forcing with specified anthropogenic aerosol optical properties, aerosol forcing", - "experiment_id":"piClim-spAer-histaer", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piClim-spAer-histall":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"transient effective radiative forcing with specified anthropogenic aerosol optical properties, all forcings", - "experiment_id":"piClim-spAer-histall", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piControl":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"pre-industrial control", - "experiment_id":"piControl", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl-spinup" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piControl-spinup":{ - "activity_id":[ - "CMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"pre-industrial control (spin-up)", - "experiment_id":"piControl-spinup", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piControl-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"preindustrial control with interactive ice sheet", - "experiment_id":"piControl-withism", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piSST":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"experiment forced with pre-industrial SSTs, sea ice and atmospheric constituents", - "experiment_id":"piSST", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piSST-4xCO2":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"as piSST with radiation and vegetation seeing 4xCO2", - "experiment_id":"piSST-4xCO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piSST-4xCO2-rad":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"as piSST with radiation-only seeing 4xCO2", - "experiment_id":"piSST-4xCO2-rad", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piSST-4xCO2-solar":{ - "activity_id":[ - "GeoMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"preindustrial control SSTs with quadrupled CO2 and solar reduction", - "experiment_id":"piSST-4xCO2-solar", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piSST-pdSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with pre-industrial SST and present day SIC", - "experiment_id":"piSST-pdSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piSST-piSIC":{ - "activity_id":[ - "PAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Atmosphere time slice with pre-industrial SST and SIC", - "experiment_id":"piSST-piSIC", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "amip" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "piSST-pxK":{ - "activity_id":[ - "CFMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"as piSST with uniform SST increase with magnitude based on abrupt-4xCO2 response", - "experiment_id":"piSST-pxK", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "rad-irf":{ - "activity_id":[ - "RFMIP" - ], - "additional_allowed_model_components":[ - "" - ], - "experiment":"offline assessment of radiative transfer parmeterizations in clear skies", - "experiment_id":"rad-irf", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "RAD" - ], - "sub_experiment_id":[ - "none" - ] - }, - "spinup-1950":{ - "activity_id":[ - "HighResMIP" - ], - "additional_allowed_model_components":[ - "AER" - ], - "experiment":"coupled spinup with fixed 1950s forcings from 1950 initial conditions (with ocean at rest) to provide initial condition for control-1950 and hist-1950", - "experiment_id":"spinup-1950", - "parent_activity_id":[ - "no parent" - ], - "parent_experiment_id":[ - "no parent" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp119":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"low-end scenario reaching 1.9 W m-2, based on SSP1", - "experiment_id":"ssp119", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp126":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"update of RCP2.6 based on SSP1", - "experiment_id":"ssp126", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp126-ssp370Lu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"SSP1-2.6 with SSP3-7.0 land use", - "experiment_id":"ssp126-ssp370Lu", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp245":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"update of RCP4.5 based on SSP2", - "experiment_id":"ssp245", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp245-GHG":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"well-mixed GHG-only SSP2-4.5 run", - "experiment_id":"ssp245-GHG", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-GHG" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp245-aer":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"aerosol-only SSP2-4.5 run", - "experiment_id":"ssp245-aer", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-aer" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp245-nat":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"natural-only SSP2-4.5 run", - "experiment_id":"ssp245-nat", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-nat" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp245-stratO3":{ - "activity_id":[ - "DAMIP" - ], - "additional_allowed_model_components":[ - "AER", - "BGC" - ], - "experiment":"stratospheric-ozone-only SSP2-4.5 run", - "experiment_id":"ssp245-stratO3", - "parent_activity_id":[ - "DAMIP" - ], - "parent_experiment_id":[ - "hist-stratO3" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370":{ - "activity_id":[ - "ScenarioMIP", - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"gap-filling scenario reaching 7.0 based on SSP3", - "experiment_id":"ssp370", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370-lowNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"SSP3-7.0, with low NTCF emissions", - "experiment_id":"ssp370-lowNTCF", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370-ssp126Lu":{ - "activity_id":[ - "LUMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"SSP3-7.0 with SSP1-2.6 land use", - "experiment_id":"ssp370-ssp126Lu", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370SST":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"SSP3-7.0, with SSTs prescribed from ssp370", - "experiment_id":"ssp370SST", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370SST-lowAer":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"SSP3-7.0, prescribed SSTs, with low aerosol emissions", - "experiment_id":"ssp370SST-lowAer", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370SST-lowBC":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"SSP3-7.0, prescribed SSTs, with low black carbon emissions", - "experiment_id":"ssp370SST-lowBC", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370SST-lowCH4":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"SSP3-7.0, prescribed SSTs, with low methane concentrations", - "experiment_id":"ssp370SST-lowCH4", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370SST-lowNTCF":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"SSP3-7.0, prescribed SSTs, with low NTCF emissions", - "experiment_id":"ssp370SST-lowNTCF", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370SST-lowO3":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "BGC" - ], - "experiment":"SSP3-7.0, prescribed SSTs, with low ozone precursor emissions", - "experiment_id":"ssp370SST-lowO3", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER", - "CHEM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp370SST-ssp126Lu":{ - "activity_id":[ - "AerChemMIP" - ], - "additional_allowed_model_components":[ - "CHEM", - "BGC" - ], - "experiment":"SSP3-7.0, prescribed SSTs, with SSP1-2.6 land use", - "experiment_id":"ssp370SST-ssp126Lu", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp370" - ], - "required_model_components":[ - "AGCM", - "AER" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp434":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"gap-filling scenario reaching 3.4 based on SSP4", - "experiment_id":"ssp434", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp460":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"update of RCP6.0 based on SSP4", - "experiment_id":"ssp460", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp534-over":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"overshoot of 3.4 W/m**2 branching from ssp585 in 2040", - "experiment_id":"ssp534-over", - "parent_activity_id":[ - "ScenarioMIP" - ], - "parent_experiment_id":[ - "ssp585" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp534-over-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"biogeochemically-coupled version of the RCP3.4-overshoot based on SSP5", - "experiment_id":"ssp534-over-bgc", - "parent_activity_id":[ - "C4MIP" - ], - "parent_experiment_id":[ - "hist-bgc" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp585":{ - "activity_id":[ - "ScenarioMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"update of RCP8.5 based on SSP5", - "experiment_id":"ssp585", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp585-bgc":{ - "activity_id":[ - "C4MIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"biogeochemically-coupled version of the RCP8.5 based on SSP5", - "experiment_id":"ssp585-bgc", - "parent_activity_id":[ - "C4MIP" - ], - "parent_experiment_id":[ - "hist-bgc" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - }, - "ssp585-withism":{ - "activity_id":[ - "ISMIP6" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"ssp585 with interactive ice sheet", - "experiment_id":"ssp585-withism", - "parent_activity_id":[ - "ISMIP6" - ], - "parent_experiment_id":[ - "historical-withism" - ], - "required_model_components":[ - "AOGCM", - "ISM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-cluster-21C":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"volcanic cluster experiment under 21st century SSP2-4.5 scenario", - "experiment_id":"volc-cluster-21C", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-cluster-ctrl":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"19th century volcanic cluster initialized from PiControl", - "experiment_id":"volc-cluster-ctrl", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-cluster-mill":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"19th century volcanic cluster initialized from past1000", - "experiment_id":"volc-cluster-mill", - "parent_activity_id":[ - "PMIP" - ], - "parent_experiment_id":[ - "past1000" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-long-eq":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized equatorial volcanic eruption emitting 56.2 Tg SO2", - "experiment_id":"volc-long-eq", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-long-hlN":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"idealized Northern Hemisphere high-latitude eruption emitting 28.1 Tg of SO2", - "experiment_id":"volc-long-hlN", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-long-hlS":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Idealized Southern Hemisphere high-latitude eruption emitting 28.1 Tg of SO2", - "experiment_id":"volc-long-hlS", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-pinatubo-full":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Pinatubo experiment", - "experiment_id":"volc-pinatubo-full", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-pinatubo-slab":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Pinatubo experiment with slab ocean", - "experiment_id":"volc-pinatubo-slab", - "parent_activity_id":[ - "VolMIP" - ], - "parent_experiment_id":[ - "control-slab" - ], - "required_model_components":[ - "AGCM", - "SLAB" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-pinatubo-strat":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Pinatubo experiment with partial radiative forcing, includes only stratospheric warming", - "experiment_id":"volc-pinatubo-strat", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "volc-pinatubo-surf":{ - "activity_id":[ - "VolMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM", - "BGC" - ], - "experiment":"Pinatubo experiment with partial radiative forcing, solar radiation scattering only", - "experiment_id":"volc-pinatubo-surf", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "piControl" - ], - "required_model_components":[ - "AOGCM" - ], - "sub_experiment_id":[ - "none" - ] - }, - "yr2010CO2":{ - "activity_id":[ - "CDRMIP" - ], - "additional_allowed_model_components":[ - "AER", - "CHEM" - ], - "experiment":"concentration-driven fixed 2010 forcing", - "experiment_id":"yr2010CO2", - "parent_activity_id":[ - "CMIP" - ], - "parent_experiment_id":[ - "historical" - ], - "required_model_components":[ - "AOGCM", - "BGC" - ], - "sub_experiment_id":[ - "none" - ] - } - }, - "product":[ - "model-output" - ], - "tracking_id":[ - "hdl:21.14100/.*" - ], - "further_info_url":[ - "https://furtherinfo.es-doc.org/.*" - ], - "realization_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ], - "variant_label":[ - "r[[:digit:]]\\{1,\\}i[[:digit:]]\\{1,\\}p[[:digit:]]\\{1,\\}f[[:digit:]]\\{1,\\}$" - ], - "data_specs_version":[ - "^[[:digit:]]\\{2,2\\}\\.[[:digit:]]\\{2,2\\}\\.[[:digit:]]\\{2,2\\}$" - ], - "Conventions":[ - "^CF-1.7 CMIP-6.[0-2]\\( UGRID-1.0\\)\\{0,\\}$" - ], - "forcing_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ], - "initialization_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ], - "physics_index":[ - "^\\[\\{0,\\}[[:digit:]]\\{1,\\}\\]\\{0,\\}$" - ] - } -} \ No newline at end of file diff --git a/mydoc/examples/CMIP6_Omon.json b/mydoc/examples/CMIP6_Omon.json deleted file mode 100644 index 26fe258..0000000 --- a/mydoc/examples/CMIP6_Omon.json +++ /dev/null @@ -1,5274 +0,0 @@ -{ - "Header": { - "data_specs_version": "01.00.27", - "cmor_version": "3.3", - "table_id": "Table Omon", - "realm": "ocnBgchem", - "table_date": "30 July 2018", - "missing_value": "1e20", - "int_missing_value": "-999", - "product": "model-output", - "approx_interval": "30.00000", - "generic_levels": "olevel", - "mip_era": "CMIP6", - "Conventions": "CF-1.7 CMIP-6.2" - }, - "variable_entry": { - "agessc": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_age_since_surface_contact", - "units": "yr", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Age Since Surface Contact", - "comment": "Time elapsed since water was last in surface layer of the ocean.", - "dimensions": "longitude latitude olevel time", - "out_name": "agessc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "arag": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Aragonite Concentration", - "comment": "Sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude olevel time", - "out_name": "arag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "aragos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Aragonite Concentration", - "comment": "sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude time", - "out_name": "aragos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bacc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Bacterial Carbon Concentration", - "comment": "Sum of bacterial carbon component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "bacc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "baccos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Bacterial Carbon Concentration", - "comment": "sum of bacterial carbon component concentrations", - "dimensions": "longitude latitude time", - "out_name": "baccos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bfe": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Iron in sea water", - "comment": "Sum of particulate organic iron component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "bfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bfeos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Iron in sea water", - "comment": "sum of particulate organic iron component concentrations", - "dimensions": "longitude latitude time", - "out_name": "bfeos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bigthetao": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_conservative_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Convervative Temperature", - "comment": "Sea water conservative temperature (this should be contributed only for models using conservative temperature as prognostic field)", - "dimensions": "longitude latitude olevel time", - "out_name": "bigthetao", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bigthetaoga": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_conservative_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Water Conservative Temperature", - "comment": "Diagnostic should be contributed only for models using conservative temperature as prognostic field.", - "dimensions": "time", - "out_name": "bigthetaoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bsi": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Silicon in sea water", - "comment": "Sum of particulate silica component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "bsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "bsios": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Silicon in sea water", - "comment": "sum of particulate silica component concentrations", - "dimensions": "longitude latitude time", - "out_name": "bsios", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "calc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Calcite Concentration", - "comment": "Sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude olevel time", - "out_name": "calc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "calcos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Calcite Concentration", - "comment": "sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", - "dimensions": "longitude latitude time", - "out_name": "calcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc11": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_cfc11_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of CFC-11 in sea water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The chemical formula of CFC11 is CFCl3. The IUPAC name fof CFC11 is trichloro-fluoro-methane.", - "dimensions": "longitude latitude olevel time", - "out_name": "cfc11", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "cfc12": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_cfc12_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of CFC-12 in sea water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The chemical formula for CFC12 is CF2Cl2. The IUPAC name for CFC12 is dichloro-difluoro-methane.", - "dimensions": "longitude latitude olevel time", - "out_name": "cfc12", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chl": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Total Phytoplankton expressed as Chlorophyll in sea water", - "comment": "Sum of chlorophyll from all phytoplankton group concentrations. In most models this is equal to chldiat+chlmisc, that is the sum of Diatom Chlorophyll Mass Concentration and Other Phytoplankton Chlorophyll Mass Concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "chl", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlcalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chlcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlcalcos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "chlcalcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Diatoms expressed as Chlorophyll in sea water", - "comment": "Chlorophyll from diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chldiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiatos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Diatoms expressed as Chlorophyll in sea water", - "comment": "chlorophyll from diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude time", - "out_name": "chldiatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiaz": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "comment": "Chlorophyll concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chldiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chldiazos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Diazotrophs expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "chldiazos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlmisc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Other Phytoplankton expressed as Chlorophyll in sea water", - "comment": "Chlorophyll from additional phytoplankton component concentrations alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chlmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlmiscos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Other Phytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll from additional phytoplankton component concentrations alone", - "dimensions": "longitude latitude time", - "out_name": "chlmiscos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Total Phytoplankton expressed as Chlorophyll in sea water", - "comment": "Sum of chlorophyll from all phytoplankton group concentrations at the sea surface. In most models this is equal to chldiat+chlmisc, that is the sum of 'Diatom Chlorophyll Mass Concentration' plus 'Other Phytoplankton Chlorophyll Mass Concentration'", - "dimensions": "longitude latitude time", - "out_name": "chlos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlpico": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mass Concentration of Picophytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "chlpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "chlpicoos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", - "units": "kg m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mass Concentration of Picophytoplankton expressed as Chlorophyll in sea water", - "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "chlpicoos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Carbonate Ion Concentration", - "comment": "'Mole concentration' means number of moles per unit volume, also called'molarity', and is used in the construction mole_concentration_of_X_in_Y, whereX is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with a charge of minus two.", - "dimensions": "longitude latitude olevel time", - "out_name": "co3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3abio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_abiotic_analogue_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic Carbonate Ion Concentration", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. In ocean biogeochemistry models, an 'abiotic analogue' is used to simulate the effect on a modelled variable when biological effects on ocean carbon concentration and alkalinity are ignored. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two.", - "dimensions": "longitude latitude olevel time", - "out_name": "co3abio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3abioos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_abiotic_analogue_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Abiotic Carbonate Ion Concentration", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. In ocean biogeochemistry models, an 'abiotic analogue' is used to simulate the effect on a modelled variable when biological effects on ocean carbon concentration and alkalinity are ignored. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two.", - "dimensions": "longitude latitude time", - "out_name": "co3abioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3nat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_natural_analogue_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural Carbonate Ion Concentration", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. In ocean biogeochemistry models, a 'natural analogue' is used to simulate the effect on a modelled variable of imposing preindustrial atmospheric carbon dioxide concentrations, even when the model as a whole may be subjected to varying forcings. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two.", - "dimensions": "longitude latitude olevel time", - "out_name": "co3nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3natos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_natural_analogue_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural Carbonate Ion Concentration", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. In ocean biogeochemistry models, a 'natural analogue' is used to simulate the effect on a modelled variable of imposing preindustrial atmospheric carbon dioxide concentrations, even when the model as a whole may be subjected to varying forcings. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two.", - "dimensions": "longitude latitude time", - "out_name": "co3natos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3os": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Carbonate Ion Concentration", - "comment": "'Mole concentration' means number of moles per unit volume, also called'molarity', and is used in the construction mole_concentration_of_X_in_Y, whereX is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with a charge of minus two.", - "dimensions": "longitude latitude time", - "out_name": "co3os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satarag": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_aragonite_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Carbonate Ion in Equilibrium with Pure Aragonite in sea water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two. Aragonite is a mineral that is a polymorph of calcium carbonate. The chemical formula of aragonite is CaCO3. At a given salinity, the thermodynamic equilibrium is that between dissolved carbonate ion and solid aragonite. Standard names also exist for calcite, another polymorph of calcium carbonate.", - "dimensions": "longitude latitude olevel time", - "out_name": "co3satarag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3sataragos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_aragonite_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Carbonate Ion in Equilibrium with Pure Aragonite in sea water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two. Aragonite is a mineral that is a polymorph of calcium carbonate. The chemical formula of aragonite is CaCO3. At a given salinity, the thermodynamic equilibrium is that between dissolved carbonate ion and solid aragonite. Standard names also exist for calcite, another polymorph of calcium carbonate.", - "dimensions": "longitude latitude time", - "out_name": "co3sataragos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satcalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_calcite_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Carbonate Ion in Equilibrium with Pure Calcite in sea water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two. Calcite is a mineral that is a polymorph of calcium carbonate. The chemical formula of calcite is CaCO3. At a given salinity, the thermodynamic equilibrium is that between dissolved carbonate ion and solid calcite. Standard names also exist for aragonite, another polymorph of calcium carbonate.", - "dimensions": "longitude latitude olevel time", - "out_name": "co3satcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "co3satcalcos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_carbonate_expressed_as_carbon_at_equilibrium_with_pure_calcite_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Carbonate Ion in Equilibrium with Pure Calcite in sea water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The chemical formula of the carbonate anion is CO3 with an electrical charge of minus two. Calcite is a mineral that is a polymorph of calcium carbonate. The chemical formula of calcite is CaCO3. At a given salinity, the thermodynamic equilibrium is that between dissolved carbonate ion and solid calcite. Standard names also exist for aragonite, another polymorph of calcium carbonate.", - "dimensions": "longitude latitude time", - "out_name": "co3satcalcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "detoc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Detrital Organic Carbon Concentration", - "comment": "Sum of detrital organic carbon component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "detoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "detocos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Detrital Organic Carbon Concentration", - "comment": "sum of detrital organic carbon component concentrations", - "dimensions": "longitude latitude time", - "out_name": "detocos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dfe": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Iron Concentration", - "comment": "Dissolved iron in sea water, including both Fe2+ and Fe3+ ions (but not particulate detrital iron)", - "dimensions": "longitude latitude olevel time", - "out_name": "dfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dfeos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Iron Concentration", - "comment": "dissolved iron in sea water is meant to include both Fe2+ and Fe3+ ions (but not, e.g., particulate detrital iron)", - "dimensions": "longitude latitude time", - "out_name": "dfeos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi13c": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_13C_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Inorganic 13Carbon Concentration", - "comment": "Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissi13c", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi13cos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_13C_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Inorganic 13Carbon Concentration", - "comment": "Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissi13cos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi14cabio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_14C_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic Dissolved Inorganic 14Carbon Concentration", - "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissi14cabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissi14cabioos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_14C_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "mole_concentration_of_dissolved_inorganic_carbon14_abiotic_analogue_in_sea_water", - "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissi14cabioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissic": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicabio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_abiotic_analogue_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic Dissolved Inorganic Carbon Concentration", - "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude olevel time", - "out_name": "dissicabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicabioos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_abiotic_analogue_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Abiotic Dissolved Inorganic Carbon Concentration", - "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissicabioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicnat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_natural_analogue_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude olevel time", - "out_name": "dissicnat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicnatos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_natural_analogue_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude time", - "out_name": "dissicnatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissicos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Inorganic Carbon Concentration", - "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", - "dimensions": "longitude latitude time", - "out_name": "dissicos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissoc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Organic Carbon Concentration", - "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", - "dimensions": "longitude latitude olevel time", - "out_name": "dissoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dissocos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Organic Carbon Concentration", - "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", - "dimensions": "longitude latitude time", - "out_name": "dissocos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dmso": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dimethyl_sulfide_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Dimethyl Sulphide in sea water", - "comment": "Mole concentration of dimethyl sulphide in water", - "dimensions": "longitude latitude olevel time", - "out_name": "dmso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dmsos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dimethyl_sulfide_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Dimethyl Sulphide in sea water", - "comment": "'Mole concentration' means number of moles per unit volume, also called'molarity', and is used in the construction mole_concentration_of_X_in_Y, whereX is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The chemical formula for dimethyl sulfide is (CH3)2S. Dimethyl sulfide is sometimes referred to as DMS.", - "dimensions": "longitude latitude time", - "out_name": "dmsos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpco2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Delta PCO2", - "comment": "The partial pressure of a dissolved gas in sea water is the partial pressure in air with which it would be in equilibrium. The partial pressure of a gaseous constituent of air is the pressure which it alone would exert with unchanged temperature and number of moles per unit volume. The surface called 'surface' means the lower boundary of the atmosphere. The chemical formula for carbon dioxide is CO2.", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpco2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpco2abio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_carbon_dioxide_abiotic_analogue_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic Delta PCO2", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. The chemical formula for carbon dioxide is CO2. In ocean biogeochemistry models, an 'abiotic analogue' is used to simulate the effect on a modelled variable when biological effects on ocean carbon concentration and alkalinity are ignored. The partial pressure of a gaseous constituent of air is the pressure which it alone would exert with unchanged temperature and number of moles per unit volume. The partial pressure of a dissolved gas in sea water is the partial pressure in air with which it would be in equilibrium. The partial pressure difference between sea water and air is positive when the partial pressure of the dissolved gas in sea water is greater than the partial pressure in air.", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpco2abio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpco2nat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_carbon_dioxide_natural_analogue_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural Delta PCO2", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. The chemical formula for carbon dioxide is CO2. In ocean biogeochemistry models, a 'natural analogue' is used to simulate the effect on a modelled variable of imposing preindustrial atmospheric carbon dioxide concentrations, even when the model as a whole may be subjected to varying forcings. The partial pressure of a gaseous constituent of air is the pressure which it alone would exert with unchanged temperature and number of moles per unit volume. The partial pressure of a dissolved gas in sea water is the partial pressure in air with which it would be in equilibrium. The partial pressure difference between sea water and air is positive when the partial pressure of the dissolved gas in sea water is greater than the partial pressure in air.", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpco2nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "dpo2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Delta PO2", - "comment": "The partial pressure of a dissolved gas in sea water is the partial pressure in air with which it would be in equilibrium. The partial pressure of a gaseous constituent of air is the pressure which it alone would exert with unchanged temperature and number of moles per unit volume. The surface called 'surface' means the lower boundary of the atmosphere.", - "dimensions": "longitude latitude time depth0m", - "out_name": "dpo2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "eparag100": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Aragonite", - "comment": "The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'Sinking' is the gravitational settling of particulate matter suspended in a liquid. A sinking flux is positive downwards and is calculated relative to the movement of the surrounding fluid. Aragonite is a mineral that is a polymorph of calcium carbonate. The chemical formula of aragonite is CaCO3. Standard names also exist for calcite, another polymorph of calcium carbonate.", - "dimensions": "longitude latitude time depth100m", - "out_name": "eparag100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epc100": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Organic Carbon", - "comment": "The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'Sinking' is the gravitational settling of particulate matter suspended in a liquid. A sinking flux is positive downwards and is calculated relative to the movement of the surrounding fluid.", - "dimensions": "longitude latitude time depth100m", - "out_name": "epc100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epcalc100": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Calcite", - "comment": "The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'Sinking' is the gravitational settling of particulate matter suspended in a liquid. A sinking flux is positive downwards and is calculated relative to the movement of the surrounding fluid. Calcite is a mineral that is a polymorph of calcium carbonate. The chemical formula of calcite is CaCO3. Standard names also exist for aragonite, another polymorph of calcium carbonate.", - "dimensions": "longitude latitude time depth100m", - "out_name": "epcalc100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epfe100": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_particulate_iron_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Iron", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'Sinking' is the gravitational settling of particulate matter suspended in a liquid. A sinking flux is positive downwards and is calculated relative to the movement of the surrounding fluid.", - "dimensions": "longitude latitude time depth100m", - "out_name": "epfe100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epn100": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Nitrogen", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'Sinking' is the gravitational settling of particulate matter suspended in a liquid. A sinking flux is positive downwards and is calculated relative to the movement of the surrounding fluid.", - "dimensions": "longitude latitude time depth100m", - "out_name": "epn100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epp100": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Phosphorus", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'Sinking' is the gravitational settling of particulate matter suspended in a liquid. A sinking flux is positive downwards and is calculated relative to the movement of the surrounding fluid.", - "dimensions": "longitude latitude time depth100m", - "out_name": "epp100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "epsi100": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_particulate_silicon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Flux of Particulate Silicon", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'Sinking' is the gravitational settling of particulate matter suspended in a liquid. A sinking flux is positive downwards and is calculated relative to the movement of the surrounding fluid.", - "dimensions": "longitude latitude time depth100m", - "out_name": "epsi100", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "evs": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "water_evapotranspiration_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Evaporation Flux Where Ice Free Ocean over Sea", - "comment": "computed as the total mass of water vapor evaporating from the ice-free portion of the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "evs", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "expc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sinking Particulate Organic Carbon Flux", - "comment": "Downward flux of particulate organic carbon", - "dimensions": "longitude latitude olevel time", - "out_name": "expc", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtalk": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Biological Alkalinity due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of alkalinity", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtalk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdic": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic carbon", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdife": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Iron due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic iron", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdife", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdin": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Nitrogen due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdip": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Phosphorus due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of phosphate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdip", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fbddtdisi": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Dissolved Inorganic Silicon due to Biological Activity", - "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic silicate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fbddtdisi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtalk": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Total Alkalinity", - "comment": "vertical integral of net time rate of change of alkalinity", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtalk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdic": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Carbon", - "comment": "'Content' indicates a quantity per unit area. 'tendency_of_X' means derivative of X with respect to time. 'Dissolved inorganic carbon' describes a family of chemical species in solution, including carbon dioxide, carbonic acid and the carbonate and bicarbonate anions. 'Dissolved inorganic carbon' isthe term used in standard names for all species belonging to the family that are represented within a given model. The list of individual species that are included in a quantity having a group chemical standard name can vary between models. Where possible, the data variable should be accompanied by a complete description of the species represented, for example, by using a comment attribute.", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdife": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Iron", - "comment": "vertical integral of net time rate of change of dissolved inorganic iron", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdife", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdin": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Nitrogen", - "comment": "Net time rate of change of nitrogen nutrients (e.g. NO3+NH4)", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdip": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Phosphorus", - "comment": "vertical integral of net time rate of change of phosphate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdip", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fddtdisi": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea (top 100m only) time: mean", - "cell_measures": "area: areacello", - "long_name": "Rate of Change of Net Dissolved Inorganic Silicon", - "comment": "vertical integral of net time rate of change of dissolved inorganic silicate", - "dimensions": "longitude latitude time olayer100m", - "out_name": "fddtdisi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg13co2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_downward_mass_flux_of_13C_dioxide_abiotic_analogue_expressed_as_13C", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic 13CO2", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. 'Downward' indicates a vector component which is positive when directed downward (negative upward). In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. In ocean biogeochemistry models, an 'abiotic analogue' is used to simulate the effect on a modelled variable when biological effects on ocean carbon concentration and alkalinity are ignored. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. 'C' means the element carbon and '13C' is the stable isotope 'carbon-13', having six protons and seven neutrons.", - "dimensions": "longitude latitude time depth0m", - "out_name": "fg13co2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fg14co2abio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_downward_mass_flux_of_14C_dioxide_abiotic_analogue_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic 14CO2", - "comment": "Gas exchange flux of abiotic 14CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fg14co2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgcfc11": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_mole_flux_of_cfc11", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward CFC11 flux", - "comment": "gas exchange flux of CFC11", - "dimensions": "longitude latitude time", - "out_name": "fgcfc11", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgcfc12": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_mole_flux_of_cfc12", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward CFC12 flux", - "comment": "gas exchange flux of CFC12", - "dimensions": "longitude latitude time", - "out_name": "fgcfc12", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Total CO2", - "comment": "Gas exchange flux of CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgco2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2abio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_abiotic_analogue_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Abiotic CO2", - "comment": "Gas exchange flux of abiotic CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgco2abio", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgco2nat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_natural_analogue_expressed_as_carbon", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of Natural CO2", - "comment": "Gas exchange flux of natural CO2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgco2nat", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgdms": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_upward_mole_flux_of_dimethyl_sulfide", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Upward Flux of DMS", - "comment": "Gas exchange flux of DMS (positive into atmosphere)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgdms", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgo2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_downward_mole_flux_of_molecular_oxygen", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Flux of O2", - "comment": "Gas exchange flux of O2 (positive into ocean)", - "dimensions": "longitude latitude time depth0m", - "out_name": "fgo2", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fgsf6": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_mole_flux_of_sulfur_hexafluoride", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward SF6 flux", - "comment": "gas exchange flux of SF6", - "dimensions": "longitude latitude time", - "out_name": "fgsf6", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ficeberg": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_from_icebergs", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Water Flux into Sea Water From Icebergs", - "comment": "computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude olevel time", - "out_name": "ficeberg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ficeberg2d": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_from_icebergs", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water From Icebergs", - "comment": "computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "ficeberg", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "frfe": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Loss to Sediments", - "comment": "'Content' indicates a quantity per unit area. The specification of a physical process by the phrase due_to_process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'tendency_of_X' means derivative of X with respect to time.", - "dimensions": "longitude latitude time", - "out_name": "frfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fric": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Inorganic Carbon Flux at Ocean Bottom", - "comment": "Inorganic Carbon loss to sediments", - "dimensions": "longitude latitude time", - "out_name": "fric", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "friver": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water From Rivers", - "comment": "computed as the river flux of water into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "friver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "frn": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Loss to Sediments and through Denitrification", - "comment": "'Content' indicates a quantity per unit area. The specification of a physical process by the phrase due_to_process means that the quantity named is asingle term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Denitrification' is the conversion of nitrate into gasesous compounds such as nitric oxide, nitrous oxide and molecular nitrogen which are then emitted to the atmosphere. 'Sedimentation' is the sinking of particulate matter to the floor of a body of water. 'tendency_of_X' means derivative of X with respect to time.", - "dimensions": "longitude latitude time", - "out_name": "frn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "froc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Organic Carbon Flux at Ocean Bottom", - "comment": "Organic Carbon loss to sediments", - "dimensions": "longitude latitude time", - "out_name": "froc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fsfe": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Net Flux of Iron", - "comment": "Iron supply through deposition flux onto sea surface, runoff, coasts, sediments, etc", - "dimensions": "longitude latitude time depth0m", - "out_name": "fsfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fsitherm": { - "frequency": "mon", - "modeling_realm": "ocean seaIce", - "standard_name": "water_flux_into_sea_water_due_to_sea_ice_thermodynamics", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water due to Sea Ice Thermodynamics", - "comment": "computed as the sea ice thermodynamic water flux into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "fsitherm", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "fsn": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Net Flux of Nitrogen", - "comment": "'Content' indicates a quantity per unit area. The specification of a physical process by the phrase due_to_process means that the quantity named is asingle term in a sum of terms which together compose the general quantity named by omitting the phrase. Deposition of nitrogen into the ocean is the sum of dry and wet depositionof nitrogen species onto the ocean surface from the atmosphere. 'Nitrogen fixation' means the production of ammonia from nitrogen gas. Organisms that fix nitrogen are termed 'diazotrophs'. Diazotrophic phytoplankton can fix atmospheric nitrogen, thus increasing the content of nitrogen in the ocean. Runoff is the liquid water which drains from land. If not specified, 'runoff' refers to the sum of surface runoff and subsurface drainage.'tendency_of_X' means derivative of X with respect to time.", - "dimensions": "longitude latitude time depth0m", - "out_name": "fsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "graz": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Grazing of Phytoplankton by Zooplankton", - "comment": "'tendency_of_X' means derivative of X with respect to time. Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. The specification of a physical process by the phrase 'due_to_' process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase.", - "dimensions": "longitude latitude olevel time", - "out_name": "graz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasin": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "", - "long_name": "Northward Ocean Heat Transport", - "comment": "Contains contributions from all physical processes affecting the northward heat transport, including resolved advection, parameterized advection, lateral diffusion, etc. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpadv": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_eddy_advection", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "", - "long_name": "northward ocean heat transport due to parameterized eddy advection", - "comment": "Contributions to heat transport from parameterized eddy-induced advective transport due to any subgrid advective process. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpadv", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpmadv": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_advection", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "", - "long_name": "northward ocean heat transport due to parameterized mesoscale advection", - "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpmadv", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpmdiff": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_eddy_diffusion", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "", - "long_name": "northward ocean heat transport due to parameterized mesoscale diffusion", - "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced diffusive transport (i.e., neutral diffusion). Diagnosed here as a function of latitude and basin.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpmdiff", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfbasinpsmadv": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_parameterized_submesoscale_eddy_advection", - "units": "W", - "cell_methods": "longitude: mean (basin) time: mean", - "cell_measures": "", - "long_name": "northward ocean heat transport due to parameterized submesoscale advection", - "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin. Use Celsius for temperature scale.", - "dimensions": "latitude basin time", - "out_name": "hfbasinpsmadv", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfcorr": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "heat_flux_correction", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux Correction", - "comment": "Flux correction is also called 'flux adjustment'. A positive flux correction is downward i.e. added to the ocean. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude time", - "out_name": "hfcorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_heat_flux_in_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Heat Flux at Sea Water Surface", - "comment": "This is the net flux of heat entering the liquid water column through its upper surface (excluding any 'flux adjustment') .", - "dimensions": "longitude latitude time", - "out_name": "hfds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfevapds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Temperature Flux due to Evaporation Expressed as Heat Flux Out of Sea Water", - "comment": "This is defined as 'where ice_free_sea over sea'", - "dimensions": "longitude latitude time", - "out_name": "hfevapds", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfgeou": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "upward_geothermal_heat_flux_at_sea_floor", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Upward Geothermal Heat Flux at Sea Floor", - "comment": "Upward geothermal heat flux per unit area on the sea floor", - "dimensions": "longitude latitude time", - "out_name": "hfgeou", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfibthermds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The specification of a physical process by the phrase due_to_process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. ' Iceberg thermodynamics' refers to the addition or subtraction of mass due to surface and basal fluxes, i.e., due to melting, sublimation and fusion.", - "dimensions": "longitude latitude olevel time", - "out_name": "hfibthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfibthermds2d": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The specification of a physical process by the phrase due_to_process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. ' Iceberg thermodynamics' refers to the addition or subtraction of mass due to surface and basal fluxes, i.e., due to melting, sublimation and fusion.", - "dimensions": "longitude latitude time", - "out_name": "hfibthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hflso": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_latent_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Latent Heat Flux", - "comment": "This is defined as with the cell methods string: where ice_free_sea over sea", - "dimensions": "longitude latitude time", - "out_name": "hflso", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfrainds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Temperature Flux due to Rainfall Expressed as Heat Flux into Sea Water", - "comment": "This is defined as 'where ice_free_sea over sea'; i.e., the total flux (considered here) entering the ice-free portion of the grid cell divided by the area of the ocean portion of the grid cell. All such heat fluxes are computed based on Celsius scale.", - "dimensions": "longitude latitude time", - "out_name": "hfrainds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfrunoffds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", - "comment": "Runoff is the liquid water which drains from land. If not specified, 'runoff' refers to the sum of surface runoff and subsurface drainage. The quantity with standard name temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water is the heat carried by the transfer of water into the liquid ocean by the process of runoff. This quantity additonally includes melt water from sea ice and icebergs. It is calculated relative to the heat that would be transported by runoff water entering the sea at zero degrees Celsius. It is calculated as the product QrunoffCpTrunoff, where Q runoff is the mass flux of liquid runoff entering the sea water (kg m-2 s-1), Cp is the specific heat capacity of water, and Trunoff is the temperature in degrees Celsius of the runoff water. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude olevel time", - "out_name": "hfrunoffds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfrunoffds2d": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", - "comment": "Runoff is the liquid water which drains from land. If not specified, 'runoff' refers to the sum of surface runoff and subsurface drainage. The quantity with standard name temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water is the heat carried by the transfer of water into the liquid ocean by the process of runoff. This quantity additonally includes melt water from sea ice and icebergs. It is calculated relative to the heat that would be transported by runoff water entering the sea at zero degrees Celsius. It is calculated as the product QrunoffCpTrunoff, where Q runoff is the mass flux of liquid runoff entering the sea water (kg m-2 s-1), Cp is the specific heat capacity of water, and Trunoff is the temperature in degrees Celsius of the runoff water. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude time", - "out_name": "hfrunoffds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsifrazil": { - "frequency": "mon", - "modeling_realm": "ocean seaIce", - "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The specification of a physical process by the phrase due_to_process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Frazil' consists of needle like crystals of ice, typically between three and four millimeters in diameter, which form as sea water begins to freeze. Salt is expelled during the freezing process and frazil ice consists of nearly pure fresh water.", - "dimensions": "longitude latitude olevel time", - "out_name": "hfsifrazil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsifrazil2d": { - "frequency": "mon", - "modeling_realm": "ocean seaIce", - "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The specification of a physical process by the phrase due_to_process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Frazil' consists of needle like crystals of ice, typically between three and four millimeters in diameter, which form as sea water begins to freeze. Salt is expelled during the freezing process and frazil ice consists of nearly pure fresh water.", - "dimensions": "longitude latitude time", - "out_name": "hfsifrazil", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsnthermds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The specification of a physical process by the phrase due_to_process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Snow thermodynamics' refers to the addition or subtraction of mass due to surface and basal fluxes, i.e., due to melting, sublimation and fusion.", - "dimensions": "longitude latitude olevel time", - "out_name": "hfsnthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsnthermds2d": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The specification of a physical process by the phrase due_to_process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Snow thermodynamics' refers to the addition or subtraction of mass due to surface and basal fluxes, i.e., due to melting, sublimation and fusion.", - "dimensions": "longitude latitude time", - "out_name": "hfsnthermds", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfsso": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_sensible_heat_flux", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Downward Sensible Heat Flux", - "comment": "This is defined as 'where ice_free_sea over sea'", - "dimensions": "longitude latitude time", - "out_name": "hfsso", - "type": "real", - "positive": "up", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfx": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_heat_x_transport", - "units": "W", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Ocean Heat X Transport", - "comment": "Contains all contributions to 'x-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", - "dimensions": "longitude latitude time", - "out_name": "hfx", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "hfy": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_heat_y_transport", - "units": "W", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Ocean Heat Y Transport", - "comment": "Contains all contributions to 'y-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", - "dimensions": "longitude latitude time", - "out_name": "hfy", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "htovgyre": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_gyre", - "units": "W", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "", - "long_name": "Northward Ocean Heat Transport due to Gyre", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "htovgyre", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "htovovrt": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_heat_transport_due_to_overturning", - "units": "W", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "", - "long_name": "Northward Ocean Heat Transport due to Overturning", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "htovovrt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "icfriver": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Flux of Inorganic Carbon Into Ocean Surface by Runoff", - "comment": "Inorganic Carbon supply to ocean through runoff (separate from gas exchange)", - "dimensions": "longitude latitude time depth0m", - "out_name": "icfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intdic": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "ocean_mass_content_of_dissolved_inorganic_carbon", - "units": "kg m-2", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Inorganic Carbon Content", - "comment": "Vertically integrated DIC", - "dimensions": "longitude latitude time", - "out_name": "intdic", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intdoc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "ocean_mass_content_of_dissolved_organic_carbon", - "units": "kg m-2", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Dissolved Organic Carbon Content", - "comment": "Vertically integrated DOC (explicit pools only)", - "dimensions": "longitude latitude time", - "out_name": "intdoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intparag": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Aragonite Production", - "comment": "Vertically integrated aragonite production", - "dimensions": "longitude latitude time", - "out_name": "intparag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbfe": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Production", - "comment": "Vertically integrated biogenic iron production", - "dimensions": "longitude latitude time", - "out_name": "intpbfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbn": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Production", - "comment": "Vertically integrated biogenic nitrogen production", - "dimensions": "longitude latitude time", - "out_name": "intpbn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbp": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Phosphorus Production", - "comment": "Vertically integrated biogenic phosphorus production", - "dimensions": "longitude latitude time", - "out_name": "intpbp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpbsi": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Silicon Production", - "comment": "Vertically integrated biogenic silica production", - "dimensions": "longitude latitude time", - "out_name": "intpbsi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpcalcite": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Calcite Production", - "comment": "Vertically integrated calcite production", - "dimensions": "longitude latitude time", - "out_name": "intpcalcite", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpn2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Fixation Rate in Ocean", - "comment": "Vertically integrated nitrogen fixation", - "dimensions": "longitude latitude time", - "out_name": "intpn2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpoc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "ocean_mass_content_of_particulate_organic_matter_expressed_as_carbon", - "units": "kg m-2", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Particulate Organic Carbon Content", - "comment": "Vertically integrated POC", - "dimensions": "longitude latitude time", - "out_name": "intpoc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpp": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_phytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Primary Organic Carbon Production by All Types of Phytoplankton", - "comment": "Vertically integrated total primary (organic carbon) production by phytoplankton. This should equal the sum of intpdiat+intpphymisc, but those individual components may be unavailable in some models.", - "dimensions": "longitude latitude time", - "out_name": "intpp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppcalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_calcareous_phytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton", - "comment": "'Production of carbon' means the production of biomass expressed as the mass of carbon which it contains. Net primary production is the excess of gross primary production (rate of synthesis of biomass from inorganic precursors) by autotrophs ('producers'), for example, photosynthesis in plants or phytoplankton, over the rate at which the autotrophs themselves respire some of this biomass. 'Productivity' means production per unit area. Phytoplankton are autotrophic prokaryotic or eukaryotic algae that live near the water surface where there is sufficient light to support photosynthesis. 'Calcareous phytoplankton' are phytoplankton that produce calcite. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A. Calcite is a mineral that is a polymorph of calcium carbonate.", - "dimensions": "longitude latitude time", - "out_name": "intppcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppdiat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diatoms", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Organic Carbon Production by Diatoms", - "comment": "Vertically integrated primary (organic carbon) production by the diatom phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "intppdiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppdiaz": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_diazotrophs", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Mole Productivity of Carbon by Diazotrophs", - "comment": "'Production of carbon' means the production of biomass expressed as the mass of carbon which it contains. Net primary production is the excess of gross primary production (rate of synthesis of biomass from inorganic precursors) by autotrophs ('producers'), for example, photosynthesis in plants or phytoplankton, over the rate at which the autotrophs themselves respire some of this biomass. 'Productivity' means production per unit area. In ocean modelling, diazotrophs are phytoplankton of the phylum cyanobacteria distinct from other phytoplankton groups in their ability to fix nitrogen gas in addition to nitrate and ammonium. Phytoplankton are autotrophic prokaryotic or eukaryotic algae that live near the water surface where there is sufficient light to support photosynthesis. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A.", - "dimensions": "longitude latitude time", - "out_name": "intppdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppmisc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_miscellaneous_phytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Organic Carbon Production by Other Phytoplankton", - "comment": "Vertically integrated total primary (organic carbon) production by other phytoplankton components alone", - "dimensions": "longitude latitude time", - "out_name": "intppmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intppnitrate": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_due_to_nitrate_utilization", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Primary Organic Carbon Production by Phytoplankton Based on Nitrate Uptake Alone", - "comment": "Vertically integrated primary (organic carbon) production by phytoplankton based on nitrate uptake alone", - "dimensions": "longitude latitude time", - "out_name": "intppnitrate", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "intpppico": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "net_primary_mole_productivity_of_biomass_expressed_as_carbon_by_picophytoplankton", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea depth: sum where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Primary Mole Productivity of Carbon by Picophytoplankton", - "comment": "'Production of carbon' means the production of biomass expressed as the mass of carbon which it contains. Net primary production is the excess of gross primary production (rate of synthesis of biomass from inorganic precursors) by autotrophs ('producers'), for example, photosynthesis in plants or phytoplankton, over the rate at which the autotrophs themselves respire some of this biomass. 'Productivity' means production per unit area. Picophytoplankton are phytoplankton of less than 2 micrometers in size. Phytoplankton are autotrophic prokaryotic or eukaryotic algae that live near the water surface where there is sufficient light to support photosynthesis. The phrase 'expressed_as' is used in the construction A_expressed_as_B, where B is a chemical constituent of A. It means that the quantity indicated by the standard name is calculated solely with respect to the B contained in A, neglecting all other chemical constituents of A.", - "dimensions": "longitude latitude time", - "out_name": "intpppico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfecalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "iron_growth_limitation_of_calcareous_phytoplankton", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Limitation of Calcareous Phytoplankton", - "comment": "'Calcareous phytoplankton' are phytoplankton that produce calcite. Calcite is a mineral that is a polymorph of calcium carbonate. The chemical formula of calcite is CaCO3. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Iron growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of iron) to the theoretical growth rate if there were no such limit on iron availability.", - "dimensions": "longitude latitude time", - "out_name": "limfecalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfediat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "iron_growth_limitation_of_diatoms", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Limitation of Diatoms", - "comment": "Diatoms are phytoplankton with an external skeleton made of silica. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Iron growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of iron) to the theoretical growth rate if there were no such limit on iron availability.", - "dimensions": "longitude latitude time", - "out_name": "limfediat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfediaz": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "iron_growth_limitation_of_diazotrophs", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Limitation of Diazotrophs", - "comment": "In ocean modelling, diazotrophs are phytoplankton of the phylum cyanobacteria distinct from other phytoplankton groups in their ability to fix nitrogen gas in addition to nitrate and ammonium. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Iron growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of iron) to the theoretical growth rate if there were no such limit on iron availability.", - "dimensions": "longitude latitude time", - "out_name": "limfediaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfemisc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "iron_growth_limitation_of_miscellaneous_phytoplankton", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Limitation of Other Phytoplankton", - "comment": "Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Miscellaneous phytoplankton' are all those phytoplankton that are not diatoms, diazotrophs, calcareous phytoplankton, picophytoplankton or other separately named components of the phytoplankton population. 'Iron growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of iron) to the theoretical growth rate if there were no such limit on iron availability.", - "dimensions": "longitude latitude time", - "out_name": "limfemisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limfepico": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "iron_growth_limitation_of_picophytoplankton", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Iron Limitation of Picophytoplankton", - "comment": "Picophytoplankton are phytoplankton of less than 2 micrometers in size. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Iron growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of iron) to the theoretical growth rate if there were no such limit on iron availability.", - "dimensions": "longitude latitude time", - "out_name": "limfepico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrcalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "growth_limitation_of_calcareous_phytoplankton_due_to_solar_irradiance", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance Limitation of Calcareous Phytoplankton", - "comment": "'Calcareous phytoplankton' are phytoplankton that produce calcite. Calcite is a mineral that is a polymorph of calcium carbonate. The chemical formula of calcite is CaCO3. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. The specification of a physical process by the phrase 'due_to_' process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Irradiance' means the power per unit area (called radiative flux in other standard names), the area being normal to the direction of flow of the radiant energy. Solar irradiance is essential to the photosynthesis reaction and its presence promotes the growth of phytoplankton populations.", - "dimensions": "longitude latitude time", - "out_name": "limirrcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrdiat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "growth_limitation_of_diatoms_due_to_solar_irradiance", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance Limitation of Diatoms", - "comment": "Diatoms are phytoplankton with an external skeleton made of silica. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. The specification of a physical process by the phrase 'due_to_' process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Irradiance' means the power per unit area (called radiative flux in other standard names), the area being normal to the direction of flow of the radiant energy. Solar irradiance is essential to the photosynthesis reaction and its presence promotes the growth of phytoplankton populations. 'Growth limitation due to solar irradiance' means the ratio of the growth rate of a species population in the environment (where the amount of sunlight reaching a location may be limited) to the theoretical growth rate if there were no such limit on solar irradiance.", - "dimensions": "longitude latitude time", - "out_name": "limirrdiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrdiaz": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "growth_limitation_of_diazotrophs_due_to_solar_irradiance", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance Limitation of Diazotrophs", - "comment": "In ocean modelling, diazotrophs are phytoplankton of the phylum cyanobacteria distinct from other phytoplankton groups in their ability to fix nitrogen gas in addition to nitrate and ammonium. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. The specification of a physical process by the phrase 'due_to_' process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Irradiance' means the power per unit area (called radiative flux in other standard names), the area being normal to the direction of flow of the radiant energy. Solar irradiance is essential to the photosynthesis reaction and its presence promotes the growth of phytoplankton populations.", - "dimensions": "longitude latitude time", - "out_name": "limirrdiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrmisc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "growth_limitation_of_miscellaneous_phytoplankton_due_to_solar_irradiance", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance Limitation of Other Phytoplankton", - "comment": "Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Miscellaneous phytoplankton' are all those phytoplankton that are not diatoms, diazotrophs, calcareous phytoplankton, picophytoplankton or other separately named components of the phytoplankton population. The specification of a physical process by the phrase 'due_to_' process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Irradiance' means the power per unit area (called radiative flux in other standard names), the area being normal to the direction of flow of the radiant energy. Solar irradiance is essential to the photosynthesis reaction and its presence promotes the growth of phytoplankton populations.", - "dimensions": "longitude latitude time", - "out_name": "limirrmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limirrpico": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "growth_limitation_of_picophytoplankton_due_to_solar_irradiance", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Irradiance Limitation of Picophytoplankton", - "comment": "Picophytoplankton are phytoplankton of less than 2 micrometers in size. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. The specification of a physical process by the phrase 'due_to_' process means that the quantity named is a single term in a sum of terms which together compose the general quantity named by omitting the phrase. 'Irradiance' means the power per unit area (called radiative flux in other standard names), the area being normal to the direction of flow of the radiant energy. Solar irradiance is essential to the photosynthesis reaction and its presence promotes the growth of phytoplankton populations. 'Growth limitation due to solar irradiance' means the ratio of the growth rate of a species population in the environment (where the amount of sunlight reaching a location may be limited) to the theoretical growth rate if there were no such limit on solar irradiance.", - "dimensions": "longitude latitude time", - "out_name": "limirrpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limncalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "nitrogen_growth_limitation_of_calcareous_phytoplankton", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Limitation of Calcareous Phytoplankton", - "comment": "'Calcareous phytoplankton' are phytoplankton that produce calcite. Calcite is a mineral that is a polymorph of calcium carbonate. The chemical formula of calcite is CaCO3. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Nitrogen growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of nitrogen) to the theoretical growth rate if there were no such limit on nitrogen availability.", - "dimensions": "longitude latitude time", - "out_name": "limncalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limndiat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "nitrogen_growth_limitation_of_diatoms", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Limitation of Diatoms", - "comment": "Diatoms are phytoplankton with an external skeleton made of silica. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Nitrogen growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of nitrogen) to the theoretical growth rate if there were no such limit on nitrogen availability.", - "dimensions": "longitude latitude time", - "out_name": "limndiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limndiaz": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "nitrogen_growth_limitation_of_diazotrophs", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Limitation of Diazotrophs", - "comment": "In ocean modelling, diazotrophs are phytoplankton of the phylum cyanobacteria distinct from other phytoplankton groups in their ability to fix nitrogen gas in addition to nitrate and ammonium. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Nitrogen growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of nitrogen) to the theoretical growth rate if there were no such limit on nitrogen availability.", - "dimensions": "longitude latitude time", - "out_name": "limndiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limnmisc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "nitrogen_growth_limitation_of_miscellaneous_phytoplankton", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Limitation of Other Phytoplankton", - "comment": "Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Miscellaneous phytoplankton' are all those phytoplankton that are not diatoms, diazotrophs, calcareous phytoplankton, picophytoplankton or other separately named components of the phytoplankton population. 'Nitrogen growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of nitrogen) to the theoretical growth rate if there were no such limit on nitrogen availability.", - "dimensions": "longitude latitude time", - "out_name": "limnmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "limnpico": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "nitrogen_growth_limitation_of_picophytoplankton", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Nitrogen Limitation of Picophytoplankton", - "comment": "Picophytoplankton are phytoplankton of less than 2 micrometers in size. Phytoplankton are algae that grow where there is sufficient light to support photosynthesis. 'Nitrogen growth limitation' means the ratio of the growth rate of a species population in the environment (where there is a finite availability of nitrogen) to the theoretical growth rate if there were no such limit on nitrogen availability.", - "dimensions": "longitude latitude time", - "out_name": "limnpico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "masscello": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_mass_per_unit_area", - "units": "kg m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Mass Per Unit Area", - "comment": "Tracer grid-cell mass per unit area used for computing tracer budgets. For Boussinesq models with static ocean grid cell thickness, masscello = rhozero*thickcello, where thickcello is static cell thickness and rhozero is constant Boussinesq reference density. More generally, masscello is time dependent and reported as part of Omon.", - "dimensions": "longitude latitude olevel time", - "out_name": "masscello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "masso": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_mass", - "units": "kg", - "cell_methods": "area: sum where sea time: mean", - "cell_measures": "", - "long_name": "Sea Water Mass", - "comment": "Total mass of liquid sea water. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", - "dimensions": "time", - "out_name": "masso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mfo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_transport_across_line", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "", - "long_name": "Sea Water Transport", - "comment": "Transport across_line means that which crosses a particular line on the Earth's surface; formally this means the integral along the line of the normal component of the transport.", - "dimensions": "oline time", - "out_name": "mfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotst": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "Sigma T is potential density referenced to ocean surface.", - "dimensions": "longitude latitude time", - "out_name": "mlotst", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotstmax": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m", - "cell_methods": "area: mean time: maximum", - "cell_measures": "area: areacello", - "long_name": "Maximum Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "Sigma T is potential density referenced to ocean surface.", - "dimensions": "longitude latitude time", - "out_name": "mlotstmax", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotstmin": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m", - "cell_methods": "area: mean time: minimum", - "cell_measures": "area: areacello", - "long_name": "Minimum Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "Sigma T is potential density referenced to ocean surface.", - "dimensions": "longitude latitude time", - "out_name": "mlotstmin", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "mlotstsq": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", - "units": "m2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Ocean Mixed Layer Thickness Defined by Sigma T", - "comment": "The phrase 'square_of_X' means X*X. The ocean mixed layer is the upper part of the ocean, regarded as being well-mixed. The base of the mixed layer defined by 'temperature', 'sigma', 'sigma_theta', 'sigma_t' or vertical diffusivity is the level at which the quantity indicated differs from its surface value by a certain amount. A coordinate variable or scalar coordinate variable with standard name sea_water_sigma_t_difference can be used to specify the sigma_t criterion that determines the layer thickness. Sigma-t of sea water is the density of water at atmospheric pressure (i.e. the surface) having the same temperature and salinity, minus 1000 kg m-3. 'Thickness' means the vertical extent of a layer.", - "dimensions": "longitude latitude time", - "out_name": "mlotstsq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftbarot": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_barotropic_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Ocean Barotropic Mass Streamfunction", - "comment": "Streamfunction or its approximation for free surface models. See OMDP document for details.", - "dimensions": "longitude latitude time", - "out_name": "msftbarot", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmrho": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "", - "long_name": "Ocean Meridional Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude rho basin time", - "out_name": "msftmrho", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmrhompa": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "", - "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "latitude rho basin time", - "out_name": "msftmrhompa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmz": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "", - "long_name": "Ocean Meridional Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude olevel basin time", - "out_name": "msftmz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmzmpa": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "", - "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "latitude olevel basin time", - "out_name": "msftmzmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftmzsmpa": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "", - "long_name": "ocean meridional overturning mass streamfunction due to parameterized submesoscale advection", - "comment": "Report only if there is a submesoscale eddy parameterization.", - "dimensions": "latitude olevel basin time", - "out_name": "msftmzsmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyrho": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "", - "long_name": "Ocean Y Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "gridlatitude rho basin time", - "out_name": "msftyrho", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyrhompa": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "", - "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "gridlatitude rho basin time", - "out_name": "msftyrhompa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyz": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "", - "long_name": "Ocean Y Overturning Mass Streamfunction", - "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", - "dimensions": "gridlatitude olevel basin time", - "out_name": "msftyz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyzmpa": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_eddy_advection", - "units": "kg s-1", - "cell_methods": "time: mean grid_longitude: mean", - "cell_measures": "", - "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", - "comment": "CMIP5 called this 'due to Bolus Advection'. Name change respects the more general physics of the mesoscale parameterizations.", - "dimensions": "gridlatitude olevel basin time", - "out_name": "msftyzmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "msftyzsmpa": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_eddy_advection", - "units": "kg s-1", - "cell_methods": "longitude: mean (comment: basin mean[ along zig-zag grid path]) time: mean", - "cell_measures": "", - "long_name": "ocean Y overturning mass streamfunction due to parameterized submesoscale advection", - "comment": "Report only if there is a submesoscale eddy parameterization.", - "dimensions": "latitude olevel basin time", - "out_name": "msftyzsmpa", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nh4": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_ammonium_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Ammonium Concentration", - "comment": "Mole concentration means moles (amount of substance) per unit volume and is used in the construction mole_concentration_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude olevel time", - "out_name": "nh4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "nh4os": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_ammonium_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Ammonium Concentration", - "comment": "Mole concentration means moles (amount of substance) per unit volume and is used in the construction mole_concentration_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude time", - "out_name": "nh4os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "no3": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_nitrate_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Nitrate Concentration", - "comment": "Mole concentration means moles (amount of substance) per unit volume and is used in the construction mole_concentration_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude olevel time", - "out_name": "no3", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "no3os": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_nitrate_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Nitrate Concentration", - "comment": "Mole concentration means moles (amount of substance) per unit volume and is used in the construction mole_concentration_of_X_in_Y, where X is a material constituent of Y.", - "dimensions": "longitude latitude time", - "out_name": "no3os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Oxygen Concentration", - "comment": "'Mole concentration' means number of moles per unit volume, also called'molarity', and is used in the construction mole_concentration_of_X_in_Y, whereX is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'.", - "dimensions": "longitude latitude olevel time", - "out_name": "o2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2min": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Oxygen Minimum Concentration", - "comment": "'Mole concentration' means number of moles per unit volume, also called 'molarity', and is used in the construction mole_concentration_of_X_in_Y, where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The concentration of any chemical species, whether particulate or dissolved, may vary with depth in the ocean. A depth profile may go through one or more local minima in concentration. The mole_concentration_of_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile is the mole concentration of oxygen at the local minimum in the concentration profile that occurs closest to the sea surface.", - "dimensions": "longitude latitude time", - "out_name": "o2min", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2os": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Oxygen Concentration", - "comment": "'Mole concentration' means number of moles per unit volume, also called'molarity', and is used in the construction mole_concentration_of_X_in_Y, whereX is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'.", - "dimensions": "longitude latitude time", - "out_name": "o2os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2sat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Dissolved Oxygen Concentration at Saturation", - "comment": "'Mole concentration at saturation' means the mole concentration in a saturated solution. Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'.", - "dimensions": "longitude latitude olevel time", - "out_name": "o2sat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "o2satos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_saturation", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Dissolved Oxygen Concentration at Saturation", - "comment": "'Mole concentration at saturation' means the mole concentration in a saturated solution. Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'.", - "dimensions": "longitude latitude time", - "out_name": "o2satos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "obvfsq": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "square_of_brunt_vaisala_frequency_in_sea_water", - "units": "s-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Square of Brunt Vaisala Frequency in Sea Water", - "comment": "The phrase 'square_of_X' means X*X. Frequency is the number of oscillations of a wave per unit time. Brunt-Vaisala frequency is also sometimes called 'buoyancy frequency' and is a measure of the vertical stratification of the medium.", - "dimensions": "longitude latitude olevel time", - "out_name": "obvfsq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ocfriver": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", - "units": "mol m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Flux of Organic Carbon Into Ocean Surface by Runoff", - "comment": "Organic Carbon supply to ocean through runoff (separate from gas exchange)", - "dimensions": "longitude latitude time depth0m", - "out_name": "ocfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pbo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_pressure_at_sea_floor", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Water Pressure at Sea floor", - "comment": "'Sea water pressure' is the pressure that exists in the medium of sea water. It includes the pressure due to overlying sea water, sea ice, air and any other medium that may be present.", - "dimensions": "longitude latitude time", - "out_name": "pbo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ph": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_ph_reported_on_total_scale", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "pH", - "comment": "negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude olevel time", - "out_name": "ph", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phabio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_ph_abiotic_analogue_reported_on_total_scale", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Abiotic pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1 (abiotic component)..", - "dimensions": "longitude latitude olevel time", - "out_name": "phabio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phabioos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_ph_abiotic_analogue_reported_on_total_scale", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Abiotic pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time", - "out_name": "phabioos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phnat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_ph_natural_analogue_reported_on_total_scale", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude olevel time", - "out_name": "phnat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phnatos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_ph_natural_analogue_reported_on_total_scale", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time", - "out_name": "phnatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_ph_reported_on_total_scale", - "units": "1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface pH", - "comment": "negative log10 of hydrogen ion concentration with the concentration expressed as mol H kg-1.", - "dimensions": "longitude latitude time", - "out_name": "phos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Phytoplankton Carbon Concentration", - "comment": "sum of phytoplankton carbon component concentrations. In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., 'Diatom Carbon Concentration' and 'Non-Diatom Phytoplankton Carbon Concentration'", - "dimensions": "longitude latitude olevel time", - "out_name": "phyc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Calcareous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phycalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycalcos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Calcareous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "phycalcos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phycos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Phytoplankton Carbon Concentration", - "comment": "sum of phytoplankton organic carbon component concentrations at the sea surface", - "dimensions": "longitude latitude time", - "out_name": "phycos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Diatoms expressed as Carbon in sea water", - "comment": "carbon from the diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phydiat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiatos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Diatoms expressed as Carbon in sea water", - "comment": "carbon from the diatom phytoplankton component concentration alone", - "dimensions": "longitude latitude time", - "out_name": "phydiatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiaz": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Diazotrophs expressed as Carbon in sea water", - "comment": "carbon concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phydiaz", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phydiazos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Diazotrophs expressed as Carbon in sea water", - "comment": "carbon concentration from the diazotrophic phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "phydiazos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyfe": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Iron in sea water", - "comment": "sum of phytoplankton iron component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "phyfe", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyfeos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Total Phytoplankton expressed as Iron in Sea Water", - "comment": "sum of phytoplankton iron component concentrations", - "dimensions": "longitude latitude time", - "out_name": "phyfeos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phymisc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from additional phytoplankton component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phymisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phymiscos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from additional phytoplankton component alone", - "dimensions": "longitude latitude time", - "out_name": "phymiscos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyn": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Nitrogen in sea water", - "comment": "sum of phytoplankton nitrogen component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "phyn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phynos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Phytoplankton Nitrogen in sea water", - "comment": "sum of phytoplankton nitrogen component concentrations", - "dimensions": "longitude latitude time", - "out_name": "phynos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phyp": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Phosphorus in sea water", - "comment": "sum of phytoplankton phosphorus components", - "dimensions": "longitude latitude olevel time", - "out_name": "phyp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phypico": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Picophytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "phypico", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phypicoos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Picophytoplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "phypicoos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "phypos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Total Phytoplankton expressed as Phosphorus in sea water", - "comment": "sum of phytoplankton phosphorus components", - "dimensions": "longitude latitude time", - "out_name": "phypos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "physi": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Total Phytoplankton expressed as Silicon in sea water", - "comment": "sum of phytoplankton silica component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "physi", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "physios": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Total Phytoplankton expressed as Silicon in sea water", - "comment": "sum of phytoplankton silica component concentrations", - "dimensions": "longitude latitude time", - "out_name": "physios", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "po4": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Dissolved Inorganic Phosphorus Concentration", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. 'Dissolved inorganic phosphorus' means the sum of all inorganic phosphorus in solution (including phosphate, hydrogen phosphate, dihydrogen phosphate, and phosphoric acid).", - "dimensions": "longitude latitude olevel time", - "out_name": "po4", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "po4os": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "mole_concentration_of_dissolved_inorganic_phosphorous_in_sea_water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. 'Dissolved inorganic phosphorus' means the sum of all inorganic phosphorus in solution (including phosphate, hydrogen phosphate, dihydrogen phosphate, and phosphoric acid).", - "dimensions": "longitude latitude time", - "out_name": "po4os", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pon": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Nitrogen in sea water", - "comment": "sum of particulate organic nitrogen component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "pon", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ponos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Nitrogen in sea water", - "comment": "sum of particulate organic nitrogen component concentrations", - "dimensions": "longitude latitude time", - "out_name": "ponos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pop": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Particulate Organic Matter expressed as Phosphorus in sea water", - "comment": "sum of particulate organic phosphorus component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "pop", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "popos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Particulate Organic Matter expressed as Phosphorus in sea water", - "comment": "sum of particulate organic phosphorus component concentrations", - "dimensions": "longitude latitude time", - "out_name": "popos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pp": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Primary Carbon Production by Total Phytoplankton", - "comment": "total primary (organic carbon) production by phytoplankton", - "dimensions": "longitude latitude olevel time", - "out_name": "pp", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "ppos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", - "units": "mol m-3 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Primary Carbon Production by Total Phytoplankton", - "comment": "total primary (organic carbon) production by phytoplankton", - "dimensions": "longitude latitude time depth0m", - "out_name": "ppos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prra": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "rainfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Rainfall Flux where Ice Free Ocean over Sea", - "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", - "dimensions": "longitude latitude time", - "out_name": "prra", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "prsn": { - "frequency": "mon", - "modeling_realm": "atmos", - "standard_name": "snowfall_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Snowfall Flux where Ice Free Ocean over Sea", - "comment": "at surface; includes precipitation of all forms of water in the solid phase", - "dimensions": "longitude latitude time", - "out_name": "prsn", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "pso": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_pressure_at_sea_water_surface", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Water Pressure at Sea Water Surface", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. 'Sea water pressure' is the pressure that exists in the medium of sea water. It includes the pressure due to overlying sea water, sea ice, air and any other medium that may be present.", - "dimensions": "longitude latitude time", - "out_name": "pso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rlntds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_net_downward_longwave_flux", - "units": "W m-2", - "cell_methods": "area: mean where ice_free_sea over sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Net Downward Longwave Radiation", - "comment": "This is defined as 'where ice_free_sea over sea'", - "dimensions": "longitude latitude time", - "out_name": "rlntds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsdo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "downwelling_shortwave_flux_in_sea_water", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Downwelling Shortwave Radiation in Sea Water", - "comment": "Downwelling radiation is radiation from above. It does not mean 'net downward'. When thought of as being incident on a surface, a radiative flux is sometimes called 'irradiance'. In addition, it is identical with the quantity measured by a cosine-collector light-meter and sometimes called 'vector irradiance'. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. 'shortwave' means shortwave radiation.", - "dimensions": "longitude latitude olevel time", - "out_name": "rsdo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "rsntds": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "net_downward_shortwave_flux_at_sea_water_surface", - "units": "W m-2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Net Downward Shortwave Radiation at Sea Water Surface", - "comment": "This is the flux into the surface of liquid sea water only. This excludes shortwave flux absorbed by sea ice, but includes any light that passes through the ice and is absorbed by the ocean.", - "dimensions": "longitude latitude time", - "out_name": "rsntds", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sf6": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "mole_concentration_of_sulfur_hexafluoride_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of SF6 in sea water", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. The chemical formula of sulfur hexafluoride is SF6.", - "dimensions": "longitude latitude olevel time", - "out_name": "sf6", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfdsi": { - "frequency": "mon", - "modeling_realm": "ocean seaIce", - "standard_name": "downward_sea_ice_basal_salt_flux", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Downward Sea Ice Basal Salt Flux", - "comment": "This field is physical, and it arises since sea ice has a nonzero salt content, so it exchanges salt with the liquid ocean upon melting and freezing.", - "dimensions": "longitude latitude time", - "out_name": "sfdsi", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sfriver": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "salt_flux_into_sea_water_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Salt Flux into Sea Water from Rivers", - "comment": "This field is physical, and it arises when rivers carry a nonzero salt content. Often this is zero, with rivers assumed to be fresh.", - "dimensions": "longitude latitude time", - "out_name": "sfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "si": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Dissolved Inorganic Silicon Concentration", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. 'Dissolved inorganic silicon' means the sum of all inorganic silicon in solution (including silicic acid and its first dissociated anion SiO(OH)3-).", - "dimensions": "longitude latitude olevel time", - "out_name": "si", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sios": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_dissolved_inorganic_silicon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Total Dissolved Inorganic Silicon Concentration", - "comment": "Mole concentration means number of moles per unit volume, also called 'molarity', and is used in the construction 'mole_concentration_of_X_in_Y', where X is a material constituent of Y. A chemical or biological species denoted by X may be described by a single term such as 'nitrogen' or a phrase such as 'nox_expressed_as_nitrogen'. 'Dissolved inorganic silicon' means the sum of all inorganic silicon in solution (including silicic acid and its first dissociated anion SiO(OH)3-).", - "dimensions": "longitude latitude time", - "out_name": "sios", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sltovgyre": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_salt_transport_due_to_gyre", - "units": "kg s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "", - "long_name": "Northward Ocean Salt Transport due to Gyre", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "sltovgyre", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sltovovrt": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "northward_ocean_salt_transport_due_to_overturning", - "units": "kg s-1", - "cell_methods": "longitude: mean time: mean", - "cell_measures": "", - "long_name": "Northward Ocean Salt Transport due to Overturning", - "comment": "From all advective mass transport processes, resolved and parameterized.", - "dimensions": "latitude basin time", - "out_name": "sltovovrt", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "so": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Salinity", - "comment": "Sea water salinity is the salt content of sea water, often on the Practical Salinity Scale of 1978. However, the unqualified term 'salinity' is generic and does not necessarily imply any particular method of calculation. The units of salinity are dimensionless and the units attribute should normally be given as 1e-3 or 0.001 i.e. parts per thousand. There are standard names for the more precisely defined salinity quantities: sea_water_knudsen_salinity, S_K (used for salinity observations between 1901 and 1966), sea_water_cox_salinity, S_C (used for salinity observations between 1967 and 1977), sea_water_practical_salinity, S_P (used for salinity observations from 1978 to the present day), sea_water_absolute_salinity, S_A, sea_water_preformed_salinity, S_*, and sea_water_reference_salinity. Practical Salinity is reported on the Practical Salinity Scale of 1978 (PSS-78), and is usually based on the electrical conductivity of sea water in observations since the 1960s.", - "dimensions": "longitude latitude olevel time", - "out_name": "so", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sob": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity_at_sea_floor", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "sea water salinity at sea floor", - "comment": "Model prognostic salinity at bottom-most model grid cell", - "dimensions": "longitude latitude time", - "out_name": "sob", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "soga": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Mean Sea Water Salinity", - "comment": "Sea water salinity is the salt content of sea water, often on the Practical Salinity Scale of 1978. However, the unqualified term 'salinity' is generic and does not necessarily imply any particular method of calculation. The units of salinity are dimensionless and the units attribute should normally be given as 1e-3 or 0.001 i.e. parts per thousand. There are standard names for the more precisely defined salinity quantities: sea_water_knudsen_salinity, S_K (used for salinity observations between 1901 and 1966), sea_water_cox_salinity, S_C (used for salinity observations between 1967 and 1977), sea_water_practical_salinity, S_P (used for salinity observations from 1978 to the present day), sea_water_absolute_salinity, S_A, sea_water_preformed_salinity, S_*, and sea_water_reference_salinity. Practical Salinity is reported on the Practical Salinity Scale of 1978 (PSS-78), and is usually based on the electrical conductivity of sea water in observations since the 1960s.", - "dimensions": "time", - "out_name": "soga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sos": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_surface_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Salinity", - "comment": "Sea surface salinity is the salt content of sea water close to the sea surface, often on the Practical Salinity Scale of 1978. However, the unqualified term 'salinity' is generic and does not necessarily imply any particular method of calculation. The units of salinity are dimensionless and the units attribute should normally be given as 1e-3 or 0.001 i.e. parts per thousand. Sea surface salinity is often abbreviated as 'SSS'. For the salinity of sea water at a particular depth or layer, a data variable of 'sea_water_salinity' or one of the more precisely defined salinities should be used with a vertical coordinate axis.", - "dimensions": "longitude latitude time", - "out_name": "sos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sosga": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_surface_salinity", - "units": "0.001", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Surface Salinity", - "comment": "Sea surface salinity is the salt content of sea water close to the sea surface, often on the Practical Salinity Scale of 1978. However, the unqualified term 'salinity' is generic and does not necessarily imply any particular method of calculation. The units of salinity are dimensionless and the units attribute should normally be given as 1e-3 or 0.001 i.e. parts per thousand. Sea surface salinity is often abbreviated as 'SSS'. For the salinity of sea water at a particular depth or layer, a data variable of 'sea_water_salinity' or one of the more precisely defined salinities should be used with a vertical coordinate axis.", - "dimensions": "time", - "out_name": "sosga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "sossq": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_salinity", - "units": "1e-06", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Salinity", - "comment": "The phrase 'square_of_X' means X*X. Sea surface salinity is the salt concentration of sea water close to the sea surface, often on the Practical Salinity Scale of 1978. However, the unqualified term 'salinity' is generic and does not necessarily imply any particular method of calculation. The units of salinity are dimensionless and the units attribute should normally be given as 1e-3 or 0.001 i.e. parts per thousand. Sea surface salinity is often abbreviated as 'SSS'. For the salinity of sea water at a particular depth or layer, a data variable of 'sea_water_salinity' or one of the more precisely defined salinities should be used with a vertical coordinate axis.", - "dimensions": "longitude latitude time", - "out_name": "sossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "spco2": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_partial_pressure_of_carbon_dioxide_in_sea_water", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Aqueous Partial Pressure of CO2", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. The partial pressure of a dissolved gas in sea water is the partial pressure in air with which it would be in equilibrium. The partial pressure of a gaseous constituent of air is the pressure which it alone would exert with unchanged temperature and number of moles per unit volume. The chemical formula for carbon dioxide is CO2.", - "dimensions": "longitude latitude time depth0m", - "out_name": "spco2", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "spco2abio": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_carbon_dioxide_abiotic_analogue_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Abiotic Surface Aqueous Partial Pressure of CO2", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. The chemical formula for carbon dioxide is CO2. In ocean biogeochemistry models, an 'abiotic analogue' is used to simulate the effect on a modelled variable when biological effects on ocean carbon concentration and alkalinity are ignored. The partial pressure of a gaseous constituent of air is the pressure which it alone would exert with unchanged temperature and number of moles per unit volume. The partial pressure of a dissolved gas in sea water is the partial pressure in air with which it would be in equilibrium. The partial pressure difference between sea water and air is positive when the partial pressure of the dissolved gas in sea water is greater than the partial pressure in air.", - "dimensions": "longitude latitude time depth0m", - "out_name": "spco2abio", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "spco2nat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "surface_carbon_dioxide_natural_analogue_partial_pressure_difference_between_sea_water_and_air", - "units": "Pa", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Natural Surface Aqueous Partial Pressure of CO2", - "comment": "The surface called 'surface' means the lower boundary of the atmosphere. The chemical formula for carbon dioxide is CO2. In ocean biogeochemistry models, a 'natural analogue' is used to simulate the effect on a modelled variable of imposing preindustrial atmospheric carbon dioxide concentrations, even when the model as a whole may be subjected to varying forcings. The partial pressure of a gaseous constituent of air is the pressure which it alone would exert with unchanged temperature and number of moles per unit volume. The partial pressure of a dissolved gas in sea water is the partial pressure in air with which it would be in equilibrium. The partial pressure difference between sea water and air is positive when the partial pressure of the dissolved gas in sea water is greater than the partial pressure in air.", - "dimensions": "longitude latitude time depth0m", - "out_name": "spco2nat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talk": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", - "dimensions": "longitude latitude olevel time", - "out_name": "talk", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talknat": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_alkalinity_natural_analogue_expressed_as_mole_equivalent", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Natural Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude olevel time", - "out_name": "talknat", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talknatos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_alkalinity_natural_analogue_expressed_as_mole_equivalent", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Natural Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", - "dimensions": "longitude latitude time", - "out_name": "talknatos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "talkos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Total Alkalinity", - "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components)", - "dimensions": "longitude latitude time", - "out_name": "talkos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauucorr": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_x_stress_correction", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward X Stress Correction", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauucorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauuo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_x_stress", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward X Stress", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauuo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauvcorr": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_y_stress_correction", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward Y Stress Correction", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauvcorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tauvo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "surface_downward_y_stress", - "units": "N m-2", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Surface Downward Y Stress", - "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", - "dimensions": "longitude latitude time", - "out_name": "tauvo", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetao": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Sea Water Potential Temperature", - "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field.", - "dimensions": "longitude latitude olevel time", - "out_name": "thetao", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thetaoga": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Water Potential Temperature", - "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field", - "dimensions": "time", - "out_name": "thetaoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "thkcello": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "cell_thickness", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Model Cell Thickness", - "comment": "'Thickness' means the vertical extent of a layer. 'Cell' refers to a model grid-cell.", - "dimensions": "longitude latitude olevel time", - "out_name": "thkcello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tob": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_potential_temperature_at_sea_floor", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Water Potential Temperature at Sea Floor", - "comment": "Potential temperature at the ocean bottom-most grid cell.", - "dimensions": "longitude latitude time", - "out_name": "tob", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tos": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Temperature", - "comment": "Temperature of upper boundary of the liquid ocean, including temperatures below sea-ice and floating ice shelves.", - "dimensions": "longitude latitude time", - "out_name": "tos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tosga": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_surface_temperature", - "units": "degC", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Sea Surface Temperature", - "comment": "Temperature of upper boundary of the liquid ocean, including temperatures below sea-ice and floating ice shelves.", - "dimensions": "time", - "out_name": "tosga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "tossq": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_temperature", - "units": "degC2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Temperature", - "comment": "Square of temperature of liquid ocean.", - "dimensions": "longitude latitude time", - "out_name": "tossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "umo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_mass_x_transport", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Ocean Mass X Transport", - "comment": "X-ward mass transport from resolved and parameterized advective transport.", - "dimensions": "longitude latitude olevel time", - "out_name": "umo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "uo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_x_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water X Velocity", - "comment": "Prognostic x-ward velocity component resolved by the model.", - "dimensions": "longitude latitude olevel time", - "out_name": "uo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vmo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_mass_y_transport", - "units": "kg s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Ocean Mass Y Transport", - "comment": "Y-ward mass transport from resolved and parameterized advective transport.", - "dimensions": "longitude latitude olevel time", - "out_name": "vmo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_y_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water Y Velocity", - "comment": "Prognostic x-ward velocity component resolved by the model.", - "dimensions": "longitude latitude olevel time", - "out_name": "vo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "volcello": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "ocean_volume", - "units": "m3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Ocean Grid-Cell Volume", - "comment": "grid-cell volume ca. 2000.", - "dimensions": "longitude latitude olevel time", - "out_name": "volcello", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "volo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_water_volume", - "units": "m3", - "cell_methods": "area: sum where sea time: mean", - "cell_measures": "", - "long_name": "Sea Water Volume", - "comment": "Total volume of liquid sea water.", - "dimensions": "time", - "out_name": "volo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsf": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water", - "comment": "It is set to zero in models which receive a real water flux.", - "dimensions": "longitude latitude time", - "out_name": "vsf", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfcorr": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_correction", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux Correction", - "comment": "It is set to zero in models which receive a real water flux.", - "dimensions": "longitude latitude time", - "out_name": "vsfcorr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfevap": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water_due_to_evaporation", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water due to Evaporation", - "comment": "zero for models using real water fluxes.", - "dimensions": "longitude latitude time", - "out_name": "vsfevap", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfpr": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water_due_to_rainfall", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water due to Rainfall", - "comment": "zero for models using real water fluxes.", - "dimensions": "longitude latitude time", - "out_name": "vsfpr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfriver": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "virtual_salt_flux_into_sea_water_from_rivers", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water From Rivers", - "comment": "zero for models using real water fluxes.", - "dimensions": "longitude latitude time", - "out_name": "vsfriver", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "vsfsit": { - "frequency": "mon", - "modeling_realm": "ocean seaIce", - "standard_name": "virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Virtual Salt Flux into Sea Water due to Sea Ice Thermodynamics", - "comment": "This variable measures the virtual salt flux into sea water due to the melting of sea ice. It is set to zero in models which receive a real water flux.", - "dimensions": "longitude latitude time", - "out_name": "vsfsit", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wfcorr": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "water_flux_correction", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux Correction", - "comment": "Positive flux implies correction adds water to ocean.", - "dimensions": "longitude latitude time", - "out_name": "wfcorr", - "type": "real", - "positive": "down", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wfo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water", - "comment": "computed as the water flux into the ocean divided by the area of the ocean portion of the grid cell. This is the sum of the next two variables in this table.", - "dimensions": "longitude latitude time", - "out_name": "wfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wfonocorr": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "water_flux_into_sea_water_without_flux_correction", - "units": "kg m-2 s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Water Flux into Sea Water Without Flux Correction", - "comment": "computed as the water flux (without flux correction) into the ocean divided by the area of the ocean portion of the grid cell.", - "dimensions": "longitude latitude time", - "out_name": "wfonocorr", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wmo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "upward_ocean_mass_transport", - "units": "kg s-1", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Upward Ocean Mass Transport", - "comment": "Upward mass transport from resolved and parameterized advective transport.", - "dimensions": "longitude latitude olevel time", - "out_name": "wmo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "wo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "upward_sea_water_velocity", - "units": "m s-1", - "cell_methods": "time: mean", - "cell_measures": "--OPT", - "long_name": "Sea Water Z Velocity", - "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward).", - "dimensions": "longitude latitude olevel time", - "out_name": "wo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zfullo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "depth_below_geoid", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Depth Below Geoid of Ocean Layer", - "comment": "Depth below geoid", - "dimensions": "longitude latitude olevel time", - "out_name": "zfullo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zhalfo": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "depth_below_geoid", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Depth Below Geoid of Interfaces Between Ocean Layers", - "comment": "Depth below geoid", - "dimensions": "longitude latitude olevel time", - "out_name": "zhalfo", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmeso": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zmeso", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmesoos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Mesozooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from mesozooplankton (20-200 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "zmesoos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmicro": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions": "longitude latitude olevel time", - "out_name": "zmicro", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmicroos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Microzooplankton expressed as Carbon in sea water", - "comment": "carbon concentration from the microzooplankton (<20 um) component alone", - "dimensions": "longitude latitude time", - "out_name": "zmicroos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmisc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Mole Concentration of Other Zooplankton expressed as Carbon in sea water", - "comment": "carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions": "longitude latitude olevel time", - "out_name": "zmisc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zmiscos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Mole Concentration of Other Zooplankton expressed as Carbon in sea water", - "comment": "carbon from additional zooplankton component concentrations alone (e.g. Micro, meso). Since the models all have different numbers of components, this variable has been included to provide a check for intercomparison between models since some phytoplankton groups are supersets.", - "dimensions": "longitude latitude time", - "out_name": "zmiscos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zo2min": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Depth of Oxygen Minimum Concentration", - "comment": "Depth of vertical minimum concentration of dissolved oxygen gas (if two, then the shallower)", - "dimensions": "longitude latitude time", - "out_name": "zo2min", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zooc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello volume: volcello", - "long_name": "Zooplankton Carbon Concentration", - "comment": "sum of zooplankton carbon component concentrations", - "dimensions": "longitude latitude olevel time", - "out_name": "zooc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zoocos": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", - "units": "mol m-3", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Surface Zooplankton Carbon Concentration", - "comment": "sum of zooplankton carbon component concentrations", - "dimensions": "longitude latitude time", - "out_name": "zoocos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zos": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "sea_surface_height_above_geoid", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Sea Surface Height Above Geoid", - "comment": "This is the dynamic sea level, so should have zero global area mean. It should not include inverse barometer depressions from sea ice.", - "dimensions": "longitude latitude time", - "out_name": "zos", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zossq": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "square_of_sea_surface_height_above_geoid", - "units": "m2", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Square of Sea Surface Height Above Geoid", - "comment": "Surface ocean geoid defines z=0.", - "dimensions": "longitude latitude time", - "out_name": "zossq", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zostoga": { - "frequency": "mon", - "modeling_realm": "ocean", - "standard_name": "global_average_thermosteric_sea_level_change", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "", - "long_name": "Global Average Thermosteric Sea Level Change", - "comment": "There is no CMIP6 request for zosga nor zossga.", - "dimensions": "time", - "out_name": "zostoga", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zsatarag": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "minimum_depth_of_aragonite_undersaturation_in_sea_water", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Aragonite Saturation Depth", - "comment": "Depth of aragonite saturation horizon (0 if undersaturated at all depths, 'missing' if supersaturated at all depths; if multiple horizons exist, the shallowest should be taken).", - "dimensions": "longitude latitude time", - "out_name": "zsatarag", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - }, - "zsatcalc": { - "frequency": "mon", - "modeling_realm": "ocnBgchem", - "standard_name": "minimum_depth_of_calcite_undersaturation_in_sea_water", - "units": "m", - "cell_methods": "area: mean where sea time: mean", - "cell_measures": "area: areacello", - "long_name": "Calcite Saturation Depth", - "comment": "Depth of calcite saturation horizon (0 if undersaturated at all depths, and missing saturated through whole depth; if two or more horizons exist, then the shallowest is reported)", - "dimensions": "longitude latitude time", - "out_name": "zsatcalc", - "type": "real", - "positive": "", - "valid_min": "", - "valid_max": "", - "ok_min_mean_abs": "", - "ok_max_mean_abs": "" - } - } -} diff --git a/mydoc/examples/CMIP6_coordinate.json b/mydoc/examples/CMIP6_coordinate.json deleted file mode 100644 index 021e84b..0000000 --- a/mydoc/examples/CMIP6_coordinate.json +++ /dev/null @@ -1,3387 +0,0 @@ -{ - "axis_entry": { - "alt16": { - "standard_name": "altitude", - "units": "m", - "axis": "Z", - "long_name": "altitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "alt16", - "positive": "up", - "requested": [ - "0", - "250", - "750", - "1250", - "1750", - "2250", - "2750", - "3500", - "4500", - "6000", - "8000", - "10000", - "12000", - "14500", - "16000", - "18000" - ], - "requested_bounds": [ - "-99000.0", - "0.0", - "0.0", - "500.0", - "500.0", - "1000.0", - "1000.0", - "1500.0", - "1500.0", - "2000.0", - "2000.0", - "2500.0", - "2500.0", - "3000.0", - "3000.0", - "4000.0", - "4000.0", - "5000.0", - "5000.0", - "7000.0", - "7000.0", - "9000.0", - "9000.0", - "11000.0", - "11000.0", - "13000.0", - "13000.0", - "15000.0", - "15000.0", - "17000.0", - "17000.0", - "99000.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "alt40": { - "standard_name": "altitude", - "units": "m", - "axis": "Z", - "long_name": "altitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "alt40", - "positive": "up", - "requested": [ - "240.", - "720.", - "1200.", - "1680.", - "2160.", - "2640.", - "3120.", - "3600.", - "4080.", - "4560.", - "5040.", - "5520.", - "6000.", - "6480.", - "6960.", - "7440.", - "7920.", - "8400.", - "8880.", - "9360.", - "9840.", - "10320.", - "10800.", - "11280.", - "11760.", - "12240.", - "12720.", - "13200.", - "13680.", - "14160.", - "14640.", - "15120.", - "15600.", - "16080.", - "16560.", - "17040.", - "17520.", - "18000.", - "18480.", - "18960." - ], - "requested_bounds": [ - "0.0", - "480.0", - "480.0", - "960.0", - "960.0", - "1440.0", - "1440.0", - "1920.0", - "1920.0", - "2400.0", - "2400.0", - "2880.0", - "2880.0", - "3360.0", - "3360.0", - "3840.0", - "3840.0", - "4320.0", - "4320.0", - "4800.0", - "4800.0", - "5280.0", - "5280.0", - "5760.0", - "5760.0", - "6240.0", - "6240.0", - "6720.0", - "6720.0", - "7200.0", - "7200.0", - "7680.0", - "7680.0", - "8160.0", - "8160.0", - "8640.0", - "8640.0", - "9120.0", - "9120.0", - "9600.0", - "9600.0", - "10080.0", - "10080.0", - "10560.0", - "10560.0", - "11040.0", - "11040.0", - "11520.0", - "11520.0", - "12000.0", - "12000.0", - "12480.0", - "12480.0", - "12960.0", - "12960.0", - "13440.0", - "13440.0", - "13920.0", - "13920.0", - "14400.0", - "14400.0", - "14880.0", - "14880.0", - "15360.0", - "15360.0", - "15840.0", - "15840.0", - "16320.0", - "16320.0", - "16800.0", - "16800.0", - "17280.0", - "17280.0", - "17760.0", - "17760.0", - "18240.0", - "18240.0", - "18720.0", - "18720.0", - "19200.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "alternate_hybrid_sigma": { - "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", - "units": "1", - "axis": "Z", - "long_name": "hybrid sigma pressure coordinate", - "climatology": "", - "formula": "p = ap + b*ps", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", - "z_factors": "ap: ap b: b ps: ps", - "bounds_values": "", - "generic_level_name": "alevel" - }, - "alternate_hybrid_sigma_half": { - "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", - "units": "1", - "axis": "Z", - "long_name": "hybrid sigma pressure coordinate", - "climatology": "", - "formula": "p = ap + b*ps", - "must_have_bounds": "no", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", - "z_factors": "ap: ap b: b ps: ps", - "bounds_values": "", - "generic_level_name": "alevhalf" - }, - "basin": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "ocean basin", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "basin", - "positive": "", - "requested": [ - "atlantic_arctic_ocean", - "indian_pacific_ocean", - "global_ocean" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "dbze": { - "standard_name": "equivalent_reflectivity_factor", - "units": "dBZ", - "axis": "", - "long_name": "CloudSat simulator equivalent radar reflectivity factor", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "dbze", - "positive": "", - "requested": [ - "-47.5", - "-42.5", - "-37.5", - "-32.5", - "-27.5", - "-22.5", - "-17.5", - "-12.5", - "-7.5", - "-2.5", - "2.5", - "7.5", - "12.5", - "17.5", - "22.5" - ], - "requested_bounds": [ - "-50.0", - "-45.0", - "-45.0", - "-40.0", - "-40.0", - "-35.0", - "-35.0", - "-30.0", - "-30.0", - "-25.0", - "-25.0", - "-20.0", - "-20.0", - "-15.0", - "-15.0", - "-10.0", - "-10.0", - "-5.0", - "-5.0", - "0.0", - "0.0", - "5.0", - "5.0", - "10.0", - "10.0", - "15.0", - "15.0", - "20.0", - "20.0", - "25.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "depth0m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "100.0", - "valid_min": "0.0", - "value": "0.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "depth100m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "120.0", - "valid_min": "80.0", - "value": "100.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "depth2000m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "2020.0", - "valid_min": "1980.0", - "value": "2000", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "depth300m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "320.0", - "valid_min": "280.0", - "value": "300", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "depth700m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "720.0", - "valid_min": "680.0", - "value": "700", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "depth_coord": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "ocean depth coordinate", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "12000.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "olevel" - }, - "effectRadIc": { - "standard_name": "", - "units": "micron", - "axis": "", - "long_name": "Effective Radius [Values to be specified]", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "effectRadIc", - "positive": "", - "requested": [ - "5.", - "15.", - "25.", - "35.", - "50.", - "75." - ], - "requested_bounds": [ - "0.0", - "10.0", - "10.0", - "20.0", - "20.0", - "30.0", - "30.0", - "40.0", - "40.0", - "60.0", - "60.0", - "90.0" - ], - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "effectRadLi": { - "standard_name": "", - "units": "micron", - "axis": "", - "long_name": "Effective Radius [Values to be specified]", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "effectRadLi", - "positive": "", - "requested": [ - "4.", - "9.", - "11.5", - "14.", - "17.5", - "25." - ], - "requested_bounds": [ - "0.0", - "8.0", - "8.0", - "10.0", - "10.0", - "13.0", - "13.0", - "15.0", - "15.0", - "20.0", - "20.0", - "30.0" - ], - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "gridlatitude": { - "standard_name": "grid_latitude", - "units": "degrees", - "axis": "Y", - "long_name": "Grid Latitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "rlat", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "90.0", - "valid_min": "-90.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "height100m": { - "standard_name": "height", - "units": "m", - "axis": "Z", - "long_name": "height", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "height", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "120.0", - "valid_min": "80.0", - "value": "100.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "height10m": { - "standard_name": "height", - "units": "m", - "axis": "Z", - "long_name": "height", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "height", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "30.0", - "valid_min": "1.0", - "value": "10.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "height2m": { - "standard_name": "height", - "units": "m", - "axis": "Z", - "long_name": "height", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "height", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "10.0", - "valid_min": "1.0", - "value": "2.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "hybrid_height": { - "standard_name": "atmosphere_hybrid_height_coordinate", - "units": "m", - "axis": "Z", - "long_name": "hybrid height coordinate", - "climatology": "", - "formula": "z = a + b*orog", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", - "z_factors": "a: lev b: b orog: orog", - "bounds_values": "", - "generic_level_name": "alevel" - }, - "hybrid_height_half": { - "standard_name": "atmosphere_hybrid_height_coordinate", - "units": "m", - "axis": "Z", - "long_name": "hybrid height coordinate", - "climatology": "", - "formula": "z = a + b*orog", - "must_have_bounds": "no", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", - "z_factors": "a: lev b: b orog: orog", - "bounds_values": "", - "generic_level_name": "alevhalf" - }, - "iceband": { - "standard_name": "sea_ice_thickness", - "units": "m", - "axis": "", - "long_name": "Ice Depth Band", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "iceband", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "lambda550nm": { - "standard_name": "radiation_wavelength", - "units": "nm", - "axis": "", - "long_name": "Radiation Wavelength 550 nanometers", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "wavelength", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "550.0", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "landUse": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Land use type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "landuse", - "positive": "", - "requested": [ - "primary_and_secondary_land", - "pastures", - "crops", - "urban" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "latitude": { - "standard_name": "latitude", - "units": "degrees_north", - "axis": "Y", - "long_name": "latitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "lat", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "90.0", - "valid_min": "-90.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "location": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "location index", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "loc", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "integer", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "longitude": { - "standard_name": "longitude", - "units": "degrees_east", - "axis": "X", - "long_name": "Longitude", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "lon", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "360.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "natural_log_pressure": { - "standard_name": "atmosphere_ln_pressure_coordinate", - "units": "", - "axis": "Z", - "long_name": "atmosphere natural log pressure coordinate", - "climatology": "", - "formula": "p = p0 * exp(-lev)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "20.0", - "valid_min": "-1.0", - "value": "", - "z_bounds_factors": "p0: p0 lev: lev_bnds", - "z_factors": "p0: p0 lev: lev", - "bounds_values": "", - "generic_level_name": "alevel" - }, - "natural_log_pressure_half": { - "standard_name": "atmosphere_ln_pressure_coordinate", - "units": "", - "axis": "Z", - "long_name": "atmosphere natural log pressure coordinate", - "climatology": "", - "formula": "p = p0 * exp(-lev)", - "must_have_bounds": "no", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "20.0", - "valid_min": "-1.0", - "value": "", - "z_bounds_factors": "p0: p0 lev: lev_bnds", - "z_factors": "p0: p0 lev: lev", - "bounds_values": "", - "generic_level_name": "alevhalf" - }, - "ocean_double_sigma": { - "standard_name": "ocean_double_sigma", - "units": "", - "axis": "Z", - "long_name": "ocean double sigma coordinate", - "climatology": "", - "formula": "for k <= k_c:\n z(k,j,i)= sigma(k)*f(j,i) \n for k > k_c:\n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) \n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", - "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", - "bounds_values": "", - "generic_level_name": "olevel" - }, - "ocean_s": { - "standard_name": "ocean_s_coordinate", - "units": "", - "axis": "Z", - "long_name": "ocean s-coordinate", - "climatology": "", - "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) \n where \n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +\n b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "0.0", - "valid_min": "-1.0", - "value": "", - "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", - "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", - "bounds_values": "", - "generic_level_name": "olevel" - }, - "ocean_sigma": { - "standard_name": "ocean_sigma_coordinate", - "units": "", - "axis": "Z", - "long_name": "ocean sigma coordinate", - "climatology": "", - "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "0.0", - "valid_min": "-1.0", - "value": "", - "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", - "z_factors": "sigma: lev eta: eta depth: depth", - "bounds_values": "", - "generic_level_name": "olevel" - }, - "ocean_sigma_z": { - "standard_name": "ocean_sigma_z", - "units": "", - "axis": "Z", - "long_name": "ocean sigma over z coordinate", - "climatology": "", - "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", - "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", - "bounds_values": "", - "generic_level_name": "olevel" - }, - "olayer100m": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "100.0", - "valid_min": "0.0", - "value": "50.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "0.0 100.0", - "generic_level_name": "" - }, - "oline": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "ocean passage", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "line", - "positive": "", - "requested": [ - "barents_opening", - "bering_strait", - "windward_passage", - "davis_strait", - "denmark_strait", - "drake_passage", - "english_channel", - "faroe_scotland_channel", - "florida_bahamas_strait", - "fram_strait", - "gibraltar_strait", - "iceland_faroe_channel", - "indonesian_throughflow", - "mozambique_channel", - "pacific_equatorial_undercurrent", - "taiwan_luzon_straits" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "p10": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "1000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "p100": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "10000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "p1000": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "100000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "p200": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "20000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "p220": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "22000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "44000.0 0.0", - "generic_level_name": "" - }, - "p500": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "50000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "p560": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "56000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "68000.0 44000.0", - "generic_level_name": "" - }, - "p700": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "70000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "p840": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "84000", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "100000.0 68000.0", - "generic_level_name": "" - }, - "p850": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "85000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "pl700": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "70000.", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "85000.0 60000.0", - "generic_level_name": "" - }, - "plev19": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "15000.", - "10000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1000.", - "500.", - "100." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev23": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "15000.", - "10000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1000.", - "700.", - "500.", - "300.", - "200.", - "100.", - "40." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev27": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "97500.", - "95000.", - "92500.", - "90000.", - "87500.", - "85000.", - "82500.", - "80000.", - "77500.", - "75000.", - "70000.", - "65000.", - "60000.", - "55000.", - "50000.", - "45000.", - "40000.", - "35000.", - "30000.", - "25000.", - "22500.", - "20000.", - "17500.", - "15000.", - "12500.", - "10000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev3": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "85000.", - "50000.", - "25000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev39": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "40000.", - "30000.", - "25000.", - "20000.", - "17000.", - "15000.", - "13000.", - "11500.", - "10000.", - "9000.", - "8000.", - "7000.", - "5000.", - "3000.", - "2000.", - "1500.", - "1000.", - "700.", - "500.", - "300.", - "200.", - "150.", - "100.", - "70.", - "50.", - "40.", - "30.", - "20.", - "15.", - "10.", - "7.", - "5.", - "3." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev3h": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "10000.", - "1000.", - "100." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev4": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "92500.", - "85000.", - "50000.", - "25000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev7": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": [ - "90000.", - "74000.", - "62000.", - "50000.", - "37500.", - "24500.", - "9000." - ], - "requested_bounds": [ - "100000.", - "80000.", - "80000.", - "68000.", - "68000.", - "56000.", - "56000.", - "44000.", - "44000.", - "31000.", - "31000.", - "18000.", - "18000.", - " 0." - ], - "stored_direction": "decreasing", - "tolerance": "0.001", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev7c": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "plev", - "positive": "down", - "requested": [ - "90000.", - "74000.", - "62000.", - "50000.", - "37500.", - "24500.", - "9000." - ], - "requested_bounds": [ - "100000.0", - "80000.0", - "80000.0", - "68000.0", - "68000.0", - "56000.0", - "56000.0", - "44000.0", - "44000.0", - "31000.0", - "31000.0", - "18000.0", - "18000.0", - "0.0" - ], - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev7h": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "92500.", - "85000.", - "70000.", - "60000.", - "50000.", - "25000.", - "5000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "plev8": { - "standard_name": "air_pressure", - "units": "Pa", - "axis": "Z", - "long_name": "pressure", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "plev", - "positive": "down", - "requested": [ - "100000.", - "85000.", - "70000.", - "50000.", - "25000.", - "10000.", - "5000.", - "1000." - ], - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "rho": { - "standard_name": "sea_water_potential_density", - "units": "kg m-3", - "axis": "Z", - "long_name": "potential density referenced to 2000 dbar", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "rho", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "scatratio": { - "standard_name": "backscattering_ratio", - "units": "1", - "axis": "", - "long_name": "lidar backscattering ratio", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "scatratio", - "positive": "", - "requested": [ - "0.005", - "0.605", - "2.1", - "4.", - "6.", - "8.5", - "12.5", - "17.5", - "22.5", - "27.5", - "35.", - "45.", - "55.", - "70.", - "50040." - ], - "requested_bounds": [ - "0.0", - "0.01", - "0.01", - "1.2", - "1.2", - "3.0", - "3.0", - "5.0", - "5.0", - "7.0", - "7.0", - "10.0", - "10.0", - "15.0", - "15.0", - "20.0", - "20.0", - "25.0", - "25.0", - "30.0", - "30.0", - "40.0", - "40.0", - "50.0", - "50.0", - "60.0", - "60.0", - "80.0", - "80.0", - "100000.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "scatter180": { - "standard_name": "scattering_angle", - "units": "degree", - "axis": "", - "long_name": "Scattering Angle", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "scatangle", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "180.0", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "sdepth": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "200.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "sdepth1": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "0.1", - "valid_min": "0.0", - "value": "0.05", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "0.0 0.1", - "generic_level_name": "" - }, - "sdepth10": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "0.5", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "0.0 1.0", - "generic_level_name": "" - }, - "siline": { - "standard_name": "region", - "units": "", - "axis": "", - "long_name": "ocean passage", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "line", - "positive": "", - "requested": [ - "fram_strait,", - "canadian_archipelego,", - "barents_opening,", - "bering_strait" - ], - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "site": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "site index", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "site", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "integer", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "sithreshold": { - "standard_name": "sea_ice_area_fraction", - "units": "%", - "axis": "", - "long_name": "Sea Ice Area Fraction Threshold", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "threshold", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "15.0", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "smooth_level": { - "standard_name": "atmosphere_sleve_coordinate", - "units": "m", - "axis": "Z", - "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", - "climatology": "", - "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "800000.0", - "valid_min": "-200.0", - "value": "", - "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", - "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", - "bounds_values": "", - "generic_level_name": "alevel" - }, - "smooth_level_half": { - "standard_name": "atmosphere_sleve_coordinate", - "units": "m", - "axis": "Z", - "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", - "climatology": "", - "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", - "must_have_bounds": "no", - "out_name": "lev", - "positive": "up", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "", - "valid_max": "800000.0", - "valid_min": "-200.0", - "value": "", - "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", - "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", - "bounds_values": "", - "generic_level_name": "alevhalf" - }, - "snowband": { - "standard_name": "surface_snow_thickness", - "units": "m", - "axis": "", - "long_name": "Snow Depth Band", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "snowband", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "snowdepth": { - "standard_name": "depth", - "units": "m", - "axis": "Z", - "long_name": "depth", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "depth", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "200.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "soilpools": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "Soil Pools", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "spectband": { - "standard_name": "sensor_band_central_radiation_wavenumber", - "units": "m-1", - "axis": "", - "long_name": "Spectral Frequency Band", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "spectband", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "standard_hybrid_sigma": { - "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", - "units": "1", - "axis": "Z", - "long_name": "hybrid sigma pressure coordinate", - "climatology": "", - "formula": "p = a*p0 + b*ps", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", - "z_factors": "p0: p0 a: a b: b ps: ps", - "bounds_values": "", - "generic_level_name": "alevel" - }, - "standard_hybrid_sigma_half": { - "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", - "units": "1", - "axis": "Z", - "long_name": "hybrid sigma pressure coordinate", - "climatology": "", - "formula": "p = a*p0 + b*ps", - "must_have_bounds": "no", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", - "z_factors": "p0: p0 a: a b: b ps: ps", - "bounds_values": "", - "generic_level_name": "alevhalf" - }, - "standard_sigma": { - "standard_name": "atmosphere_sigma_coordinate", - "units": "", - "axis": "Z", - "long_name": "sigma coordinate", - "climatology": "", - "formula": "p = ptop + sigma*(ps - ptop)", - "must_have_bounds": "yes", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", - "z_factors": "ptop: ptop sigma: lev ps: ps", - "bounds_values": "", - "generic_level_name": "alevel" - }, - "standard_sigma_half": { - "standard_name": "atmosphere_sigma_coordinate", - "units": "", - "axis": "Z", - "long_name": "sigma coordinate", - "climatology": "", - "formula": "p = ptop + sigma*(ps - ptop)", - "must_have_bounds": "no", - "out_name": "lev", - "positive": "down", - "requested": "", - "requested_bounds": "", - "stored_direction": "decreasing", - "tolerance": "", - "type": "", - "valid_max": "1.0", - "valid_min": "0.0", - "value": "", - "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", - "z_factors": "ptop: ptop sigma: lev ps: ps", - "bounds_values": "", - "generic_level_name": "alevhalf" - }, - "stempzero": { - "standard_name": "soil_temperature", - "units": "degC", - "axis": "Z", - "long_name": "Soil Temperature Zero", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "stempzero", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "0.0", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "sza5": { - "standard_name": "solar_zenith_angle", - "units": "degree", - "axis": "", - "long_name": "solar zenith angle", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "sza", - "positive": "", - "requested": [ - "0.", - "20.", - "40.", - "60.", - "80." - ], - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "tau": { - "standard_name": "atmosphere_optical_thickness_due_to_cloud", - "units": "1", - "axis": "", - "long_name": "cloud optical thickness", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "tau", - "positive": "", - "requested": [ - "0.15", - "0.8", - "2.45", - "6.5", - "16.2", - "41.5", - "100." - ], - "requested_bounds": [ - "0.0", - "0.3", - "0.3", - "1.3", - "1.3", - "3.6", - "3.6", - "9.4", - "9.4", - "23.0", - "23.0", - "60.0", - "60.0", - "100000.0" - ], - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "time": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "", - "formula": "", - "must_have_bounds": "yes", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "time1": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typebare": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "bare_ground", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typeburnt": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Burnt vegetation area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "burnt_vegetation", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec3crop": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "crops_of_c3_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec3natg": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "C3 Natural grass area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "natural_grasses_of_c3_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec3pastures": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "C3 Pastures area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "pastures_of_c3_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec3pft": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "c3_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec4crop": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "crops_of_c4_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec4natg": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "C4 Natural grass area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "natural_grasses_of_c4_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec4pastures": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "C4 Pastures area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "pastures_of_c4_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typec4pft": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "c4_plant_functional_types", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typecloud": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Cloud area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "cloud", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typecrop": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Crop area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "crops", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typefis": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Floating Ice Shelf area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "floating_ice_shelf", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typegis": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Grounded Ice Sheet area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "grounded_ice_sheet", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typeland": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Land area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "land", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typeli": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Land Ice area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "land_ice", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typemp": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Melt pond area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "sea_ice_melt_pond", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typenatgr": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Natural grass area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "natural_grasses", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typenwd": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Non-Woody Vegetation area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "herbaceous_vegetation", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typepasture": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Pasture area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "pastures", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typepdec": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "primary_deciduous_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typepever": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "primary_evergreen_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typeresidual": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "Residual area", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "residual", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typesdec": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "secondary_decidous_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typesea": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Ocean area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "sea", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typesever": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "surface type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "secondary_evergreen_trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typeshrub": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Shrub area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "shrubs", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typesi": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Sea Ice area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "sea_ice", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typesirdg": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Sea Ice Ridge area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "sea_ice_ridges", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typetree": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typetreebd": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Broadleaf Deciduous)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typetreebe": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Broadleaf Evergreen)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typetreend": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Needleleaf Deciduous)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typetreene": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Tree area type (Needleleaf Evergreen)", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "trees", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typeveg": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Vegetation area type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "vegetation", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "typewetla": { - "standard_name": "area_type", - "units": "", - "axis": "", - "long_name": "Wetland", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "wetland", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "vegtype": { - "standard_name": "", - "units": "", - "axis": "", - "long_name": "Vegetation or Land Cover Type", - "climatology": "", - "formula": "", - "must_have_bounds": "no", - "out_name": "type", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "character", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "xant": { - "standard_name": "projection_x_coordinate", - "units": "km", - "axis": "", - "long_name": "X-coordinate of Antarctic grid", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "xant", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "xgre": { - "standard_name": "projection_x_coordinate", - "units": "km", - "axis": "", - "long_name": "X-coordinate of Greenland grid", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "xgre", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "yant": { - "standard_name": "projection_y_coordinate", - "units": "km", - "axis": "", - "long_name": "Y-coordinate of Antarctic grid", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "yant", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "ygre": { - "standard_name": "projection_y_coordinate", - "units": "km", - "axis": "", - "long_name": "Y-coordinate of Greenland grid", - "climatology": "", - "formula": "", - "must_have_bounds": "", - "out_name": "ygre", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "time2": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "yes", - "formula": "", - "must_have_bounds": "yes", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - }, - "time3": { - "standard_name": "time", - "units": "days since ?", - "axis": "T", - "long_name": "time", - "climatology": "yes", - "formula": "", - "must_have_bounds": "yes", - "out_name": "time", - "positive": "", - "requested": "", - "requested_bounds": "", - "stored_direction": "increasing", - "tolerance": "", - "type": "double", - "valid_max": "", - "valid_min": "", - "value": "", - "z_bounds_factors": "", - "z_factors": "", - "bounds_values": "", - "generic_level_name": "" - } - } -} diff --git a/mydoc/examples/CMIP6_formula_terms.json b/mydoc/examples/CMIP6_formula_terms.json deleted file mode 100644 index 93ec01f..0000000 --- a/mydoc/examples/CMIP6_formula_terms.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "formula_entry": { - "a": { - "long_name": "vertical coordinate formula term: a(k)", - "units": "", - "dimensions": "alevel", - "out_name": "a", - "type": "double" - }, - "ps": { - "long_name": "Surface Air Pressure", - "units": "Pa", - "dimensions": "longitude latitude time", - "out_name": "ps", - "type": "real" - }, - "p0": { - "long_name": "vertical coordinate formula term: reference pressure", - "units": "Pa", - "dimensions": "", - "out_name": "p0", - "type": "double" - }, - "b": { - "long_name": "vertical coordinate formula term: b(k)", - "units": "", - "dimensions": "alevel", - "out_name": "b", - "type": "double" - }, - "b_bnds": { - "long_name": "vertical coordinate formula term: b(k+1/2)", - "units": "", - "dimensions": "alevel", - "out_name": "b_bnds", - "type": "double" - }, - "ap_bnds": { - "long_name": "vertical coordinate formula term: ap(k+1/2)", - "units": "Pa", - "dimensions": "alevel", - "out_name": "ap_bnds", - "type": "double" - }, - "ap": { - "long_name": "vertical coordinate formula term: ap(k)", - "units": "Pa", - "dimensions": "alevel", - "out_name": "ap", - "type": "double" - }, - "orog": { - "long_name": "Surface Altitude", - "units": "m", - "dimensions": "longitude latitude", - "out_name": "orog", - "type": "real" - }, - "ztop": { - "long_name": "height of top of model", - "units": "m", - "dimensions": "", - "out_name": "ztop", - "type": "double" - }, - "ptop": { - "long_name": "pressure at top of model", - "units": "Pa", - "dimensions": "", - "out_name": "ptop", - "type": "double" - }, - "a_bnds": { - "long_name": "vertical coordinate formula term: a(k+1/2)", - "units": "", - "dimensions": "alevel", - "out_name": "a_bnds", - "type": "double" - }, - "depth_c": { - "long_name": "vertical coordinate formula term: depth_c", - "units": "", - "dimensions": "", - "out_name": "depth_c", - "type": "double" - }, - "nsigma": { - "long_name": "vertical coordinate formula term: nsigma", - "units": "", - "dimensions": "", - "out_name": "nsigma", - "type": "integer" - }, - "href": { - "long_name": "vertical coordinate formula term: href", - "units": "", - "dimensions": "", - "out_name": "href", - "type": "double" - }, - "zlev": { - "long_name": "vertical coordinate formula term: zlev(k)", - "units": "", - "dimensions": "olevel", - "out_name": "zlev", - "type": "double" - }, - "zlev_bnds": { - "long_name": "vertical coordinate formula term: zlev(k+1/2)", - "units": "", - "dimensions": "olevel", - "out_name": "zlev_bnds", - "type": "double" - }, - "z1": { - "long_name": "vertical coordinate formula term: z1", - "units": "", - "dimensions": "", - "out_name": "z1", - "type": "double" - }, - "z2": { - "long_name": "vertical coordinate formula term: z2", - "units": "", - "dimensions": "", - "out_name": "z2", - "type": "double" - }, - "sigma_bnds": { - "long_name": "vertical coordinate formula term: sigma(k+1/2)", - "units": "", - "dimensions": "olevel", - "out_name": "sigma_bnds", - "type": "double" - }, - "depth": { - "long_name": "Sea Floor Depth: formula term: thetao", - "units": "m", - "dimensions": "longitude latitude", - "out_name": "depth", - "type": "real" - }, - "eta": { - "long_name": "Sea Surface Height formula term: thetao", - "units": "m", - "dimensions": "longitude latitude time", - "out_name": "eta", - "type": "real" - }, - "k_c": { - "long_name": "vertical coordinate formula term: k_c", - "units": "", - "dimensions": "", - "out_name": "k_c", - "type": "integer" - }, - "sigma": { - "long_name": "vertical coordinate formula term: sigma(k)", - "units": "", - "dimensions": "olevel", - "out_name": "sigma", - "type": "double" - }, - "ps2": { - "long_name": "vertical coordinate formula term: ps", - "units": "Pa", - "dimensions": "longitude latitude time2", - "out_name": "ps", - "type": "real" - }, - "ps1": { - "long_name": "vertical coordinate formula term: ps", - "units": "Pa", - "dimensions": "longitude latitude time1", - "out_name": "ps", - "type": "real" - }, - "eta2": { - "long_name": "Sea Surface Height formula term: thetao", - "units": "m", - "dimensions": "longitude latitude time2", - "out_name": "eta", - "type": "real" - }, - "b_half_bnds": { - "long_name": "vertical coordinate formula term: b(k+1/2)", - "units": "", - "dimensions": "alevhalf", - "out_name": "b_bnds", - "type": "double" - }, - "ap_half": { - "long_name": "vertical coordinate formula term: ap(k)", - "units": "Pa", - "dimensions": "alevhalf", - "out_name": "ap", - "type": "double" - }, - "b2_half": { - "long_name": "vertical coordinate formula term: b2(k)", - "units": "", - "dimensions": "alevhalf", - "out_name": "b2", - "type": "double" - }, - "b1_half": { - "long_name": "vertical coordinate formula term: b1(k)", - "units": "", - "dimensions": "alevhalf", - "out_name": "b1", - "type": "double" - }, - "b2": { - "long_name": "vertical coordinate formula term: b2(k)", - "units": "", - "dimensions": "alevel", - "out_name": "b2", - "type": "double" - }, - "a_half": { - "long_name": "vertical coordinate formula term: a(k)", - "units": "", - "dimensions": "alevhalf", - "out_name": "a", - "type": "double" - }, - "ap_half_bnds": { - "long_name": "vertical coordinate formula term: ap(k+1/2)", - "units": "Pa", - "dimensions": "alevel", - "out_name": "ap_bnds", - "type": "double" - }, - "b_half": { - "long_name": "vertical coordinate formula term: b(k)", - "units": "", - "dimensions": "alevhalf", - "out_name": "b", - "type": "double" - }, - "a_half_bnds": { - "long_name": "vertical coordinate formula term: a(k+1/2)", - "units": "", - "dimensions": "alevhalf", - "out_name": "a_bnds", - "type": "double" - }, - "b1": { - "long_name": "vertical coordinate formula term: b1(k)", - "units": "", - "dimensions": "alevel", - "out_name": "b1", - "type": "double" - } - } -} diff --git a/mydoc/examples/CMIP7_input_example.json b/mydoc/examples/CMIP7_input_example.json new file mode 100644 index 0000000..f6a5f87 --- /dev/null +++ b/mydoc/examples/CMIP7_input_example.json @@ -0,0 +1,23 @@ +{ + "_AXIS_ENTRY_FILE": "CMIP7_coordinate.json", + "_FORMULA_VAR_FILE": "CMIP7_formula_terms.json", + "_cmip7_option": 1, + "_controlled_vocabulary_file": "../tables-cvs/cmor-cvs.json", + "activity_id": "CMIP", + "archive_id": "WCRP", + "calendar": "360_day", + "experiment_id": "amip", + "forcing_index": "f1", + "frequency": "mon", + "grid_label": "g999", + "host_collection": "CMIP7", + "initialization_index": "i1", + "institution_id": "MOHC", + "license_id": "CC-BY-4.0", + "nominal_resolution": "100 km", + "outpath": "output", + "physics_index": "p1", + "realization_index": "r1", + "region": "glb", + "source_id": "ACCESS-ESM1-6" +} diff --git a/mydoc/examples/CMOR_input_example.json b/mydoc/examples/CMOR_input_example.json deleted file mode 100644 index 8bf2834..0000000 --- a/mydoc/examples/CMOR_input_example.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "source_type": "AOGCM ISM AER", - - "#note": "CMIP6 valid experiment_ids are found in CMIP6_CV.json", - "experiment_id": "piControl-withism", - "activity_id": "ISMIP6", - "sub_experiment_id": "none", - - "realization_index": "3", - "initialization_index": "1", - "physics_index": "1", - "forcing_index": "1", - - "#note": "Text stored in attribute variant_info (recommended, not required description of run variant)", - "run_variant": "3rd realization", - - "parent_experiment_id": "historical", - "parent_activity_id": "CMIP", - "parent_source_id": "PCMDI-test-1-0", - "parent_variant_label": "r3i1p1f1", - - "parent_time_units": "days since 1850-01-01", - "branch_method": "standard", - "branch_time_in_child": 59400.0, - "branch_time_in_parent": 59400.0, - - "#note": "institution_id must be registered at https://github.com/WCRP-CMIP/CMIP6_CVs/issues/new ", - "institution_id": "PCMDI", - - "#note": "source_id (model name) must be registered at https://github.com/WCRP-CMIP/CMIP6_CVs/issues/new ", - "source_id": "PCMDI-test-1-0", - - "calendar": "360_day", - - "grid": "native atmosphere regular grid (3x4 latxlon)", - "grid_label": "gn", - "nominal_resolution": "10000 km", - - "license": "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.", - - "#output": "Root directory for output (can be either a relative or full path)", - "outpath": "CMIP6", - - "#note": " **** The following descriptors are optional and may be set to an empty string ", - - "contact ": "Python Coder (coder@a.b.c.com)", - "history": "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.", - "comment": "", - "references": "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'", - - "#note": " **** The following will be obtained from the CV and do not need to be defined here", - - "sub_experiment": "none", - "institution": "", - "source": "PCMDI-test 1.0 (1989)", - - "#note": " **** The following are set correctly for CMIP6 and should not normally need editing", - - "_controlled_vocabulary_file": "CMIP6_CV.json", - "_AXIS_ENTRY_FILE": "CMIP6_coordinate.json", - "_FORMULA_VAR_FILE": "CMIP6_formula_terms.json", - "_cmip6_option": "CMIP6", - - "mip_era": "CMIP6", - "parent_mip_era": "CMIP6", - - "tracking_prefix": "hdl:21.14100", - "_history_template": "%s ;rewrote data to be consistent with for variable found in table .", - - "#output_path_template": "Template for output path directory using tables keys or global attributes", - "output_path_template": "<_member_id>", - "output_file_template": "
<_member_id>", - } \ No newline at end of file diff --git a/mydoc/examples/c/.gitignore b/mydoc/examples/c/.gitignore new file mode 100644 index 0000000..b97a986 --- /dev/null +++ b/mydoc/examples/c/.gitignore @@ -0,0 +1,2 @@ +build/ +output/ diff --git a/mydoc/examples/c/README.md b/mydoc/examples/c/README.md new file mode 100644 index 0000000..15b1886 --- /dev/null +++ b/mydoc/examples/c/README.md @@ -0,0 +1,97 @@ +# C examples + +These examples mirror the CMIP7 Python and Fortran examples with the CMOR C +API. They write small synthetic fields for regular grids, pressure levels, +scalar coordinates, basin coordinates, hybrid-sigma model levels, +curvilinear grids, and fixed fields. + +## Setup + +Create a Conda or Mamba environment with CMOR, a C compiler, and the CMOR link +dependencies. + +```bash +mamba create -n cmor-c -c conda-forge cmor c-compiler libnetcdf udunits2 json-c libuuid +mamba activate cmor-c +``` + +The equivalent Conda command is: + +```bash +conda create -n cmor-c -c conda-forge cmor c-compiler libnetcdf udunits2 json-c libuuid +conda activate cmor-c +``` + +## CMIP7 tables + +The examples also need the CMIP7 tables. Clone the tables into the directory +where you run `run_examples.sh`. + +```bash +git clone https://github.com/WCRP-CMIP/cmip7-cmor-tables.git +``` + +## Run + +To compile and run all examples, run: + +```bash +./run_examples.sh +``` + +You can also run the examples without activating the environment first. + +```bash +conda run -n cmor-c ./run_examples.sh +``` + +Generated NetCDF files are written under `./output`. + +## Environment variables + +The script uses the active Conda environment by default. It expects CMOR under +`$CONDA_PREFIX`, reads `cmor.h` from `$CONDA_PREFIX/include`, reads CMOR's +cdTime headers from `$CONDA_PREFIX/include/cdTime`, links against libraries in +`$CONDA_PREFIX/lib`, and prefers a C compiler installed in the environment. + +Use `CMOR_TABLES_PATH` when the CMIP7 tables are not under +`./cmip7-cmor-tables/tables`. + +```bash +CMOR_TABLES_PATH=/path/to/cmip7-cmor-tables/tables ./run_examples.sh +``` + +Use `CMOR_INPUT_PATH` to use a different CMIP7 user input JSON file. + +```bash +CMOR_INPUT_PATH=/path/to/CMIP7_input_example.json ./run_examples.sh +``` + +Use `CMOR_PREFIX` when CMOR is installed under a different prefix. + +```bash +CMOR_PREFIX=/path/to/cmor ./run_examples.sh +``` + +Use `CMOR_INCLUDE_DIR`, `CMOR_CDTIME_INCLUDE_DIR`, or `CMOR_LIB` when the +headers or library are not under the standard `include` and `lib` directories +for the prefix. + +```bash +CMOR_INCLUDE_DIR=/path/to/include \ +CMOR_CDTIME_INCLUDE_DIR=/path/to/include/cdTime \ +CMOR_LIB=/path/to/libcmor.a \ +./run_examples.sh +``` + +Use `CC`, `CFLAGS`, and `EXTRA_LDFLAGS` to override the compiler, compiler +flags, or linker flags. + +```bash +CC=/path/to/cc \ +CFLAGS="-g -O0 -Wall -Wextra" \ +EXTRA_LDFLAGS="-L/path/to/lib -Wl,-rpath,/path/to/lib" \ +./run_examples.sh +``` + +Use `BUILD_DIR` to override where executables are written. diff --git a/mydoc/examples/c/cmip7_c_common.c b/mydoc/examples/c/cmip7_c_common.c new file mode 100644 index 0000000..e278e6d --- /dev/null +++ b/mydoc/examples/c/cmip7_c_common.c @@ -0,0 +1,126 @@ +#include "cmip7_c_common.h" + +#include +#include + +static void copy_string(char *out, size_t out_size, const char *value) { + if (out_size > 0) { + snprintf(out, out_size, "%s", value); + } +} + +static void join_path(char *out, size_t out_size, const char *left, + const char *right) { + size_t left_len = strlen(left); + + if (left_len > 0 && left[left_len - 1] == '/') { + snprintf(out, out_size, "%s%s", left, right); + } else { + snprintf(out, out_size, "%s/%s", left, right); + } +} + +static void compound_name(char *out, size_t out_size, const char *realm, + const char *table_entry, const char *frequency, + const char *region) { + char normalized[CMOR_MAX_STRING]; + size_t i; + + copy_string(normalized, sizeof(normalized), table_entry); + for (i = 0; normalized[i] != '\0'; ++i) { + if (normalized[i] == '_') { + normalized[i] = '.'; + } + } + snprintf(out, out_size, "%s.%s.%s.%s", realm, normalized, frequency, region); +} + +static void check_status(const char *call_name, int status) { + if (status != 0) { + fprintf(stderr, "%s failed with status %d\n", call_name, status); + exit(1); + } +} + +void cmip7_get_example_args(int argc, char **argv, const char **tables_path, + const char **input_path, const char **output_dir) { + *tables_path = argc > 1 && argv[1][0] != '\0' ? argv[1] + : "./cmip7-cmor-tables/tables"; + *input_path = argc > 2 && argv[2][0] != '\0' ? argv[2] + : "./CMIP7_input_example.json"; + *output_dir = argc > 3 && argv[3][0] != '\0' ? argv[3] : "output"; +} + +void cmip7_load_shared_user_input(const char *input_path, + const char *output_dir, + const char *frequency, + const char *realization_index, + const char *forcing_index) { + check_status("cmor_dataset_json", cmor_dataset_json((char *)input_path)); + check_status("cmor_set_cur_dataset_attribute(outpath)", + cmor_set_cur_dataset_attribute("outpath", (char *)output_dir, + 1)); + if (frequency != NULL) { + check_status("cmor_set_cur_dataset_attribute(frequency)", + cmor_set_cur_dataset_attribute("frequency", (char *)frequency, + 1)); + } + if (realization_index != NULL) { + check_status("cmor_set_cur_dataset_attribute(realization_index)", + cmor_set_cur_dataset_attribute( + "realization_index", (char *)realization_index, 1)); + } + if (forcing_index != NULL) { + check_status("cmor_set_cur_dataset_attribute(forcing_index)", + cmor_set_cur_dataset_attribute( + "forcing_index", (char *)forcing_index, 1)); + } +} + +static int lookup_json_string(const char *path, const char *root_name, + const char *key, char *value, size_t value_size) { + json_object *document = json_object_from_file(path); + json_object *root = NULL; + json_object *entry = NULL; + + value[0] = '\0'; + if (document == NULL) { + fprintf(stderr, "Could not open CMIP7 metadata table %s\n", path); + exit(1); + } + + if (json_object_object_get_ex(document, root_name, &root) && + json_object_object_get_ex(root, key, &entry)) { + copy_string(value, value_size, json_object_get_string(entry)); + json_object_put(document); + return 1; + } + + json_object_put(document); + return 0; +} + +void cmip7_get_cell_measures(const char *tables_path, const char *realm, + const char *table_entry, const char *frequency, + const char *region, char *value, + size_t value_size) { + char key[CMOR_MAX_STRING]; + char path[CMIP7_PATH_MAX]; + + compound_name(key, sizeof(key), realm, table_entry, frequency, region); + join_path(path, sizeof(path), tables_path, "CMIP7_cell_measures.json"); + lookup_json_string(path, "cell_measures", key, value, value_size); +} + +int cmip7_get_long_name_override(const char *tables_path, const char *realm, + const char *table_entry, const char *frequency, + const char *region, char *value, + size_t value_size) { + char key[CMOR_MAX_STRING]; + char path[CMIP7_PATH_MAX]; + + compound_name(key, sizeof(key), realm, table_entry, frequency, region); + join_path(path, sizeof(path), tables_path, "CMIP7_long_name_overrides.json"); + return lookup_json_string(path, "long_name_overrides", key, value, + value_size); +} diff --git a/mydoc/examples/c/cmip7_c_common.h b/mydoc/examples/c/cmip7_c_common.h new file mode 100644 index 0000000..356e1a8 --- /dev/null +++ b/mydoc/examples/c/cmip7_c_common.h @@ -0,0 +1,29 @@ +#ifndef CMIP7_C_COMMON_H +#define CMIP7_C_COMMON_H + +#include "cmor.h" +#include + +#define CMIP7_NLON 4 +#define CMIP7_NLAT 3 +#define CMIP7_NTIMES 2 +#define CMIP7_MISSING_VALUE 1.0e20f +#define CMIP7_PATH_MAX 4096 + +void cmip7_get_example_args(int argc, char **argv, const char **tables_path, + const char **input_path, const char **output_dir); +void cmip7_load_shared_user_input(const char *input_path, + const char *output_dir, + const char *frequency, + const char *realization_index, + const char *forcing_index); +void cmip7_get_cell_measures(const char *tables_path, const char *realm, + const char *table_entry, const char *frequency, + const char *region, char *value, + size_t value_size); +int cmip7_get_long_name_override(const char *tables_path, const char *realm, + const char *table_entry, const char *frequency, + const char *region, char *value, + size_t value_size); + +#endif diff --git a/mydoc/examples/c/example_01_regular_grid_tos.c b/mydoc/examples/c/example_01_regular_grid_tos.c new file mode 100644 index 0000000..67cb0f3 --- /dev/null +++ b/mydoc/examples/c/example_01_regular_grid_tos.c @@ -0,0 +1,66 @@ +#include "cmip7_c_common.h" + +#include + +int main(int argc, char **argv) { + const char *tables_path; + const char *input_path; + const char *output_dir; + char cell_measures[CMOR_MAX_STRING]; + char long_name[CMOR_MAX_STRING]; + char filename[CMOR_MAX_STRING]; + int file_action = CMOR_REPLACE; + int exit_control = CMOR_EXIT_ON_MAJOR; + int table_id, lon_id, lat_id, time_id, var_id; + int axes[3]; + double lat[CMIP7_NLAT] = {10.0, 20.0, 30.0}; + double lat_bnds[CMIP7_NLAT + 1] = {5.0, 15.0, 25.0, 35.0}; + double lon[CMIP7_NLON] = {0.0, 90.0, 180.0, 270.0}; + double lon_bnds[CMIP7_NLON + 1] = {-45.0, 45.0, 135.0, 225.0, 315.0}; + double time[CMIP7_NTIMES] = {15.5, 45.5}; + double time_bnds[CMIP7_NTIMES + 1] = {0.0, 31.0, 60.0}; + float tos[CMIP7_NTIMES * CMIP7_NLAT * CMIP7_NLON] = { + 254.0895f, 258.4085f, CMIP7_MISSING_VALUE, 258.7101f, + 258.6680f, 258.2990f, CMIP7_MISSING_VALUE, 255.0432f, + 253.7254f, 251.2460f, CMIP7_MISSING_VALUE, 255.4808f, + 254.0995f, 258.5085f, CMIP7_MISSING_VALUE, 258.8101f, + 258.8680f, 258.4990f, CMIP7_MISSING_VALUE, 255.2432f, + 254.0254f, 251.5460f, CMIP7_MISSING_VALUE, 255.7808f}; + float missing = CMIP7_MISSING_VALUE; + + cmip7_get_example_args(argc, argv, &tables_path, &input_path, &output_dir); + + cmor_setup((char *)tables_path, &file_action, NULL, &exit_control, NULL, + NULL); + cmip7_load_shared_user_input(input_path, output_dir, NULL, NULL, NULL); + cmor_load_table("CMIP7_ocean.json", &table_id); + + cmor_axis(&lon_id, "longitude", "degrees_east", CMIP7_NLON, lon, 'd', + lon_bnds, 1, NULL); + cmor_axis(&lat_id, "latitude", "degrees_north", CMIP7_NLAT, lat, 'd', + lat_bnds, 1, NULL); + cmor_axis(&time_id, "time", "days since 1979-01-01", CMIP7_NTIMES, time, 'd', + time_bnds, 1, NULL); + + axes[0] = time_id; + axes[1] = lat_id; + axes[2] = lon_id; + cmor_variable(&var_id, "tos_tavg-u-hxy-sea", "degC", 3, axes, 'f', &missing, + NULL, NULL, NULL, NULL, NULL); + + cmip7_get_cell_measures(tables_path, "ocean", "tos_tavg-u-hxy-sea", "mon", + "glb", cell_measures, sizeof(cell_measures)); + cmor_set_variable_attribute(var_id, "cell_measures", 'c', cell_measures); + if (cmip7_get_long_name_override(tables_path, "ocean", "tos_tavg-u-hxy-sea", + "mon", "glb", long_name, + sizeof(long_name))) { + cmor_set_variable_attribute(var_id, "long_name", 'c', long_name); + } + + cmor_write(var_id, tos, 'f', NULL, CMIP7_NTIMES, NULL, NULL, NULL); + filename[0] = '\0'; + cmor_close_variable(var_id, filename, NULL); + printf("%s\n", filename); + cmor_close(); + return 0; +} diff --git a/mydoc/examples/c/example_01_regular_grid_tos.cdl b/mydoc/examples/c/example_01_regular_grid_tos.cdl new file mode 100644 index 0000000..9495cd7 --- /dev/null +++ b/mydoc/examples/c/example_01_regular_grid_tos.cdl @@ -0,0 +1,113 @@ +netcdf tos_tavg-u-hxy-sea_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float tos(time, lat, lon) ; + tos:standard_name = "sea_surface_temperature" ; + tos:long_name = "Sea Surface Temperature" ; + tos:units = "degC" ; + tos:cell_methods = "area: mean where sea time: mean" ; + tos:missing_value = 1.e+20f ; + tos:_FillValue = 1.e+20f ; + tos:cell_measures = "area: areacello" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "sea" ; + :branded_variable = "tos_tavg-u-hxy-sea" ; + :branding_suffix = "tavg-u-hxy-sea" ; + :creation_date = "2026-08-07T00:48:05Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacello" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:48:05Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/c/output" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "ocean" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_ocean.json; Creation Date:(2026-07-21 13:16:24) MD5:734c6f53560fa60b7c1c21b38e5b9a3f" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/dceb0758-67b2-4935-8284-f247403bfec5" ; + :variable_id = "tos" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + tos = + 254.0895, 258.4085, _, 258.7101, + 258.668, 258.299, _, 255.0432, + 253.7254, 251.246, _, 255.4808, + 254.0995, 258.5085, _, 258.8101, + 258.868, 258.499, _, 255.2432, + 254.0254, 251.546, _, 255.7808 ; +} + diff --git a/mydoc/examples/c/example_02_pressure_levels.c b/mydoc/examples/c/example_02_pressure_levels.c new file mode 100644 index 0000000..fee53a6 --- /dev/null +++ b/mydoc/examples/c/example_02_pressure_levels.c @@ -0,0 +1,84 @@ +#include "cmip7_c_common.h" + +#include + +#define NPLEV 19 + +int main(int argc, char **argv) { + const char *tables_path; + const char *input_path; + const char *output_dir; + char cell_measures[CMOR_MAX_STRING]; + char long_name[CMOR_MAX_STRING]; + char filename[CMOR_MAX_STRING]; + int file_action = CMOR_REPLACE; + int exit_control = CMOR_EXIT_ON_MAJOR; + int table_id, lon_id, lat_id, time_id, plev_id, var_id; + int axes[4]; + int i, j, k, t; + double lat[CMIP7_NLAT] = {10.0, 20.0, 30.0}; + double lat_bnds[CMIP7_NLAT + 1] = {5.0, 15.0, 25.0, 35.0}; + double lon[CMIP7_NLON] = {0.0, 90.0, 180.0, 270.0}; + double lon_bnds[CMIP7_NLON + 1] = {-45.0, 45.0, 135.0, 225.0, 315.0}; + double time[CMIP7_NTIMES] = {15.5, 45.5}; + double time_bnds[CMIP7_NTIMES + 1] = {0.0, 31.0, 60.0}; + double plev[NPLEV] = {100000.0, 92500.0, 85000.0, 70000.0, 60000.0, + 50000.0, 40000.0, 30000.0, 25000.0, 20000.0, + 15000.0, 10000.0, 7000.0, 5000.0, 3000.0, + 2000.0, 1000.0, 500.0, 100.0}; + float ta[CMIP7_NTIMES * NPLEV * CMIP7_NLAT * CMIP7_NLON]; + float missing = CMIP7_MISSING_VALUE; + + cmip7_get_example_args(argc, argv, &tables_path, &input_path, &output_dir); + + cmor_setup((char *)tables_path, &file_action, NULL, &exit_control, NULL, + NULL); + cmip7_load_shared_user_input(input_path, output_dir, NULL, NULL, NULL); + cmor_load_table("CMIP7_atmos.json", &table_id); + + cmor_axis(&lon_id, "longitude", "degrees_east", CMIP7_NLON, lon, 'd', + lon_bnds, 1, NULL); + cmor_axis(&lat_id, "latitude", "degrees_north", CMIP7_NLAT, lat, 'd', + lat_bnds, 1, NULL); + cmor_axis(&time_id, "time", "days since 1979-01-01", CMIP7_NTIMES, time, 'd', + time_bnds, 1, NULL); + cmor_axis(&plev_id, "plev19", "Pa", NPLEV, plev, 'd', NULL, 0, NULL); + + for (t = 0; t < CMIP7_NTIMES; ++t) { + for (k = 0; k < NPLEV; ++k) { + for (j = 0; j < CMIP7_NLAT; ++j) { + for (i = 0; i < CMIP7_NLON; ++i) { + int idx = ((t * NPLEV + k) * CMIP7_NLAT + j) * CMIP7_NLON + i; + ta[idx] = 250.0f + + 25.0f * + (float)(i + 1 + 4 * (j + 1) + 12 * (k + 1) + 228 * t) / + (float)(CMIP7_NLON * CMIP7_NLAT * NPLEV * CMIP7_NTIMES); + } + } + } + } + ta[0] = CMIP7_MISSING_VALUE; + + axes[0] = time_id; + axes[1] = plev_id; + axes[2] = lat_id; + axes[3] = lon_id; + cmor_variable(&var_id, "ta_tavg-p19-hxy-air", "K", 4, axes, 'f', &missing, + NULL, NULL, NULL, NULL, NULL); + + cmip7_get_cell_measures(tables_path, "atmos", "ta_tavg-p19-hxy-air", "mon", + "glb", cell_measures, sizeof(cell_measures)); + cmor_set_variable_attribute(var_id, "cell_measures", 'c', cell_measures); + if (cmip7_get_long_name_override(tables_path, "atmos", "ta_tavg-p19-hxy-air", + "mon", "glb", long_name, + sizeof(long_name))) { + cmor_set_variable_attribute(var_id, "long_name", 'c', long_name); + } + + cmor_write(var_id, ta, 'f', NULL, CMIP7_NTIMES, NULL, NULL, NULL); + filename[0] = '\0'; + cmor_close_variable(var_id, filename, NULL); + printf("%s\n", filename); + cmor_close(); + return 0; +} diff --git a/mydoc/examples/c/example_02_pressure_levels.cdl b/mydoc/examples/c/example_02_pressure_levels.cdl new file mode 100644 index 0000000..9b791de --- /dev/null +++ b/mydoc/examples/c/example_02_pressure_levels.cdl @@ -0,0 +1,231 @@ +netcdf ta_tavg-p19-hxy-air_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + plev = 19 ; + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double plev(plev) ; + plev:units = "Pa" ; + plev:axis = "Z" ; + plev:positive = "down" ; + plev:long_name = "Pressure Levels (19)" ; + plev:standard_name = "air_pressure" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float ta(time, plev, lat, lon) ; + ta:standard_name = "air_temperature" ; + ta:long_name = "Air Temperature" ; + ta:units = "K" ; + ta:cell_methods = "area: time: mean where air" ; + ta:missing_value = 1.e+20f ; + ta:_FillValue = 1.e+20f ; + ta:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "air" ; + :branded_variable = "ta_tavg-p19-hxy-air" ; + :branding_suffix = "tavg-p19-hxy-air" ; + :creation_date = "2026-08-07T00:48:05Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:48:05Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/c/output" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/98acdd2d-a903-4e53-9f2b-3c61856d3f2d" ; + :variable_id = "ta" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "p19" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + plev = 100000, 92500, 85000, 70000, 60000, 50000, 40000, 30000, 25000, + 20000, 15000, 10000, 7000, 5000, 3000, 2000, 1000, 500, 100 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + ta = + _, 250.9868, 251.0417, 251.0965, + 251.1513, 251.2061, 251.261, 251.3158, + 251.3706, 251.4254, 251.4803, 251.5351, + 251.5899, 251.6447, 251.6996, 251.7544, + 251.8092, 251.864, 251.9189, 251.9737, + 252.0285, 252.0833, 252.1382, 252.193, + 252.2478, 252.3026, 252.3575, 252.4123, + 252.4671, 252.5219, 252.5768, 252.6316, + 252.6864, 252.7412, 252.7961, 252.8509, + 252.9057, 252.9605, 253.0154, 253.0702, + 253.125, 253.1798, 253.2346, 253.2895, + 253.3443, 253.3991, 253.4539, 253.5088, + 253.5636, 253.6184, 253.6732, 253.7281, + 253.7829, 253.8377, 253.8925, 253.9474, + 254.0022, 254.057, 254.1118, 254.1667, + 254.2215, 254.2763, 254.3311, 254.386, + 254.4408, 254.4956, 254.5504, 254.6053, + 254.6601, 254.7149, 254.7697, 254.8246, + 254.8794, 254.9342, 254.989, 255.0439, + 255.0987, 255.1535, 255.2083, 255.2632, + 255.318, 255.3728, 255.4276, 255.4825, + 255.5373, 255.5921, 255.6469, 255.7018, + 255.7566, 255.8114, 255.8662, 255.9211, + 255.9759, 256.0307, 256.0855, 256.1404, + 256.1952, 256.25, 256.3048, 256.3596, + 256.4145, 256.4693, 256.5241, 256.5789, + 256.6338, 256.6886, 256.7434, 256.7982, + 256.8531, 256.9079, 256.9627, 257.0175, + 257.0724, 257.1272, 257.182, 257.2368, + 257.2917, 257.3465, 257.4013, 257.4561, + 257.511, 257.5658, 257.6206, 257.6754, + 257.7303, 257.7851, 257.8399, 257.8947, + 257.9496, 258.0044, 258.0592, 258.114, + 258.1689, 258.2237, 258.2785, 258.3333, + 258.3882, 258.443, 258.4978, 258.5526, + 258.6075, 258.6623, 258.7171, 258.7719, + 258.8268, 258.8816, 258.9364, 258.9912, + 259.0461, 259.1009, 259.1557, 259.2105, + 259.2654, 259.3202, 259.375, 259.4298, + 259.4846, 259.5395, 259.5943, 259.6491, + 259.7039, 259.7588, 259.8136, 259.8684, + 259.9232, 259.9781, 260.0329, 260.0877, + 260.1425, 260.1974, 260.2522, 260.307, + 260.3618, 260.4167, 260.4715, 260.5263, + 260.5811, 260.636, 260.6908, 260.7456, + 260.8004, 260.8553, 260.9101, 260.9649, + 261.0197, 261.0746, 261.1294, 261.1842, + 261.239, 261.2939, 261.3487, 261.4035, + 261.4583, 261.5132, 261.568, 261.6228, + 261.6776, 261.7325, 261.7873, 261.8421, + 261.8969, 261.9518, 262.0066, 262.0614, + 262.1162, 262.1711, 262.2259, 262.2807, + 262.3355, 262.3904, 262.4452, 262.5, + 262.5548, 262.6096, 262.6645, 262.7193, + 262.7741, 262.8289, 262.8838, 262.9386, + 262.9934, 263.0482, 263.1031, 263.1579, + 263.2127, 263.2675, 263.3224, 263.3772, + 263.432, 263.4868, 263.5417, 263.5965, + 263.6513, 263.7061, 263.761, 263.8158, + 263.8706, 263.9254, 263.9803, 264.0351, + 264.0899, 264.1447, 264.1996, 264.2544, + 264.3092, 264.364, 264.4189, 264.4737, + 264.5285, 264.5833, 264.6382, 264.693, + 264.7478, 264.8026, 264.8575, 264.9123, + 264.9671, 265.0219, 265.0768, 265.1316, + 265.1864, 265.2412, 265.2961, 265.3509, + 265.4057, 265.4605, 265.5154, 265.5702, + 265.625, 265.6798, 265.7346, 265.7895, + 265.8443, 265.8991, 265.9539, 266.0088, + 266.0636, 266.1184, 266.1732, 266.2281, + 266.2829, 266.3377, 266.3925, 266.4474, + 266.5022, 266.557, 266.6118, 266.6667, + 266.7215, 266.7763, 266.8311, 266.886, + 266.9408, 266.9956, 267.0504, 267.1053, + 267.1601, 267.2149, 267.2697, 267.3246, + 267.3794, 267.4342, 267.489, 267.5439, + 267.5987, 267.6535, 267.7083, 267.7632, + 267.818, 267.8728, 267.9276, 267.9825, + 268.0373, 268.0921, 268.1469, 268.2018, + 268.2566, 268.3114, 268.3662, 268.4211, + 268.4759, 268.5307, 268.5855, 268.6404, + 268.6952, 268.75, 268.8048, 268.8596, + 268.9145, 268.9693, 269.0241, 269.0789, + 269.1338, 269.1886, 269.2434, 269.2982, + 269.3531, 269.4079, 269.4627, 269.5175, + 269.5724, 269.6272, 269.682, 269.7368, + 269.7917, 269.8465, 269.9013, 269.9561, + 270.011, 270.0658, 270.1206, 270.1754, + 270.2303, 270.2851, 270.3399, 270.3947, + 270.4496, 270.5044, 270.5592, 270.614, + 270.6689, 270.7237, 270.7785, 270.8333, + 270.8882, 270.943, 270.9978, 271.0526, + 271.1075, 271.1623, 271.2171, 271.2719, + 271.3268, 271.3816, 271.4364, 271.4912, + 271.5461, 271.6009, 271.6557, 271.7105, + 271.7654, 271.8202, 271.875, 271.9298, + 271.9846, 272.0395, 272.0943, 272.1491, + 272.2039, 272.2588, 272.3136, 272.3684, + 272.4232, 272.4781, 272.5329, 272.5877, + 272.6425, 272.6974, 272.7522, 272.807, + 272.8618, 272.9167, 272.9715, 273.0263, + 273.0811, 273.136, 273.1908, 273.2456, + 273.3004, 273.3553, 273.4101, 273.4649, + 273.5197, 273.5746, 273.6294, 273.6842, + 273.739, 273.7939, 273.8487, 273.9035, + 273.9583, 274.0132, 274.068, 274.1228, + 274.1776, 274.2325, 274.2873, 274.3421, + 274.3969, 274.4518, 274.5066, 274.5614, + 274.6162, 274.6711, 274.7259, 274.7807, + 274.8355, 274.8904, 274.9452, 275, + 275.0548, 275.1096, 275.1645, 275.2193, + 275.2741, 275.3289, 275.3838, 275.4386, + 275.4934, 275.5482, 275.6031, 275.6579, + 275.7127, 275.7675, 275.8224, 275.8772 ; +} + diff --git a/mydoc/examples/c/example_03_scalar_height_tas.c b/mydoc/examples/c/example_03_scalar_height_tas.c new file mode 100644 index 0000000..f831807 --- /dev/null +++ b/mydoc/examples/c/example_03_scalar_height_tas.c @@ -0,0 +1,66 @@ +#include "cmip7_c_common.h" + +#include + +int main(int argc, char **argv) { + const char *tables_path; + const char *input_path; + const char *output_dir; + char cell_measures[CMOR_MAX_STRING]; + char long_name[CMOR_MAX_STRING]; + char filename[CMOR_MAX_STRING]; + int file_action = CMOR_REPLACE; + int exit_control = CMOR_EXIT_ON_MAJOR; + int table_id, lon_id, lat_id, time_id, height_id, var_id; + int axes[3]; + double lat[CMIP7_NLAT] = {10.0, 20.0, 30.0}; + double lat_bnds[CMIP7_NLAT + 1] = {5.0, 15.0, 25.0, 35.0}; + double lon[CMIP7_NLON] = {0.0, 90.0, 180.0, 270.0}; + double lon_bnds[CMIP7_NLON + 1] = {-45.0, 45.0, 135.0, 225.0, 315.0}; + double time[CMIP7_NTIMES] = {15.5, 45.5}; + double time_bnds[CMIP7_NTIMES + 1] = {0.0, 31.0, 60.0}; + double height = 2.0; + float tas[CMIP7_NTIMES * CMIP7_NLAT * CMIP7_NLON] = { + 254.0895f, 258.4085f, 250.5549f, 258.7101f, 258.6680f, 258.2990f, + 252.1237f, 255.0432f, 253.7254f, 251.2460f, 254.3168f, 255.4808f, + 259.7908f, 252.2754f, 257.1892f, 253.3132f, 253.8823f, 253.4698f, + 253.5381f, 254.9730f, 256.1002f, 251.8168f, 259.3698f, 250.2994f}; + float missing = CMIP7_MISSING_VALUE; + + cmip7_get_example_args(argc, argv, &tables_path, &input_path, &output_dir); + + cmor_setup((char *)tables_path, &file_action, NULL, &exit_control, NULL, + NULL); + cmip7_load_shared_user_input(input_path, output_dir, NULL, "r9", "f2"); + cmor_load_table("CMIP7_atmos.json", &table_id); + + cmor_axis(&lon_id, "longitude", "degrees_east", CMIP7_NLON, lon, 'd', + lon_bnds, 1, NULL); + cmor_axis(&lat_id, "latitude", "degrees_north", CMIP7_NLAT, lat, 'd', + lat_bnds, 1, NULL); + cmor_axis(&time_id, "time", "days since 1979-01-01", CMIP7_NTIMES, time, 'd', + time_bnds, 1, NULL); + cmor_axis(&height_id, "height2m", "m", 1, &height, 'd', NULL, 0, NULL); + + axes[0] = time_id; + axes[1] = lat_id; + axes[2] = lon_id; + cmor_variable(&var_id, "tas_tavg-h2m-hxy-u", "K", 3, axes, 'f', &missing, + NULL, NULL, NULL, NULL, NULL); + + cmip7_get_cell_measures(tables_path, "atmos", "tas_tavg-h2m-hxy-u", "mon", + "glb", cell_measures, sizeof(cell_measures)); + cmor_set_variable_attribute(var_id, "cell_measures", 'c', cell_measures); + if (cmip7_get_long_name_override(tables_path, "atmos", "tas_tavg-h2m-hxy-u", + "mon", "glb", long_name, + sizeof(long_name))) { + cmor_set_variable_attribute(var_id, "long_name", 'c', long_name); + } + + cmor_write(var_id, tas, 'f', NULL, CMIP7_NTIMES, NULL, NULL, NULL); + filename[0] = '\0'; + cmor_close_variable(var_id, filename, NULL); + printf("%s\n", filename); + cmor_close(); + return 0; +} diff --git a/mydoc/examples/c/example_03_scalar_height_tas.cdl b/mydoc/examples/c/example_03_scalar_height_tas.cdl new file mode 100644 index 0000000..39cfe85 --- /dev/null +++ b/mydoc/examples/c/example_03_scalar_height_tas.cdl @@ -0,0 +1,123 @@ +netcdf tas_tavg-h2m-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r9i1p1f2_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + double height ; + height:units = "m" ; + height:axis = "Z" ; + height:positive = "up" ; + height:long_name = "height" ; + height:standard_name = "height" ; + float tas(time, lat, lon) ; + tas:standard_name = "air_temperature" ; + tas:long_name = "Near-Surface Air Temperature" ; + tas:units = "K" ; + tas:cell_methods = "area: time: mean" ; + tas:history = "2026-08-07T00:48:06Z altered by CMOR: Treated scalar dimension: \'height\'." ; + tas:coordinates = "height" ; + tas:missing_value = 1.e+20f ; + tas:_FillValue = 1.e+20f ; + tas:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "tas_tavg-h2m-hxy-u" ; + :branding_suffix = "tavg-h2m-hxy-u" ; + :creation_date = "2026-08-07T00:48:06Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f2" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:48:06Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/c/output" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r9" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/3480b915-1e6f-4762-94ef-e3e1a2c5a94b" ; + :variable_id = "tas" ; + :variant_label = "r9i1p1f2" ; + :vertical_label = "h2m" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + height = 2 ; + + tas = + 254.0895, 258.4085, 250.5549, 258.7101, + 258.668, 258.299, 252.1237, 255.0432, + 253.7254, 251.246, 254.3168, 255.4808, + 259.7908, 252.2754, 257.1892, 253.3132, + 253.8823, 253.4698, 253.5381, 254.973, + 256.1002, 251.8168, 259.3698, 250.2994 ; +} + diff --git a/mydoc/examples/c/example_04_basin_axis.c b/mydoc/examples/c/example_04_basin_axis.c new file mode 100644 index 0000000..0413b82 --- /dev/null +++ b/mydoc/examples/c/example_04_basin_axis.c @@ -0,0 +1,65 @@ +#include "cmip7_c_common.h" + +#include + +#define NBASIN 3 + +int main(int argc, char **argv) { + const char *tables_path; + const char *input_path; + const char *output_dir; + char cell_measures[CMOR_MAX_STRING]; + char long_name[CMOR_MAX_STRING]; + char filename[CMOR_MAX_STRING]; + char basin_names[NBASIN][CMOR_MAX_STRING] = { + "atlantic_arctic_ocean", "indian_pacific_ocean", "global_ocean"}; + int file_action = CMOR_REPLACE; + int exit_control = CMOR_EXIT_ON_MAJOR; + int table_id, lat_id, time_id, basin_id, var_id; + int axes[3]; + double lat[CMIP7_NLAT] = {10.0, 20.0, 30.0}; + double lat_bnds[CMIP7_NLAT + 1] = {5.0, 15.0, 25.0, 35.0}; + double time[CMIP7_NTIMES] = {15.5, 45.5}; + double time_bnds[CMIP7_NTIMES + 1] = {0.0, 31.0, 60.0}; + float heat_transport[CMIP7_NTIMES * NBASIN * CMIP7_NLAT] = { + -80.0f, -84.0f, -88.0f, -100.0f, -104.0f, -76.0f, + -120.0f, -92.0f, -96.0f, -79.0f, -83.0f, -87.0f, + -99.0f, -103.0f, -75.0f, -107.0f, -111.0f, -115.0f}; + float missing = CMIP7_MISSING_VALUE; + + cmip7_get_example_args(argc, argv, &tables_path, &input_path, &output_dir); + + cmor_setup((char *)tables_path, &file_action, NULL, &exit_control, NULL, + NULL); + cmip7_load_shared_user_input(input_path, output_dir, NULL, NULL, NULL); + cmor_load_table("CMIP7_ocean.json", &table_id); + + cmor_axis(&lat_id, "latitude", "degrees_north", CMIP7_NLAT, lat, 'd', + lat_bnds, 1, NULL); + cmor_axis(&time_id, "time", "days since 1979-01-01", CMIP7_NTIMES, time, 'd', + time_bnds, 1, NULL); + cmor_axis(&basin_id, "basin", "", NBASIN, basin_names, 'c', NULL, + CMOR_MAX_STRING, NULL); + + axes[0] = time_id; + axes[1] = basin_id; + axes[2] = lat_id; + cmor_variable(&var_id, "htovgyre_tavg-u-hyb-sea", "W", 3, axes, 'f', &missing, + NULL, NULL, NULL, NULL, NULL); + + cmip7_get_cell_measures(tables_path, "ocean", "htovgyre_tavg-u-hyb-sea", + "mon", "glb", cell_measures, sizeof(cell_measures)); + cmor_set_variable_attribute(var_id, "cell_measures", 'c', cell_measures); + if (cmip7_get_long_name_override(tables_path, "ocean", + "htovgyre_tavg-u-hyb-sea", "mon", "glb", + long_name, sizeof(long_name))) { + cmor_set_variable_attribute(var_id, "long_name", 'c', long_name); + } + + cmor_write(var_id, heat_transport, 'f', NULL, CMIP7_NTIMES, NULL, NULL, NULL); + filename[0] = '\0'; + cmor_close_variable(var_id, filename, NULL); + printf("%s\n", filename); + cmor_close(); + return 0; +} diff --git a/mydoc/examples/c/example_04_basin_axis.cdl b/mydoc/examples/c/example_04_basin_axis.cdl new file mode 100644 index 0000000..679fbd1 --- /dev/null +++ b/mydoc/examples/c/example_04_basin_axis.cdl @@ -0,0 +1,106 @@ +netcdf htovgyre_tavg-u-hyb-sea_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + basin = 3 ; + lat = 3 ; + bnds = 2 ; + strlen = 21 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + char sector(basin, strlen) ; + sector:long_name = "Ocean Basin" ; + sector:standard_name = "region" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + float htovgyre(time, basin, lat) ; + htovgyre:standard_name = "northward_ocean_heat_transport_due_to_gyre" ; + htovgyre:long_name = "Northward Ocean Heat Transport Due to Gyre" ; + htovgyre:units = "W" ; + htovgyre:cell_methods = "depth: longitude: sum where sea (along a zig-zag grid path spanning a basin) time: mean" ; + htovgyre:missing_value = 1.e+20f ; + htovgyre:_FillValue = 1.e+20f ; + htovgyre:coordinates = "sector" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "sea" ; + :branded_variable = "htovgyre_tavg-u-hyb-sea" ; + :branding_suffix = "tavg-u-hyb-sea" ; + :creation_date = "2026-08-07T00:48:06Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:48:06Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hyb" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/c/output" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "ocean" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_ocean.json; Creation Date:(2026-07-21 13:16:24) MD5:734c6f53560fa60b7c1c21b38e5b9a3f" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/14644abe-e7dd-40b8-bee6-1bc8e4fd5242" ; + :variable_id = "htovgyre" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + sector = + "atlantic_arctic_ocean", + "indian_pacific_ocean", + "global_ocean" ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + htovgyre = + -80, -84, -88, + -100, -104, -76, + -120, -92, -96, + -79, -83, -87, + -99, -103, -75, + -107, -111, -115 ; +} + diff --git a/mydoc/examples/c/example_05_hybrid_sigma_levels.c b/mydoc/examples/c/example_05_hybrid_sigma_levels.c new file mode 100644 index 0000000..2c54d25 --- /dev/null +++ b/mydoc/examples/c/example_05_hybrid_sigma_levels.c @@ -0,0 +1,108 @@ +#include "cmip7_c_common.h" + +#include + +#define NLEV 5 + +int main(int argc, char **argv) { + const char *tables_path; + const char *input_path; + const char *output_dir; + char cell_measures[CMOR_MAX_STRING]; + char long_name[CMOR_MAX_STRING]; + char filename[CMOR_MAX_STRING]; + int file_action = CMOR_REPLACE; + int exit_control = CMOR_EXIT_ON_MAJOR; + int table_id, lon_id, lat_id, time_id, lev_id, ps_id, zfactor_id, var_id; + int axes[4]; + int lev_axis[1]; + int ps_axes[3]; + int i, j, k, t; + double lat[CMIP7_NLAT] = {10.0, 20.0, 30.0}; + double lat_bnds[CMIP7_NLAT + 1] = {5.0, 15.0, 25.0, 35.0}; + double lon[CMIP7_NLON] = {0.0, 90.0, 180.0, 270.0}; + double lon_bnds[CMIP7_NLON + 1] = {-45.0, 45.0, 135.0, 225.0, 315.0}; + double time[CMIP7_NTIMES] = {15.5, 45.5}; + double time_bnds[CMIP7_NTIMES + 1] = {0.0, 31.0, 60.0}; + double lev[NLEV] = {0.92, 0.72, 0.50, 0.30, 0.10}; + double lev_bnds[NLEV + 1] = {1.00, 0.83, 0.61, 0.40, 0.20, 0.00}; + double a_coeff[NLEV] = {0.12, 0.22, 0.30, 0.20, 0.10}; + double b_coeff[NLEV] = {0.80, 0.50, 0.20, 0.10, 0.00}; + double a_bnds[NLEV + 1] = {0.06, 0.18, 0.26, 0.25, 0.15, 0.00}; + double b_bnds[NLEV + 1] = {0.94, 0.65, 0.35, 0.15, 0.05, 0.00}; + double p0[1] = {100000.0}; + float cl[CMIP7_NTIMES * NLEV * CMIP7_NLAT * CMIP7_NLON]; + float ps[CMIP7_NTIMES * CMIP7_NLAT * CMIP7_NLON]; + float missing = CMIP7_MISSING_VALUE; + + cmip7_get_example_args(argc, argv, &tables_path, &input_path, &output_dir); + + cmor_setup((char *)tables_path, &file_action, NULL, &exit_control, NULL, + NULL); + cmip7_load_shared_user_input(input_path, output_dir, NULL, NULL, NULL); + cmor_load_table("CMIP7_atmos.json", &table_id); + + cmor_axis(&lon_id, "longitude", "degrees_east", CMIP7_NLON, lon, 'd', + lon_bnds, 1, NULL); + cmor_axis(&lat_id, "latitude", "degrees_north", CMIP7_NLAT, lat, 'd', + lat_bnds, 1, NULL); + cmor_axis(&time_id, "time", "days since 1979-01-01", CMIP7_NTIMES, time, 'd', + time_bnds, 1, NULL); + cmor_axis(&lev_id, "standard_hybrid_sigma", "1", NLEV, lev, 'd', lev_bnds, 1, + NULL); + + lev_axis[0] = lev_id; + cmor_zfactor(&zfactor_id, lev_id, "a", "", 1, lev_axis, 'd', a_coeff, a_bnds); + cmor_zfactor(&zfactor_id, lev_id, "b", "", 1, lev_axis, 'd', b_coeff, b_bnds); + cmor_zfactor(&zfactor_id, lev_id, "p0", "Pa", 0, NULL, 'd', p0, NULL); + + ps_axes[0] = time_id; + ps_axes[1] = lat_id; + ps_axes[2] = lon_id; + cmor_zfactor(&ps_id, lev_id, "ps", "Pa", 3, ps_axes, 'f', NULL, NULL); + + for (t = 0; t < CMIP7_NTIMES; ++t) { + for (j = 0; j < CMIP7_NLAT; ++j) { + for (i = 0; i < CMIP7_NLON; ++i) { + int idx = (t * CMIP7_NLAT + j) * CMIP7_NLON + i; + ps[idx] = 97000.0f + 400.0f * (float)i + 1600.0f * (float)j + + 100.0f * (float)t; + } + } + } + for (t = 0; t < CMIP7_NTIMES; ++t) { + for (k = 0; k < NLEV; ++k) { + for (j = 0; j < CMIP7_NLAT; ++j) { + for (i = 0; i < CMIP7_NLON; ++i) { + int idx = ((t * NLEV + k) * CMIP7_NLAT + j) * CMIP7_NLON + i; + cl[idx] = 75.0f - 5.0f * (float)(k + 1) - 1.2f * (float)j + + 0.4f * (float)i + 0.1f * (float)t; + } + } + } + } + + axes[0] = time_id; + axes[1] = lev_id; + axes[2] = lat_id; + axes[3] = lon_id; + cmor_variable(&var_id, "cl_tavg-al-hxy-u", "%", 4, axes, 'f', &missing, NULL, + NULL, NULL, NULL, NULL); + + cmip7_get_cell_measures(tables_path, "atmos", "cl_tavg-al-hxy-u", "mon", + "glb", cell_measures, sizeof(cell_measures)); + cmor_set_variable_attribute(var_id, "cell_measures", 'c', cell_measures); + if (cmip7_get_long_name_override(tables_path, "atmos", "cl_tavg-al-hxy-u", + "mon", "glb", long_name, + sizeof(long_name))) { + cmor_set_variable_attribute(var_id, "long_name", 'c', long_name); + } + + cmor_write(var_id, cl, 'f', NULL, CMIP7_NTIMES, NULL, NULL, NULL); + cmor_write(ps_id, ps, 'f', NULL, CMIP7_NTIMES, NULL, NULL, &var_id); + filename[0] = '\0'; + cmor_close_variable(var_id, filename, NULL); + printf("%s\n", filename); + cmor_close(); + return 0; +} diff --git a/mydoc/examples/c/example_05_hybrid_sigma_levels.cdl b/mydoc/examples/c/example_05_hybrid_sigma_levels.cdl new file mode 100644 index 0000000..566548d --- /dev/null +++ b/mydoc/examples/c/example_05_hybrid_sigma_levels.cdl @@ -0,0 +1,205 @@ +netcdf cl_tavg-al-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lev = 5 ; + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lev(lev) ; + lev:bounds = "lev_bnds" ; + lev:units = "1" ; + lev:axis = "Z" ; + lev:positive = "down" ; + lev:long_name = "hybrid sigma pressure coordinate" ; + lev:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; + lev:formula = "p = a*p0 + b*ps" ; + lev:formula_terms = "p0: p0 a: a b: b ps: ps" ; + double lev_bnds(lev, bnds) ; + lev_bnds:formula = "p = a*p0 + b*ps" ; + lev_bnds:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; + lev_bnds:units = "1" ; + lev_bnds:formula_terms = "p0: p0 a: a_bnds b: b_bnds ps: ps" ; + double p0 ; + p0:standard_name = "reference_air_pressure_for_atmosphere_vertical_coordinate" ; + p0:long_name = "vertical coordinate formula term: reference pressure" ; + p0:units = "Pa" ; + double a(lev) ; + a:long_name = "vertical coordinate formula term: a" ; + double b(lev) ; + b:long_name = "vertical coordinate formula term: b" ; + float ps(time, lat, lon) ; + ps:standard_name = "air_pressure" ; + ps:long_name = "Surface Air Pressure" ; + ps:units = "Pa" ; + double a_bnds(lev, bnds) ; + a_bnds:long_name = "vertical coordinate formula term: a(k+1/2)" ; + double b_bnds(lev, bnds) ; + b_bnds:long_name = "vertical coordinate formula term: b(k+1/2)" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float cl(time, lev, lat, lon) ; + cl:standard_name = "cloud_area_fraction_in_atmosphere_layer" ; + cl:long_name = "Percentage Cloud Cover" ; + cl:units = "%" ; + cl:cell_methods = "area: time: mean" ; + cl:missing_value = 1.e+20f ; + cl:_FillValue = 1.e+20f ; + cl:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "cl_tavg-al-hxy-u" ; + :branding_suffix = "tavg-al-hxy-u" ; + :creation_date = "2026-08-07T00:48:07Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:48:07Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/c/output" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :variable_id = "cl" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "al" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; + :tracking_id = "hdl:21.14107/0780a6fd-61bc-455b-8cd2-39e1c599f1cd" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lev = 0.92, 0.72, 0.5, 0.3, 0.1 ; + + lev_bnds = + 1, 0.83, + 0.83, 0.61, + 0.61, 0.4, + 0.4, 0.2, + 0.2, 0 ; + + p0 = 100000 ; + + a = 0.12, 0.22, 0.3, 0.2, 0.1 ; + + b = 0.8, 0.5, 0.2, 0.1, 0 ; + + ps = + 97000, 97400, 97800, 98200, + 98600, 99000, 99400, 99800, + 100200, 100600, 101000, 101400, + 97100, 97500, 97900, 98300, + 98700, 99100, 99500, 99900, + 100300, 100700, 101100, 101500 ; + + a_bnds = + 0.06, 0.18, + 0.18, 0.26, + 0.26, 0.25, + 0.25, 0.15, + 0.15, 0 ; + + b_bnds = + 0.94, 0.65, + 0.65, 0.35, + 0.35, 0.15, + 0.15, 0.05, + 0.05, 0 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + cl = + 70, 70.4, 70.8, 71.2, + 68.8, 69.2, 69.60001, 70, + 67.6, 68, 68.4, 68.8, + 65, 65.4, 65.8, 66.2, + 63.8, 64.2, 64.6, 65, + 62.6, 63, 63.4, 63.8, + 60, 60.4, 60.8, 61.2, + 58.8, 59.2, 59.6, 60, + 57.6, 58, 58.4, 58.8, + 55, 55.4, 55.8, 56.2, + 53.8, 54.2, 54.6, 55, + 52.6, 53, 53.4, 53.8, + 50, 50.4, 50.8, 51.2, + 48.8, 49.2, 49.6, 50, + 47.6, 48, 48.4, 48.8, + 70.1, 70.5, 70.9, 71.3, + 68.9, 69.3, 69.7, 70.1, + 67.7, 68.1, 68.5, 68.89999, + 65.1, 65.5, 65.9, 66.3, + 63.9, 64.3, 64.7, 65.1, + 62.7, 63.1, 63.5, 63.9, + 60.1, 60.5, 60.9, 61.3, + 58.9, 59.3, 59.7, 60.1, + 57.7, 58.1, 58.5, 58.9, + 55.1, 55.5, 55.9, 56.3, + 53.9, 54.3, 54.7, 55.1, + 52.7, 53.1, 53.5, 53.9, + 50.1, 50.5, 50.9, 51.3, + 48.9, 49.3, 49.7, 50.1, + 47.7, 48.1, 48.5, 48.9 ; +} + diff --git a/mydoc/examples/c/example_06_curvilinear_grid.c b/mydoc/examples/c/example_06_curvilinear_grid.c new file mode 100644 index 0000000..1fe208f --- /dev/null +++ b/mydoc/examples/c/example_06_curvilinear_grid.c @@ -0,0 +1,117 @@ +#include "cmip7_c_common.h" + +#include + +#define NX 4 +#define NY 3 +#define NVERTICES 4 +#define NPARAMS 6 +#define PARAM_LEN 32 +#define UNIT_LEN 2 + +int main(int argc, char **argv) { + const char *tables_path; + const char *input_path; + const char *output_dir; + char cell_measures[CMOR_MAX_STRING]; + char long_name[CMOR_MAX_STRING]; + char filename[CMOR_MAX_STRING]; + int file_action = CMOR_REPLACE; + int exit_control = CMOR_EXIT_ON_MAJOR; + int table_id, grid_table_id, x_id, y_id, time_id, grid_id, var_id; + int grid_axes[2]; + int axes[2]; + int i, j, t; + double x[NX] = {0.0, 10000.0, 20000.0, 30000.0}; + double y[NY] = {0.0, 10000.0, 20000.0}; + double x_bnds[NX + 1] = {-5000.0, 5000.0, 15000.0, 25000.0, 35000.0}; + double y_bnds[NY + 1] = {-5000.0, 5000.0, 15000.0, 25000.0}; + double latitude[NY * NX]; + double longitude[NY * NX]; + double latitude_vertices[NY * NX * NVERTICES]; + double longitude_vertices[NY * NX * NVERTICES]; + double time[CMIP7_NTIMES] = {15.5, 45.5}; + double time_bnds[CMIP7_NTIMES + 1] = {0.0, 31.0, 60.0}; + char parameter_names[NPARAMS][PARAM_LEN] = {"standard_parallel1", + "longitude_of_central_meridian", + "latitude_of_projection_origin", + "false_easting", + "false_northing", + "standard_parallel2"}; + char parameter_units[NPARAMS][UNIT_LEN] = {"", "", "", "", "", ""}; + double parameter_values[CMOR_MAX_GRID_ATTRIBUTES] = {-20.0, 175.0, 13.0, + 8.0, 0.0, 20.0}; + float hfls[CMIP7_NTIMES * NY * NX]; + float missing = CMIP7_MISSING_VALUE; + + cmip7_get_example_args(argc, argv, &tables_path, &input_path, &output_dir); + + cmor_setup((char *)tables_path, &file_action, NULL, &exit_control, NULL, + NULL); + cmip7_load_shared_user_input(input_path, output_dir, NULL, NULL, NULL); + + cmor_load_table("CMIP7_grids.json", &grid_table_id); + cmor_set_table(grid_table_id); + cmor_axis(&y_id, "y", "m", NY, y, 'd', y_bnds, 1, NULL); + cmor_axis(&x_id, "x", "m", NX, x, 'd', x_bnds, 1, NULL); + + for (j = 0; j < NY; ++j) { + for (i = 0; i < NX; ++i) { + int idx = j * NX + i; + int vertex_idx = idx * NVERTICES; + + latitude[idx] = 10.0 * (double)(j + 1) - 2.0 * (double)i; + longitude[idx] = 280.0 + 10.0 * (double)i + 2.0 * (double)j; + latitude_vertices[vertex_idx + 0] = latitude[idx] - 5.0; + latitude_vertices[vertex_idx + 1] = latitude[idx] - 4.0; + latitude_vertices[vertex_idx + 2] = latitude[idx] + 5.0; + latitude_vertices[vertex_idx + 3] = latitude[idx] + 4.0; + longitude_vertices[vertex_idx + 0] = longitude[idx] - 5.0; + longitude_vertices[vertex_idx + 1] = longitude[idx] + 5.0; + longitude_vertices[vertex_idx + 2] = longitude[idx] + 5.0; + longitude_vertices[vertex_idx + 3] = longitude[idx] - 5.0; + } + } + + grid_axes[0] = y_id; + grid_axes[1] = x_id; + cmor_grid(&grid_id, 2, grid_axes, 'd', latitude, longitude, NVERTICES, + latitude_vertices, longitude_vertices); + cmor_set_grid_mapping(grid_id, "lambert_conformal_conic", NPARAMS, + ¶meter_names[0][0], PARAM_LEN, parameter_values, + ¶meter_units[0][0], UNIT_LEN); + + cmor_load_table("CMIP7_atmos.json", &table_id); + cmor_axis(&time_id, "time", "days since 1979-01-01", CMIP7_NTIMES, time, 'd', + time_bnds, 1, NULL); + + for (t = 0; t < CMIP7_NTIMES; ++t) { + for (j = 0; j < NY; ++j) { + for (i = 0; i < NX; ++i) { + int idx = (t * NY + j) * NX + i; + hfls[idx] = 80.0f + 2.0f * (float)i + 8.0f * (float)j + (float)t; + } + } + } + + axes[0] = time_id; + axes[1] = grid_id; + cmor_variable(&var_id, "hfls_tavg-u-hxy-u", "W m-2", 2, axes, 'f', &missing, + NULL, "up", NULL, NULL, NULL); + + cmip7_get_cell_measures(tables_path, "atmos", "hfls_tavg-u-hxy-u", "mon", + "glb", cell_measures, sizeof(cell_measures)); + cmor_set_variable_attribute(var_id, "cell_measures", 'c', cell_measures); + if (cmip7_get_long_name_override(tables_path, "atmos", "hfls_tavg-u-hxy-u", + "mon", "glb", long_name, + sizeof(long_name))) { + cmor_set_variable_attribute(var_id, "long_name", 'c', long_name); + } + + cmor_write(var_id, hfls, 'f', NULL, CMIP7_NTIMES, NULL, NULL, NULL); + filename[0] = '\0'; + cmor_close_variable(var_id, filename, NULL); + printf("%s\n", filename); + cmor_close(); + return 0; +} diff --git a/mydoc/examples/c/example_06_curvilinear_grid.cdl b/mydoc/examples/c/example_06_curvilinear_grid.cdl new file mode 100644 index 0000000..359e54b --- /dev/null +++ b/mydoc/examples/c/example_06_curvilinear_grid.cdl @@ -0,0 +1,190 @@ +netcdf hfls_tavg-u-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + x = 4 ; + y = 3 ; + bnds = 2 ; + vertices = 4 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double x(x) ; + x:bounds = "x_bnds" ; + x:units = "m" ; + x:axis = "X" ; + x:long_name = "x coordinate of projection" ; + x:standard_name = "projection_x_coordinate" ; + double x_bnds(x, bnds) ; + double y(y) ; + y:bounds = "y_bnds" ; + y:units = "m" ; + y:axis = "Y" ; + y:long_name = "y coordinate of projection" ; + y:standard_name = "projection_y_coordinate" ; + double y_bnds(y, bnds) ; + int lambert_conformal_conic ; + lambert_conformal_conic:grid_mapping_name = "lambert_conformal_conic" ; + lambert_conformal_conic:standard_parallel = -20., 20. ; + lambert_conformal_conic:longitude_of_central_meridian = 175. ; + lambert_conformal_conic:latitude_of_projection_origin = 13. ; + lambert_conformal_conic:false_easting = 8. ; + lambert_conformal_conic:false_northing = 0. ; + double latitude(x, y) ; + latitude:standard_name = "latitude" ; + latitude:long_name = "latitude" ; + latitude:units = "degrees_north" ; + latitude:missing_value = 1.e+20 ; + latitude:_FillValue = 1.e+20 ; + latitude:bounds = "vertices_latitude" ; + double longitude(x, y) ; + longitude:standard_name = "longitude" ; + longitude:long_name = "longitude" ; + longitude:units = "degrees_east" ; + longitude:missing_value = 1.e+20 ; + longitude:_FillValue = 1.e+20 ; + longitude:bounds = "vertices_longitude" ; + double vertices_latitude(x, y, vertices) ; + vertices_latitude:units = "degrees_north" ; + vertices_latitude:missing_value = 1.e+20 ; + vertices_latitude:_FillValue = 1.e+20 ; + double vertices_longitude(x, y, vertices) ; + vertices_longitude:units = "degrees_east" ; + vertices_longitude:missing_value = 1.e+20 ; + vertices_longitude:_FillValue = 1.e+20 ; + float hfls(time, x, y) ; + hfls:standard_name = "surface_upward_latent_heat_flux" ; + hfls:long_name = "Surface Upward Latent Heat Flux" ; + hfls:units = "W m-2" ; + hfls:cell_methods = "area: time: mean" ; + hfls:history = "2026-08-07T00:48:07Z altered by CMOR: Reordered dimensions, original order: time y x." ; + hfls:missing_value = 1.e+20f ; + hfls:_FillValue = 1.e+20f ; + hfls:cell_measures = "area: areacella" ; + hfls:grid_mapping = "lambert_conformal_conic" ; + hfls:coordinates = "latitude longitude" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "hfls_tavg-u-hxy-u" ; + :branding_suffix = "tavg-u-hxy-u" ; + :creation_date = "2026-08-07T00:48:07Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:48:07Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/c/output" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/1661b667-53d8-4a11-a29b-c0b0d91ec71c" ; + :variable_id = "hfls" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + x = 0, 10000, 20000, 30000 ; + + x_bnds = + -5000, 5000, + 5000, 15000, + 15000, 25000, + 25000, 35000 ; + + y = 0, 10000, 20000 ; + + y_bnds = + -5000, 5000, + 5000, 15000, + 15000, 25000 ; + + lambert_conformal_conic = _ ; + + latitude = + 10, 20, 30, + 8, 18, 28, + 6, 16, 26, + 4, 14, 24 ; + + longitude = + 280, 282, 284, + 290, 292, 294, + 300, 302, 304, + 310, 312, 314 ; + + vertices_latitude = + 5, 6, 15, 14, + 15, 16, 25, 24, + 25, 26, 35, 34, + 3, 4, 13, 12, + 13, 14, 23, 22, + 23, 24, 33, 32, + 1, 2, 11, 10, + 11, 12, 21, 20, + 21, 22, 31, 30, + -1, 0, 9, 8, + 9, 10, 19, 18, + 19, 20, 29, 28 ; + + vertices_longitude = + 275, 285, 285, 275, + 277, 287, 287, 277, + 279, 289, 289, 279, + 285, 295, 295, 285, + 287, 297, 297, 287, + 289, 299, 299, 289, + 295, 305, 305, 295, + 297, 307, 307, 297, + 299, 309, 309, 299, + 305, 315, 315, 305, + 307, 317, 317, 307, + 309, 319, 319, 309 ; + + hfls = + 80, 88, 96, + 82, 90, 98, + 84, 92, 100, + 86, 94, 102, + 81, 89, 97, + 83, 91, 99, + 85, 93, 101, + 87, 95, 103 ; +} + diff --git a/mydoc/examples/c/example_07_fixed_field_rootd.c b/mydoc/examples/c/example_07_fixed_field_rootd.c new file mode 100644 index 0000000..2e71a4b --- /dev/null +++ b/mydoc/examples/c/example_07_fixed_field_rootd.c @@ -0,0 +1,65 @@ +#include "cmip7_c_common.h" + +#include + +int main(int argc, char **argv) { + const char *tables_path; + const char *input_path; + const char *output_dir; + char cell_measures[CMOR_MAX_STRING]; + char long_name[CMOR_MAX_STRING]; + char filename[CMOR_MAX_STRING]; + int file_action = CMOR_REPLACE; + int exit_control = CMOR_EXIT_ON_MAJOR; + int table_id, lon_id, lat_id, var_id; + int axes[2]; + double lat[CMIP7_NLAT] = {10.0, 20.0, 30.0}; + double lat_bnds[CMIP7_NLAT + 1] = {5.0, 15.0, 25.0, 35.0}; + double lon[CMIP7_NLON] = {0.0, 90.0, 180.0, 270.0}; + double lon_bnds[CMIP7_NLON + 1] = {-45.0, 45.0, 135.0, 225.0, 315.0}; + float rootd[CMIP7_NLAT * CMIP7_NLON] = {0.50f, + 0.45f, + CMIP7_MISSING_VALUE, + 0.55f, + 0.60f, + 0.60f, + CMIP7_MISSING_VALUE, + 0.55f, + CMIP7_MISSING_VALUE, + 0.45f, + 0.50f, + 0.50f}; + float missing = CMIP7_MISSING_VALUE; + + cmip7_get_example_args(argc, argv, &tables_path, &input_path, &output_dir); + + cmor_setup((char *)tables_path, &file_action, NULL, &exit_control, NULL, + NULL); + cmip7_load_shared_user_input(input_path, output_dir, "fx", NULL, NULL); + cmor_load_table("CMIP7_land.json", &table_id); + + cmor_axis(&lon_id, "longitude", "degrees_east", CMIP7_NLON, lon, 'd', + lon_bnds, 1, NULL); + cmor_axis(&lat_id, "latitude", "degrees_north", CMIP7_NLAT, lat, 'd', + lat_bnds, 1, NULL); + + axes[0] = lat_id; + axes[1] = lon_id; + cmor_variable(&var_id, "rootd_ti-u-hxy-lnd", "m", 2, axes, 'f', &missing, + NULL, NULL, NULL, NULL, NULL); + + cmip7_get_cell_measures(tables_path, "land", "rootd_ti-u-hxy-lnd", "fx", + "glb", cell_measures, sizeof(cell_measures)); + cmor_set_variable_attribute(var_id, "cell_measures", 'c', cell_measures); + if (cmip7_get_long_name_override(tables_path, "land", "rootd_ti-u-hxy-lnd", + "fx", "glb", long_name, sizeof(long_name))) { + cmor_set_variable_attribute(var_id, "long_name", 'c', long_name); + } + + cmor_write(var_id, rootd, 'f', NULL, 0, NULL, NULL, NULL); + filename[0] = '\0'; + cmor_close_variable(var_id, filename, NULL); + printf("%s\n", filename); + cmor_close(); + return 0; +} diff --git a/mydoc/examples/c/example_07_fixed_field_rootd.cdl b/mydoc/examples/c/example_07_fixed_field_rootd.cdl new file mode 100644 index 0000000..0cb0a01 --- /dev/null +++ b/mydoc/examples/c/example_07_fixed_field_rootd.cdl @@ -0,0 +1,95 @@ +netcdf rootd_ti-u-hxy-lnd_fx_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1 { +dimensions: + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float rootd(lat, lon) ; + rootd:standard_name = "root_depth" ; + rootd:long_name = "Maximum Root Depth" ; + rootd:units = "m" ; + rootd:cell_methods = "area: mean where land" ; + rootd:missing_value = 1.e+20f ; + rootd:_FillValue = 1.e+20f ; + rootd:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "lnd" ; + :branded_variable = "rootd_ti-u-hxy-lnd" ; + :branding_suffix = "ti-u-hxy-lnd" ; + :creation_date = "2026-08-07T00:48:08Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "fx" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:48:08Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/c/output" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "land" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_land.json; Creation Date:(2026-07-21 13:16:24) MD5:ea523449976b1c3cc3c14c1492f2fb74" ; + :temporal_label = "ti" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/5626edc0-7233-466f-bd17-52a4304c3ad9" ; + :variable_id = "rootd" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + rootd = + 0.5, 0.45, _, 0.55, + 0.6, 0.6, _, 0.55, + _, 0.45, 0.5, 0.5 ; +} + diff --git a/mydoc/examples/c/run_examples.sh b/mydoc/examples/c/run_examples.sh new file mode 100755 index 0000000..9b4b51a --- /dev/null +++ b/mydoc/examples/c/run_examples.sh @@ -0,0 +1,123 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +RUN_DIR="${RUN_DIR:-$PWD}" +TABLES_PATH="${CMOR_TABLES_PATH:-$RUN_DIR/cmip7-cmor-tables/tables}" +INPUT_PATH="${CMOR_INPUT_PATH:-$RUN_DIR/CMIP7_input_example.json}" +OUTPUT_ROOT="$SCRIPT_DIR/output" +BUILD_DIR="${BUILD_DIR:-$SCRIPT_DIR/build}" + +cd "$SCRIPT_DIR" + +if [[ -z "${CONDA_PREFIX:-}" ]]; then + echo "Activate your conda environment or run: conda run -n $0" >&2 + exit 2 +fi + +detect_c_compiler() { + if [[ -n "${CC:-}" ]]; then + command -v "$CC" >/dev/null 2>&1 || { + echo "CC is set to '$CC', but that compiler was not found" >&2 + exit 2 + } + echo "$CC" + return + fi + + local compiler + for compiler in "$CONDA_PREFIX"/bin/*-cc "$CONDA_PREFIX"/bin/*-gcc "$CONDA_PREFIX"/bin/clang "$CONDA_PREFIX"/bin/gcc "$CONDA_PREFIX"/bin/cc; do + if [[ -x "$compiler" ]]; then + echo "$compiler" + return + fi + done + + if command -v cc >/dev/null 2>&1; then + command -v cc + return + fi + + echo "Could not find a C compiler. Install c-compiler in the active conda environment or set CC." >&2 + exit 2 +} + +mkdir -p "$BUILD_DIR" "$OUTPUT_ROOT" + +if [[ ! -d "$TABLES_PATH" ]]; then + echo "Could not find CMIP7 tables under $TABLES_PATH. Clone cmip7-cmor-tables or set CMOR_TABLES_PATH." >&2 + exit 2 +fi + +if [[ ! -f "$INPUT_PATH" ]]; then + echo "Could not find CMIP7 user input JSON at $INPUT_PATH. Set CMOR_INPUT_PATH to override it." >&2 + exit 2 +fi + +CC="$(detect_c_compiler)" +CMOR_PREFIX="${CMOR_PREFIX:-$CONDA_PREFIX}" +CMOR_INCLUDE_DIR="${CMOR_INCLUDE_DIR:-$CMOR_PREFIX/include}" +CMOR_CDTIME_INCLUDE_DIR="${CMOR_CDTIME_INCLUDE_DIR:-$CMOR_INCLUDE_DIR/cdTime}" + +if [[ -n "${CMOR_LIB:-}" ]]; then + CMOR_LINK_FLAGS=("$CMOR_LIB") +elif [[ -f "$CMOR_PREFIX/lib/libcmor.a" ]]; then + CMOR_LINK_FLAGS=("$CMOR_PREFIX/lib/libcmor.a") +elif [[ -f "$CMOR_PREFIX/lib/libcmor.dylib" || -f "$CMOR_PREFIX/lib/libcmor.so" ]]; then + CMOR_LINK_FLAGS=("-L$CMOR_PREFIX/lib" "-lcmor") +else + echo "Could not find CMOR in $CMOR_PREFIX. Install cmor in the active conda environment or set CMOR_PREFIX/CMOR_LIB." >&2 + exit 2 +fi + +if [[ ! -f "$CMOR_INCLUDE_DIR/cmor.h" ]]; then + echo "Could not find cmor.h in $CMOR_INCLUDE_DIR. Install cmor in the active conda environment or set CMOR_INCLUDE_DIR." >&2 + exit 2 +fi +if [[ ! -f "$CMOR_INCLUDE_DIR/cdmsint.h" && ! -f "$CMOR_CDTIME_INCLUDE_DIR/cdmsint.h" ]]; then + echo "Could not find cdmsint.h in $CMOR_INCLUDE_DIR or $CMOR_CDTIME_INCLUDE_DIR. Install cmor in the active conda environment or set CMOR_CDTIME_INCLUDE_DIR." >&2 + exit 2 +fi + +CFLAGS_DEFAULT="-g -O2 -Wall -Wextra" +CFLAGS="${CFLAGS:-$CFLAGS_DEFAULT}" +EXTRA_LDFLAGS="${EXTRA_LDFLAGS:-}" +LINK_DIRS=("$CMOR_PREFIX/lib") +if [[ "$CONDA_PREFIX/lib" != "$CMOR_PREFIX/lib" ]]; then + LINK_DIRS+=("$CONDA_PREFIX/lib") +fi + +LINK_FLAGS=("${CMOR_LINK_FLAGS[@]}") +for link_dir in "${LINK_DIRS[@]}"; do + LINK_FLAGS+=("-L$link_dir") +done +LINK_FLAGS+=("-lnetcdf" "-ludunits2" "-ljson-c" "-luuid" "-lm") +for link_dir in "${LINK_DIRS[@]}"; do + LINK_FLAGS+=("-Wl,-rpath,$link_dir") +done + +INCLUDES=("-I$SCRIPT_DIR" "-I$CMOR_INCLUDE_DIR" "-I$CMOR_CDTIME_INCLUDE_DIR" "-I$CONDA_PREFIX/include") +COMMON_SRC="$SCRIPT_DIR/cmip7_c_common.c" + +examples=( + example_01_regular_grid_tos + example_02_pressure_levels + example_03_scalar_height_tas + example_04_basin_axis + example_05_hybrid_sigma_levels + example_06_curvilinear_grid + example_07_fixed_field_rootd +) + +for example in "${examples[@]}"; do + src="$SCRIPT_DIR/$example.c" + exe="$BUILD_DIR/$example" + + echo "Compiling $example" + "$CC" $CFLAGS "${INCLUDES[@]}" "$COMMON_SRC" "$src" "${LINK_FLAGS[@]}" $EXTRA_LDFLAGS -o "$exe" + + echo "Running $example" + "$exe" "$TABLES_PATH" "$INPUT_PATH" "$OUTPUT_ROOT" +done + +echo "Wrote CMIP7 example output under $OUTPUT_ROOT" diff --git a/mydoc/examples/example2.py b/mydoc/examples/example2.py deleted file mode 100644 index 9b373a4..0000000 --- a/mydoc/examples/example2.py +++ /dev/null @@ -1,47 +0,0 @@ -import cmor -import numpy -import os - -hfls = numpy.array([120, 116, 112, 108, - 104, 100, 96, 92, - 88, 84, 80, 76, - 119, 115, 111, 107, - 103, 99, 95, 91, - 87, 83, 79, 75 - ]) -hfls.shape = (2, 3, 4) -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Amon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorLon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -axes = [cmorTime, cmorLat, cmorLon] -cmorHfls = cmor.variable("hfls", "W/m2", axes, positive="up") -cmor.write(cmorHfls, hfls) -filename = cmor.close(cmorHfls, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) \ No newline at end of file diff --git a/mydoc/examples/example3.py b/mydoc/examples/example3.py deleted file mode 100644 index 7b3354a..0000000 --- a/mydoc/examples/example3.py +++ /dev/null @@ -1,44 +0,0 @@ -import cmor -import numpy -import os - -ta = 10. * numpy.random.random_sample((2, 19, 3, 4)) + 250. -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -lev = numpy.array([100000, 92500, 85000, 70000, 60000, 50000, 40000, 30000, - 25000, 20000, 15000, 10000, 7000, 5000, 3000, 2000, 1000, 500, 100]) -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Amon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorLon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -cmorLev = cmor.axis("plev19", coord_vals=lev, units='Pa') -axes = [cmorTime, cmorLev, cmorLat, cmorLon] -cmorTa = cmor.variable("ta", "K", axes) -cmor.write(cmorTa, ta) -filename = cmor.close(cmorTa, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) - diff --git a/mydoc/examples/example4.py b/mydoc/examples/example4.py deleted file mode 100644 index 4504f1a..0000000 --- a/mydoc/examples/example4.py +++ /dev/null @@ -1,40 +0,0 @@ -import cmor -import numpy -import os - -tas = 10. * numpy.random.random_sample((2, 3, 4)) + 250. -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Amon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorLon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -axes = [cmorTime, cmorLat, cmorLon] -cmorTas = cmor.variable("tas", "K", axes) -cmor.write(cmorTas, tas) -filename = cmor.close(cmorTas, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) diff --git a/mydoc/examples/example5.py b/mydoc/examples/example5.py deleted file mode 100644 index cb19f90..0000000 --- a/mydoc/examples/example5.py +++ /dev/null @@ -1,45 +0,0 @@ -import cmor -import numpy -import os - -data = 10. * numpy.random.random_sample((2, 3, 4)) + 250. -data = numpy.array([-80, -84, -88, - -100, -104, -76, - -120, -92, -96, - -79, -83, -87, - -99, -103, -75, - -107, -111, -115 - ]) -data.shape = (2, 3, 3) -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -region = [ - "atlantic_arctic_ocean", - "indian_pacific_ocean", - "global_ocean" -] -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Omon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -cmorBasin = cmor.axis("basin", coord_vals=region, units="") -axes = [cmorTime, cmorBasin, cmorLat] -cmorVar = cmor.variable("htovgyre", "W", axes) -cmor.write(cmorVar, data) -filename = cmor.close(cmorVar, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) - diff --git a/mydoc/examples/example6.py b/mydoc/examples/example6.py deleted file mode 100644 index 581b453..0000000 --- a/mydoc/examples/example6.py +++ /dev/null @@ -1,125 +0,0 @@ -import cmor -import numpy -import os - -data = 10. * numpy.random.random_sample((2, 3, 4)) + 250. -data = numpy.array([ - 72.8, 73.2, 73.6, 74, - 71.6, 72, 72.4, 72.4, - 70.4, 70.8, 70.8, 71.2, - 67.6, 69.2, 69.6, 70, - 66, 66.4, 66.8, 67.2, - 64.8, 65.2, 65.6, 66, - 63.6, 64, 64.4, 64.4, - 60.8, 61.2, 62.8, 63.2, - 59.6, 59.6, 60, 60.4, - 58, 58.4, 58.8, 59.2, - 56.8, 57.2, 57.6, 58, - 54, 54.4, 54.8, 56.4, - 52.8, 53.2, 53.2, 53.6, - 51.6, 51.6, 52, 52.4, - 50, 50.4, 50.8, 51.2, - 72.9, 73.3, 73.7, 74.1, - 71.7, 72.1, 72.5, 72.5, - 70.5, 70.9, 70.9, 71.3, - 67.7, 69.3, 69.7, 70.1, - 66.1, 66.5, 66.9, 67.3, - 64.9, 65.3, 65.7, 66.1, - 63.7, 64.1, 64.5, 64.5, - 60.9, 61.3, 62.9, 63.3, - 59.7, 59.7, 60.1, 60.5, - 58.1, 58.5, 58.9, 59.3, - 56.9, 57.3, 57.7, 58.1, - 54.1, 54.5, 54.9, 56.5, - 52.9, 53.3, 53.3, 53.7, - 51.7, 51.7, 52.1, 52.5, - 50.1, 50.5, 50.9, 51.3]) -data.shape = (2, 5, 3, 4) -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -lev = [0.92, 0.72, 0.5, 0.3, 0.1] -lev_bnds = [1, 0.83, - 0.61, - 0.4, - 0.2, - 0 - ] -p0 = 100000 -a = [0.12, 0.22, 0.3, 0.2, 0.1] -b = [0.8, 0.5, 0.2, 0.1, 0] -ps = numpy.array([ - 97000, 97400, 97800, 98200, - 98600, 99000, 99400, 99800, - 100200, 100600, 101000, 101400, - 97100, 97500, 97900, 98300, - 98700, 99100, 99500, 99900, - 100300, 100700, 101100, 101500]) -ps.shape = (2, 3, 4) -a_bnds = [ - 0.06, 0.18, - 0.26, - 0.25, - 0.15, - 0] -b_bnds = [ - 0.94, 0.65, - 0.35, - 0.15, - 0.05, - 0] -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Amon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorLon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -cmorLev = cmor.axis("standard_hybrid_sigma", - units='1', - coord_vals=lev, - cell_bounds=lev_bnds) -axes = [cmorTime, cmorLev, cmorLat, cmorLon] -ierr = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='a', - axis_ids=[cmorLev, ], - zfactor_values=a, - zfactor_bounds=a_bnds) -ierr = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='b', - axis_ids=[cmorLev, ], - zfactor_values=b, - zfactor_bounds=b_bnds) -ierr = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='p0', - units='Pa', - zfactor_values=p0) -ips = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='ps', - axis_ids=[cmorTime, cmorLat, cmorLon], - units='Pa') -cmorVar = cmor.variable("cl", "%", axes) -cmor.write(cmorVar, data) -cmor.write(ips, ps, store_with=cmorVar) -filename = cmor.close(cmorVar, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) diff --git a/mydoc/examples/example7.py b/mydoc/examples/example7.py deleted file mode 100644 index f0a88a3..0000000 --- a/mydoc/examples/example7.py +++ /dev/null @@ -1,78 +0,0 @@ -import cmor -import numpy -import os - - -var_data = numpy.random.random((3, 4, 2)) + 34. - -x = numpy.arange(4, dtype=float) -x_bnds = numpy.array([[x_ - 0.5, x_ + 0.5] for x_ in x]) -y = numpy.arange(3, dtype=float) -y_bnds = numpy.array([[y_ - 0.5, y_ + 0.5] for y_ in y]) - -lat = numpy.array([10, 20, 30]).reshape((3, 1)) -lat = numpy.tile(lat, (1, 4)) -lon = numpy.array([0, 90, 180, 270]) -lon = numpy.tile(lon, (3, 1)) -lon_bnds = numpy.zeros((3, 4, 4)) -lat_bnds = numpy.zeros((3, 4, 4)) - -for j in range(3): - for i in range(4): - lon_bnds[j, i, 0] = (lon[j, i] - 45) % 360 - lon_bnds[j, i, 1] = lon[j, i] - lon_bnds[j, i, 2] = (lon[j, i] + 45) % 360 - lon_bnds[j, i, 3] = lon[j, i] - lat_bnds[j, i, 0] = lat[j, i] - lat_bnds[j, i, 1] = lat[j, i] - 5 - lat_bnds[j, i, 2] = lat[j, i] - lat_bnds[j, i, 3] = lat[j, i] + 5 - -time = numpy.array([0, 1]) -time_bnds = numpy.array([0, 1, 2]) - -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE, - exit_control=cmor.CMOR_EXIT_ON_MAJOR) -cmor.dataset_json('CMOR_input_example.json') - -# First, load the grids table to set up x and y axes and the lat-long grid -grid_table_id = cmor.load_table('CMIP6_grids.json') -cmor.set_table(grid_table_id) - -y_axis_id = cmor.axis(table_entry='y_deg', - units='degrees', - coord_vals=y, - cell_bounds=y_bnds) -x_axis_id = cmor.axis(table_entry='x_deg', - units='degrees', - coord_vals=x, - cell_bounds=x_bnds) - -grid_id = cmor.grid(axis_ids=[y_axis_id, x_axis_id], - latitude=lat, - longitude=lon, - latitude_vertices=lat_bnds, - longitude_vertices=lon_bnds) - -# Now, load the Omon table to set up the time axis and variable -omon_table_id = cmor.load_table('CMIP6_Omon.json') -cmor.set_table(omon_table_id) - -time_axis_id = cmor.axis(table_entry='time', - units='months since 1980', - coord_vals=time, - cell_bounds=time_bnds) - -var_id = cmor.variable(table_entry='sos', - units='0.001', - axis_ids=[grid_id, time_axis_id]) - -cmor.write(var_id, var_data, 2) - -filename = cmor.close(var_id, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) diff --git a/mydoc/examples/fortran/.gitignore b/mydoc/examples/fortran/.gitignore new file mode 100644 index 0000000..28150c6 --- /dev/null +++ b/mydoc/examples/fortran/.gitignore @@ -0,0 +1,3 @@ +build/ +output/ +output-*/ diff --git a/mydoc/examples/fortran/README.md b/mydoc/examples/fortran/README.md new file mode 100644 index 0000000..8e62070 --- /dev/null +++ b/mydoc/examples/fortran/README.md @@ -0,0 +1,83 @@ +# Fortran examples + +## Setup + +To run the examples, you need a Conda or Mamba environment with CMOR and a +Fortran compiler installed. + +```bash +mamba create -n cmor-fortran -c conda-forge cmor fortran-compiler udunits2 +mamba activate cmor-fortran +``` + +The examples also need the CMIP7 tables. Clone the tables into the directory +where you run `run_examples.sh`. + +```bash +git clone https://github.com/WCRP-CMIP/cmip7-cmor-tables.git +``` + +The runner expects tables under `./cmip7-cmor-tables/tables` and uses the +shared CMIP7 user input JSON from `../CMIP7_input_example.json`. + +## Run + +To compile and run all of the examples from this directory, run the following. + +```bash +./run_examples.sh +``` + +Generated NetCDF files are written under `./output`. + +You can also run the examples without activating the environment first. + +```bash +conda run -n cmor-fortran ./run_examples.sh +``` + +## Environment variables + +The script uses the active Conda environment by default. It expects CMOR under +`$CONDA_PREFIX`, reads the Fortran module from `$CONDA_PREFIX/include`, links +against libraries in `$CONDA_PREFIX/lib`, and prefers a `gfortran` executable +installed in the environment. + +Use `CMOR_TABLES_PATH` when the CMIP7 tables are not under +`./cmip7-cmor-tables/tables`. + +```bash +CMOR_TABLES_PATH=/path/to/cmip7-cmor-tables/tables ./run_examples.sh +``` + +Use `CMOR_INPUT_PATH` to use a different CMIP7 user input JSON file. + +```bash +CMOR_INPUT_PATH=/path/to/CMIP7_input_example.json ./run_examples.sh +``` + +Use `CMOR_PREFIX` when CMOR is installed under a different prefix. + +```bash +CMOR_PREFIX=/path/to/cmor ./run_examples.sh +``` + +Use `CMOR_MOD_DIR` or `CMOR_LIB` when the module file or library is not under +the standard `include` and `lib` directories for the prefix. + +```bash +CMOR_MOD_DIR=/path/to/include CMOR_LIB=/path/to/libcmor.a ./run_examples.sh +``` + +Use `FC`, `FFLAGS`, and `EXTRA_LDFLAGS` to override the compiler, compiler +flags, or linker flags. + +```bash +FC=/path/to/gfortran \ +FFLAGS="-g -O0 -ffree-line-length-none" \ +EXTRA_LDFLAGS="-L/path/to/lib -Wl,-rpath,/path/to/lib" \ +./run_examples.sh ./output +``` + +Use `BUILD_DIR` to override where executables and Fortran module outputs are +written. diff --git a/mydoc/examples/fortran/cmip7_fortran_common.f90 b/mydoc/examples/fortran/cmip7_fortran_common.f90 new file mode 100644 index 0000000..47a2d25 --- /dev/null +++ b/mydoc/examples/fortran/cmip7_fortran_common.f90 @@ -0,0 +1,189 @@ +module cmip7_fortran_common + use cmor_users_functions + implicit none + + integer, parameter :: nlon = 4 + integer, parameter :: nlat = 3 + integer, parameter :: ntimes = 2 + real, parameter :: missing_value = 1.0e20 + +contains + + subroutine get_example_args(tables_path, input_path, output_dir) + character(len=*), intent(out) :: tables_path + character(len=*), intent(out) :: input_path + character(len=*), intent(out) :: output_dir + + call get_command_argument(1, tables_path) + call get_command_argument(2, input_path) + call get_command_argument(3, output_dir) + + if (len_trim(tables_path) == 0) tables_path = "./cmip7-cmor-tables/tables" + if (len_trim(input_path) == 0) input_path = "./CMIP7_input_example.json" + if (len_trim(output_dir) == 0) output_dir = "output" + end subroutine get_example_args + + subroutine load_shared_user_input(input_path, output_dir, frequency, & + realization_index, forcing_index) + character(len=*), intent(in) :: input_path + character(len=*), intent(in) :: output_dir + character(len=*), intent(in), optional :: frequency + character(len=*), intent(in), optional :: realization_index + character(len=*), intent(in), optional :: forcing_index + integer :: ierr + + ierr = cmor_dataset_json(trim(input_path)) + call check_status("cmor_dataset_json", ierr) + + ierr = cmor_set_cur_dataset_attribute("outpath", trim(output_dir), 1) + call check_status("cmor_set_cur_dataset_attribute(outpath)", ierr) + + if (present(frequency)) then + ierr = cmor_set_cur_dataset_attribute("frequency", trim(frequency), 1) + call check_status("cmor_set_cur_dataset_attribute(frequency)", ierr) + endif + + if (present(realization_index)) then + ierr = cmor_set_cur_dataset_attribute("realization_index", & + trim(realization_index), 1) + call check_status("cmor_set_cur_dataset_attribute(realization_index)", ierr) + endif + + if (present(forcing_index)) then + ierr = cmor_set_cur_dataset_attribute("forcing_index", & + trim(forcing_index), 1) + call check_status("cmor_set_cur_dataset_attribute(forcing_index)", ierr) + endif + end subroutine load_shared_user_input + + subroutine check_status(call_name, ierr) + character(len=*), intent(in) :: call_name + integer, intent(in) :: ierr + + if (ierr /= 0) then + write(*, '(a, i0)') trim(call_name)//" failed with status ", ierr + stop 1 + endif + end subroutine check_status + + subroutine check_id(call_name, cmor_id) + character(len=*), intent(in) :: call_name + integer, intent(in) :: cmor_id + + if (cmor_id < 0) then + write(*, '(a, i0)') trim(call_name)//" failed with id ", cmor_id + stop 1 + endif + end subroutine check_id + + subroutine check_grid_id(call_name, cmor_id) + character(len=*), intent(in) :: call_name + integer, intent(in) :: cmor_id + + if (cmor_id > -CMOR_MAX_GRIDS) then + write(*, '(a, i0)') trim(call_name)//" failed with grid id ", cmor_id + stop 1 + endif + end subroutine check_grid_id + + subroutine apply_cmip7_variable_metadata(var_id, tables_path, realm, & + table_entry, frequency, region) + integer, intent(in) :: var_id + character(len=*), intent(in) :: tables_path + character(len=*), intent(in) :: realm + character(len=*), intent(in) :: table_entry + character(len=*), intent(in) :: frequency + character(len=*), intent(in) :: region + character(len=2048) :: compound_name + character(len=2048) :: cell_measures + character(len=2048) :: long_name + integer :: ierr + logical :: found + + call cmip7_compound_name(realm, table_entry, frequency, region, & + compound_name) + + cell_measures = "" + call lookup_json_string(trim(tables_path)//"/CMIP7_cell_measures.json", & + trim(compound_name), cell_measures, found) + ierr = cmor_set_variable_attribute(var_id, "cell_measures", & + trim(cell_measures)) + call check_status("cmor_set_variable_attribute(cell_measures)", ierr) + + long_name = "" + call lookup_json_string(trim(tables_path)//"/CMIP7_long_name_overrides.json", & + trim(compound_name), long_name, found) + if (found) then + ierr = cmor_set_variable_attribute(var_id, "long_name", trim(long_name)) + call check_status("cmor_set_variable_attribute(long_name)", ierr) + endif + end subroutine apply_cmip7_variable_metadata + + subroutine cmip7_compound_name(realm, table_entry, frequency, region, & + compound_name) + character(len=*), intent(in) :: realm + character(len=*), intent(in) :: table_entry + character(len=*), intent(in) :: frequency + character(len=*), intent(in) :: region + character(len=*), intent(out) :: compound_name + character(len=1024) :: normalized_entry + integer :: i + + normalized_entry = table_entry + do i = 1, len_trim(normalized_entry) + if (normalized_entry(i:i) == "_") normalized_entry(i:i) = "." + enddo + + compound_name = trim(realm)//"."//trim(normalized_entry)//"."// & + trim(frequency)//"."//trim(region) + end subroutine cmip7_compound_name + + subroutine lookup_json_string(path, key, value, found) + character(len=*), intent(in) :: path + character(len=*), intent(in) :: key + character(len=*), intent(out) :: value + logical, intent(out) :: found + character(len=8192) :: line + character(len=2050) :: search_key + integer :: colon_pos + integer :: ierr + integer :: quote_1 + integer :: quote_2 + integer :: start_pos + integer :: unit + + value = "" + found = .false. + search_key = '"'//trim(key)//'"' + + open(newunit=unit, file=trim(path), status="old", action="read", & + iostat=ierr) + if (ierr /= 0) then + write(*, '(a)') "Could not open CMIP7 metadata table: "//trim(path) + stop 1 + endif + + do + read(unit, '(a)', iostat=ierr) line + if (ierr /= 0) exit + if (index(line, trim(search_key)) == 0) cycle + + colon_pos = index(line, ":") + if (colon_pos == 0) exit + + quote_1 = index(line(colon_pos + 1:), '"') + if (quote_1 == 0) exit + + start_pos = colon_pos + quote_1 + quote_2 = index(line(start_pos + 1:), '"') + if (quote_2 == 0) exit + + value = line(start_pos + 1:start_pos + quote_2 - 1) + found = .true. + exit + enddo + + close(unit) + end subroutine lookup_json_string + +end module cmip7_fortran_common diff --git a/mydoc/examples/fortran/example_01_regular_grid_tos.cdl b/mydoc/examples/fortran/example_01_regular_grid_tos.cdl new file mode 100644 index 0000000..25ff964 --- /dev/null +++ b/mydoc/examples/fortran/example_01_regular_grid_tos.cdl @@ -0,0 +1,113 @@ +netcdf tos_tavg-u-hxy-sea_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float tos(time, lat, lon) ; + tos:standard_name = "sea_surface_temperature" ; + tos:long_name = "Sea Surface Temperature" ; + tos:units = "degC" ; + tos:cell_methods = "area: mean where sea time: mean" ; + tos:missing_value = 1.e+20f ; + tos:_FillValue = 1.e+20f ; + tos:cell_measures = "area: areacello" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "sea" ; + :branded_variable = "tos_tavg-u-hxy-sea" ; + :branding_suffix = "tavg-u-hxy-sea" ; + :creation_date = "2026-08-07T00:47:26Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacello" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:47:26Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/fortran/output/example_01_regular_grid_tos" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "ocean" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_ocean.json; Creation Date:(2026-07-21 13:16:24) MD5:734c6f53560fa60b7c1c21b38e5b9a3f" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/2edfc3a9-7309-4cd4-be00-0ab3b26a8ef8" ; + :variable_id = "tos" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + tos = + 254.0895, 258.4085, _, 258.7101, + 258.668, 258.299, _, 255.0432, + 253.7254, 251.246, _, 255.4808, + 254.0995, 258.5085, _, 258.8101, + 258.868, 258.499, _, 255.2432, + 254.0254, 251.546, _, 255.7808 ; +} + diff --git a/mydoc/examples/fortran/example_01_regular_grid_tos.f90 b/mydoc/examples/fortran/example_01_regular_grid_tos.f90 new file mode 100644 index 0000000..7e45c73 --- /dev/null +++ b/mydoc/examples/fortran/example_01_regular_grid_tos.f90 @@ -0,0 +1,106 @@ +program example_01_regular_grid_tos + use cmip7_fortran_common + implicit none + + character(len=1024) :: output_dir + character(len=2048) :: tables_path + character(len=2048) :: input_path + integer :: lat_id + integer :: lon_id + integer :: time_id + integer :: var_id + integer :: ierr + integer :: nul_pos + real :: tos(nlon, nlat, ntimes) + character(len=2048) :: filename + double precision :: lat(nlat) + double precision :: lon(nlon) + double precision :: time(ntimes) + double precision :: lat_bnds(2, nlat) + double precision :: lon_bnds(2, nlon) + double precision :: time_bnds(2, ntimes) + + call get_example_args(tables_path, input_path, output_dir) + + ierr = cmor_setup(inpath=trim(tables_path), & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR) + call check_status("cmor_setup", ierr) + + call load_shared_user_input(input_path, output_dir) + + ierr = cmor_load_table("CMIP7_ocean.json") + call check_id("cmor_load_table(CMIP7_ocean)", ierr) + + lat = (/ 10.0d0, 20.0d0, 30.0d0 /) + lat_bnds(:, 1) = (/ 5.0d0, 15.0d0 /) + lat_bnds(:, 2) = (/ 15.0d0, 25.0d0 /) + lat_bnds(:, 3) = (/ 25.0d0, 35.0d0 /) + + lon = (/ 0.0d0, 90.0d0, 180.0d0, 270.0d0 /) + lon_bnds(:, 1) = (/ -45.0d0, 45.0d0 /) + lon_bnds(:, 2) = (/ 45.0d0, 135.0d0 /) + lon_bnds(:, 3) = (/ 135.0d0, 225.0d0 /) + lon_bnds(:, 4) = (/ 225.0d0, 315.0d0 /) + + time = (/ 15.5d0, 45.5d0 /) + time_bnds(:, 1) = (/ 0.0d0, 31.0d0 /) + time_bnds(:, 2) = (/ 31.0d0, 60.0d0 /) + + lon_id = cmor_axis(table="CMIP7_ocean.json", & + table_entry="longitude", & + units="degrees_east", & + length=nlon, & + coord_vals=lon, & + cell_bounds=lon_bnds) + call check_id("cmor_axis(longitude)", lon_id) + + lat_id = cmor_axis(table="CMIP7_ocean.json", & + table_entry="latitude", & + units="degrees_north", & + length=nlat, & + coord_vals=lat, & + cell_bounds=lat_bnds) + call check_id("cmor_axis(latitude)", lat_id) + + time_id = cmor_axis(table="CMIP7_ocean.json", & + table_entry="time", & + units="days since 1979-01-01", & + length=ntimes, & + coord_vals=time, & + cell_bounds=time_bnds) + call check_id("cmor_axis(time)", time_id) + + tos(:, :, 1) = reshape((/ & + 254.0895, 258.4085, missing_value, 258.7101, & + 258.6680, 258.2990, missing_value, 255.0432, & + 253.7254, 251.2460, missing_value, 255.4808 /), & + (/ nlon, nlat /)) + tos(:, :, 2) = reshape((/ & + 254.0995, 258.5085, missing_value, 258.8101, & + 258.8680, 258.4990, missing_value, 255.2432, & + 254.0254, 251.5460, missing_value, 255.7808 /), & + (/ nlon, nlat /)) + + var_id = cmor_variable(table="CMIP7_ocean.json", & + table_entry="tos_tavg-u-hxy-sea", & + units="degC", & + axis_ids=(/ lon_id, lat_id, time_id /), & + missing_value=missing_value) + call check_id("cmor_variable(tos)", var_id) + call apply_cmip7_variable_metadata(var_id, tables_path, "ocean", & + "tos_tavg-u-hxy-sea", "mon", "glb") + + ierr = cmor_write(var_id, tos) + call check_status("cmor_write", ierr) + + filename = "" + ierr = cmor_close(var_id, file_name=filename) + call check_status("cmor_close(var)", ierr) + nul_pos = index(filename, char(0)) + if (nul_pos > 0) filename(nul_pos:) = " " + write(*, '(a)') trim(filename) + + ierr = cmor_close() + call check_status("cmor_close", ierr) +end program example_01_regular_grid_tos diff --git a/mydoc/examples/fortran/example_02_pressure_levels.cdl b/mydoc/examples/fortran/example_02_pressure_levels.cdl new file mode 100644 index 0000000..9ccc25e --- /dev/null +++ b/mydoc/examples/fortran/example_02_pressure_levels.cdl @@ -0,0 +1,231 @@ +netcdf ta_tavg-p19-hxy-air_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + plev = 19 ; + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double plev(plev) ; + plev:units = "Pa" ; + plev:axis = "Z" ; + plev:positive = "down" ; + plev:long_name = "Pressure Levels (19)" ; + plev:standard_name = "air_pressure" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float ta(time, plev, lat, lon) ; + ta:standard_name = "air_temperature" ; + ta:long_name = "Air Temperature" ; + ta:units = "K" ; + ta:cell_methods = "area: time: mean where air" ; + ta:missing_value = 1.e+20f ; + ta:_FillValue = 1.e+20f ; + ta:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "air" ; + :branded_variable = "ta_tavg-p19-hxy-air" ; + :branding_suffix = "tavg-p19-hxy-air" ; + :creation_date = "2026-08-07T00:47:27Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:47:27Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/fortran/output/example_02_pressure_levels" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/597d2d8a-e397-436a-b4fa-216cdba9b904" ; + :variable_id = "ta" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "p19" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + plev = 100000, 92500, 85000, 70000, 60000, 50000, 40000, 30000, 25000, + 20000, 15000, 10000, 7000, 5000, 3000, 2000, 1000, 500, 100 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + ta = + _, 250.9868, 251.0417, 251.0965, + 251.1513, 251.2061, 251.261, 251.3158, + 251.3706, 251.4254, 251.4803, 251.5351, + 251.5899, 251.6447, 251.6996, 251.7544, + 251.8092, 251.864, 251.9189, 251.9737, + 252.0285, 252.0833, 252.1382, 252.193, + 252.2478, 252.3026, 252.3575, 252.4123, + 252.4671, 252.5219, 252.5768, 252.6316, + 252.6864, 252.7412, 252.7961, 252.8509, + 252.9057, 252.9605, 253.0154, 253.0702, + 253.125, 253.1798, 253.2346, 253.2895, + 253.3443, 253.3991, 253.4539, 253.5088, + 253.5636, 253.6184, 253.6732, 253.7281, + 253.7829, 253.8377, 253.8925, 253.9474, + 254.0022, 254.057, 254.1118, 254.1667, + 254.2215, 254.2763, 254.3311, 254.386, + 254.4408, 254.4956, 254.5504, 254.6053, + 254.6601, 254.7149, 254.7697, 254.8246, + 254.8794, 254.9342, 254.989, 255.0439, + 255.0987, 255.1535, 255.2083, 255.2632, + 255.318, 255.3728, 255.4276, 255.4825, + 255.5373, 255.5921, 255.6469, 255.7018, + 255.7566, 255.8114, 255.8662, 255.9211, + 255.9759, 256.0307, 256.0855, 256.1404, + 256.1952, 256.25, 256.3048, 256.3596, + 256.4145, 256.4693, 256.5241, 256.5789, + 256.6338, 256.6886, 256.7434, 256.7982, + 256.8531, 256.9079, 256.9627, 257.0175, + 257.0724, 257.1272, 257.182, 257.2368, + 257.2917, 257.3465, 257.4013, 257.4561, + 257.511, 257.5658, 257.6206, 257.6754, + 257.7303, 257.7851, 257.8399, 257.8947, + 257.9496, 258.0044, 258.0592, 258.114, + 258.1689, 258.2237, 258.2785, 258.3333, + 258.3882, 258.443, 258.4978, 258.5526, + 258.6075, 258.6623, 258.7171, 258.7719, + 258.8268, 258.8816, 258.9364, 258.9912, + 259.0461, 259.1009, 259.1557, 259.2105, + 259.2654, 259.3202, 259.375, 259.4298, + 259.4846, 259.5395, 259.5943, 259.6491, + 259.7039, 259.7588, 259.8136, 259.8684, + 259.9232, 259.9781, 260.0329, 260.0877, + 260.1425, 260.1974, 260.2522, 260.307, + 260.3618, 260.4167, 260.4715, 260.5263, + 260.5811, 260.636, 260.6908, 260.7456, + 260.8004, 260.8553, 260.9101, 260.9649, + 261.0197, 261.0746, 261.1294, 261.1842, + 261.239, 261.2939, 261.3487, 261.4035, + 261.4583, 261.5132, 261.568, 261.6228, + 261.6776, 261.7325, 261.7873, 261.8421, + 261.8969, 261.9518, 262.0066, 262.0614, + 262.1162, 262.1711, 262.2259, 262.2807, + 262.3355, 262.3904, 262.4452, 262.5, + 262.5548, 262.6096, 262.6645, 262.7193, + 262.7741, 262.8289, 262.8838, 262.9386, + 262.9934, 263.0482, 263.1031, 263.1579, + 263.2127, 263.2675, 263.3224, 263.3772, + 263.432, 263.4868, 263.5417, 263.5965, + 263.6513, 263.7061, 263.761, 263.8158, + 263.8706, 263.9254, 263.9803, 264.0351, + 264.0899, 264.1447, 264.1996, 264.2544, + 264.3092, 264.364, 264.4189, 264.4737, + 264.5285, 264.5833, 264.6382, 264.693, + 264.7478, 264.8026, 264.8575, 264.9123, + 264.9671, 265.0219, 265.0768, 265.1316, + 265.1864, 265.2412, 265.2961, 265.3509, + 265.4057, 265.4605, 265.5154, 265.5702, + 265.625, 265.6798, 265.7346, 265.7895, + 265.8443, 265.8991, 265.9539, 266.0088, + 266.0636, 266.1184, 266.1732, 266.2281, + 266.2829, 266.3377, 266.3925, 266.4474, + 266.5022, 266.557, 266.6118, 266.6667, + 266.7215, 266.7763, 266.8311, 266.886, + 266.9408, 266.9956, 267.0504, 267.1053, + 267.1601, 267.2149, 267.2697, 267.3246, + 267.3794, 267.4342, 267.489, 267.5439, + 267.5987, 267.6535, 267.7083, 267.7632, + 267.818, 267.8728, 267.9276, 267.9825, + 268.0373, 268.0921, 268.1469, 268.2018, + 268.2566, 268.3114, 268.3662, 268.4211, + 268.4759, 268.5307, 268.5855, 268.6404, + 268.6952, 268.75, 268.8048, 268.8596, + 268.9145, 268.9693, 269.0241, 269.0789, + 269.1338, 269.1886, 269.2434, 269.2982, + 269.3531, 269.4079, 269.4627, 269.5175, + 269.5724, 269.6272, 269.682, 269.7368, + 269.7917, 269.8465, 269.9013, 269.9561, + 270.011, 270.0658, 270.1206, 270.1754, + 270.2303, 270.2851, 270.3399, 270.3947, + 270.4496, 270.5044, 270.5592, 270.614, + 270.6689, 270.7237, 270.7785, 270.8333, + 270.8882, 270.943, 270.9978, 271.0526, + 271.1075, 271.1623, 271.2171, 271.2719, + 271.3268, 271.3816, 271.4364, 271.4912, + 271.5461, 271.6009, 271.6557, 271.7105, + 271.7654, 271.8202, 271.875, 271.9298, + 271.9846, 272.0395, 272.0943, 272.1491, + 272.2039, 272.2588, 272.3136, 272.3684, + 272.4232, 272.4781, 272.5329, 272.5877, + 272.6425, 272.6974, 272.7522, 272.807, + 272.8618, 272.9167, 272.9715, 273.0263, + 273.0811, 273.136, 273.1908, 273.2456, + 273.3004, 273.3553, 273.4101, 273.4649, + 273.5197, 273.5746, 273.6294, 273.6842, + 273.739, 273.7939, 273.8487, 273.9035, + 273.9583, 274.0132, 274.068, 274.1228, + 274.1776, 274.2325, 274.2873, 274.3421, + 274.3969, 274.4518, 274.5066, 274.5614, + 274.6162, 274.6711, 274.7259, 274.7807, + 274.8355, 274.8904, 274.9452, 275, + 275.0548, 275.1096, 275.1645, 275.2193, + 275.2741, 275.3289, 275.3838, 275.4386, + 275.4934, 275.5482, 275.6031, 275.6579, + 275.7127, 275.7675, 275.8224, 275.8772 ; +} + diff --git a/mydoc/examples/fortran/example_02_pressure_levels.f90 b/mydoc/examples/fortran/example_02_pressure_levels.f90 new file mode 100644 index 0000000..b245adb --- /dev/null +++ b/mydoc/examples/fortran/example_02_pressure_levels.f90 @@ -0,0 +1,126 @@ +program example_02_pressure_levels + use cmip7_fortran_common + implicit none + + integer, parameter :: nplev = 19 + character(len=1024) :: output_dir + character(len=2048) :: tables_path + character(len=2048) :: input_path + integer :: lat_id + integer :: lon_id + integer :: time_id + integer :: plev_id + integer :: var_id + integer :: ierr + integer :: nul_pos + integer :: i + integer :: j + integer :: k + integer :: t + real :: ta(nlon, nlat, nplev, ntimes) + character(len=2048) :: filename + double precision :: lat(nlat) + double precision :: lon(nlon) + double precision :: time(ntimes) + double precision :: lat_bnds(2, nlat) + double precision :: lon_bnds(2, nlon) + double precision :: time_bnds(2, ntimes) + double precision :: plev(nplev) + + call get_example_args(tables_path, input_path, output_dir) + + ierr = cmor_setup(inpath=trim(tables_path), & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR) + call check_status("cmor_setup", ierr) + + call load_shared_user_input(input_path, output_dir) + + ierr = cmor_load_table("CMIP7_atmos.json") + call check_id("cmor_load_table(CMIP7_atmos)", ierr) + + lat = (/ 10.0d0, 20.0d0, 30.0d0 /) + lat_bnds(:, 1) = (/ 5.0d0, 15.0d0 /) + lat_bnds(:, 2) = (/ 15.0d0, 25.0d0 /) + lat_bnds(:, 3) = (/ 25.0d0, 35.0d0 /) + + lon = (/ 0.0d0, 90.0d0, 180.0d0, 270.0d0 /) + lon_bnds(:, 1) = (/ -45.0d0, 45.0d0 /) + lon_bnds(:, 2) = (/ 45.0d0, 135.0d0 /) + lon_bnds(:, 3) = (/ 135.0d0, 225.0d0 /) + lon_bnds(:, 4) = (/ 225.0d0, 315.0d0 /) + + time = (/ 15.5d0, 45.5d0 /) + time_bnds(:, 1) = (/ 0.0d0, 31.0d0 /) + time_bnds(:, 2) = (/ 31.0d0, 60.0d0 /) + + lon_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="longitude", & + units="degrees_east", & + length=nlon, & + coord_vals=lon, & + cell_bounds=lon_bnds) + call check_id("cmor_axis(longitude)", lon_id) + + lat_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="latitude", & + units="degrees_north", & + length=nlat, & + coord_vals=lat, & + cell_bounds=lat_bnds) + call check_id("cmor_axis(latitude)", lat_id) + + time_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="time", & + units="days since 1979-01-01", & + length=ntimes, & + coord_vals=time, & + cell_bounds=time_bnds) + call check_id("cmor_axis(time)", time_id) + + plev = (/ 100000.0d0, 92500.0d0, 85000.0d0, 70000.0d0, 60000.0d0, & + 50000.0d0, 40000.0d0, 30000.0d0, 25000.0d0, 20000.0d0, & + 15000.0d0, 10000.0d0, 7000.0d0, 5000.0d0, 3000.0d0, & + 2000.0d0, 1000.0d0, 500.0d0, 100.0d0 /) + + plev_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="plev19", & + units="Pa", & + length=nplev, & + coord_vals=plev) + call check_id("cmor_axis(plev19)", plev_id) + + do t = 1, ntimes + do k = 1, nplev + do j = 1, nlat + do i = 1, nlon + ta(i, j, k, t) = 250.0 + 25.0 * real(i + 4*j + 12*k + 228*(t-1)) & + / real(nlon*nlat*nplev*ntimes) + enddo + enddo + enddo + enddo + ta(1, 1, 1, 1) = missing_value + + var_id = cmor_variable(table="CMIP7_atmos.json", & + table_entry="ta_tavg-p19-hxy-air", & + units="K", & + axis_ids=(/ lon_id, lat_id, plev_id, time_id /), & + missing_value=missing_value) + call check_id("cmor_variable(ta)", var_id) + call apply_cmip7_variable_metadata(var_id, tables_path, "atmos", & + "ta_tavg-p19-hxy-air", "mon", "glb") + + ierr = cmor_write(var_id, ta) + call check_status("cmor_write", ierr) + + filename = "" + ierr = cmor_close(var_id, file_name=filename) + call check_status("cmor_close(var)", ierr) + nul_pos = index(filename, char(0)) + if (nul_pos > 0) filename(nul_pos:) = " " + write(*, '(a)') trim(filename) + + ierr = cmor_close() + call check_status("cmor_close", ierr) +end program example_02_pressure_levels diff --git a/mydoc/examples/fortran/example_03_scalar_height_tas.cdl b/mydoc/examples/fortran/example_03_scalar_height_tas.cdl new file mode 100644 index 0000000..c329c68 --- /dev/null +++ b/mydoc/examples/fortran/example_03_scalar_height_tas.cdl @@ -0,0 +1,123 @@ +netcdf tas_tavg-h2m-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r9i1p1f2_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + double height ; + height:units = "m" ; + height:axis = "Z" ; + height:positive = "up" ; + height:long_name = "height" ; + height:standard_name = "height" ; + float tas(time, lat, lon) ; + tas:standard_name = "air_temperature" ; + tas:long_name = "Near-Surface Air Temperature" ; + tas:units = "K" ; + tas:cell_methods = "area: time: mean" ; + tas:history = "2026-08-07T00:47:27Z altered by CMOR: Treated scalar dimension: \'height\'." ; + tas:coordinates = "height" ; + tas:missing_value = 1.e+20f ; + tas:_FillValue = 1.e+20f ; + tas:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "tas_tavg-h2m-hxy-u" ; + :branding_suffix = "tavg-h2m-hxy-u" ; + :creation_date = "2026-08-07T00:47:27Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f2" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:47:27Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/fortran/output/example_03_scalar_height_tas" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r9" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/f42fe7e0-84a9-4319-8e0e-a992e2ab3383" ; + :variable_id = "tas" ; + :variant_label = "r9i1p1f2" ; + :vertical_label = "h2m" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + height = 2 ; + + tas = + 254.0895, 258.4085, 250.5549, 258.7101, + 258.668, 258.299, 252.1237, 255.0432, + 253.7254, 251.246, 254.3168, 255.4808, + 259.7908, 252.2754, 257.1892, 253.3132, + 253.8823, 253.4698, 253.5381, 254.973, + 256.1002, 251.8168, 259.3698, 250.2994 ; +} + diff --git a/mydoc/examples/fortran/example_03_scalar_height_tas.f90 b/mydoc/examples/fortran/example_03_scalar_height_tas.f90 new file mode 100644 index 0000000..fe79813 --- /dev/null +++ b/mydoc/examples/fortran/example_03_scalar_height_tas.f90 @@ -0,0 +1,115 @@ +program example_03_scalar_height_tas + use cmip7_fortran_common + implicit none + + character(len=1024) :: output_dir + character(len=2048) :: tables_path + character(len=2048) :: input_path + integer :: lat_id + integer :: lon_id + integer :: time_id + integer :: height_id + integer :: var_id + integer :: ierr + integer :: nul_pos + real :: tas(nlon, nlat, ntimes) + character(len=2048) :: filename + double precision :: lat(nlat) + double precision :: lon(nlon) + double precision :: time(ntimes) + double precision :: lat_bnds(2, nlat) + double precision :: lon_bnds(2, nlon) + double precision :: time_bnds(2, ntimes) + + call get_example_args(tables_path, input_path, output_dir) + + ierr = cmor_setup(inpath=trim(tables_path), & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR) + call check_status("cmor_setup", ierr) + + call load_shared_user_input(input_path, output_dir, & + realization_index="r9", forcing_index="f2") + + ierr = cmor_load_table("CMIP7_atmos.json") + call check_id("cmor_load_table(CMIP7_atmos)", ierr) + + lat = (/ 10.0d0, 20.0d0, 30.0d0 /) + lat_bnds(:, 1) = (/ 5.0d0, 15.0d0 /) + lat_bnds(:, 2) = (/ 15.0d0, 25.0d0 /) + lat_bnds(:, 3) = (/ 25.0d0, 35.0d0 /) + + lon = (/ 0.0d0, 90.0d0, 180.0d0, 270.0d0 /) + lon_bnds(:, 1) = (/ -45.0d0, 45.0d0 /) + lon_bnds(:, 2) = (/ 45.0d0, 135.0d0 /) + lon_bnds(:, 3) = (/ 135.0d0, 225.0d0 /) + lon_bnds(:, 4) = (/ 225.0d0, 315.0d0 /) + + time = (/ 15.5d0, 45.5d0 /) + time_bnds(:, 1) = (/ 0.0d0, 31.0d0 /) + time_bnds(:, 2) = (/ 31.0d0, 60.0d0 /) + + lon_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="longitude", & + units="degrees_east", & + length=nlon, & + coord_vals=lon, & + cell_bounds=lon_bnds) + call check_id("cmor_axis(longitude)", lon_id) + + lat_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="latitude", & + units="degrees_north", & + length=nlat, & + coord_vals=lat, & + cell_bounds=lat_bnds) + call check_id("cmor_axis(latitude)", lat_id) + + time_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="time", & + units="days since 1979-01-01", & + length=ntimes, & + coord_vals=time, & + cell_bounds=time_bnds) + call check_id("cmor_axis(time)", time_id) + + height_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="height2m", & + units="m", & + length=1, & + coord_vals=(/ 2.0d0 /)) + call check_id("cmor_axis(height2m)", height_id) + + tas(:, :, 1) = reshape((/ & + 254.0895, 258.4085, 250.5549, 258.7101, & + 258.6680, 258.2990, 252.1237, 255.0432, & + 253.7254, 251.2460, 254.3168, 255.4808 /), & + (/ nlon, nlat /)) + tas(:, :, 2) = reshape((/ & + 259.7908, 252.2754, 257.1892, 253.3132, & + 253.8823, 253.4698, 253.5381, 254.9730, & + 256.1002, 251.8168, 259.3698, 250.2994 /), & + (/ nlon, nlat /)) + + var_id = cmor_variable(table="CMIP7_atmos.json", & + table_entry="tas_tavg-h2m-hxy-u", & + units="K", & + axis_ids=(/ lon_id, lat_id, time_id /), & + missing_value=missing_value) + call check_id("cmor_variable(tas)", var_id) + call apply_cmip7_variable_metadata(var_id, tables_path, "atmos", & + "tas_tavg-h2m-hxy-u", "mon", "glb") + + ierr = cmor_write(var_id, tas) + call check_status("cmor_write", ierr) + + filename = "" + ierr = cmor_close(var_id, file_name=filename) + call check_status("cmor_close(var)", ierr) + nul_pos = index(filename, char(0)) + if (nul_pos > 0) filename(nul_pos:) = " " + write(*, '(a)') trim(filename) + + ierr = cmor_close() + call check_status("cmor_close", ierr) +end program example_03_scalar_height_tas diff --git a/mydoc/examples/fortran/example_04_basin_axis.cdl b/mydoc/examples/fortran/example_04_basin_axis.cdl new file mode 100644 index 0000000..c62e2fa --- /dev/null +++ b/mydoc/examples/fortran/example_04_basin_axis.cdl @@ -0,0 +1,106 @@ +netcdf htovgyre_tavg-u-hyb-sea_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + basin = 3 ; + lat = 3 ; + bnds = 2 ; + strlen = 21 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + char sector(basin, strlen) ; + sector:long_name = "Ocean Basin" ; + sector:standard_name = "region" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + float htovgyre(time, basin, lat) ; + htovgyre:standard_name = "northward_ocean_heat_transport_due_to_gyre" ; + htovgyre:long_name = "Northward Ocean Heat Transport Due to Gyre" ; + htovgyre:units = "W" ; + htovgyre:cell_methods = "depth: longitude: sum where sea (along a zig-zag grid path spanning a basin) time: mean" ; + htovgyre:missing_value = 1.e+20f ; + htovgyre:_FillValue = 1.e+20f ; + htovgyre:coordinates = "sector" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "sea" ; + :branded_variable = "htovgyre_tavg-u-hyb-sea" ; + :branding_suffix = "tavg-u-hyb-sea" ; + :creation_date = "2026-08-07T00:47:28Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:47:28Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hyb" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/fortran/output/example_04_basin_axis" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "ocean" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_ocean.json; Creation Date:(2026-07-21 13:16:24) MD5:734c6f53560fa60b7c1c21b38e5b9a3f" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/4c90e087-f0ec-4b17-b053-075386b92c40" ; + :variable_id = "htovgyre" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + sector = + "atlantic_arctic_ocean", + "indian_pacific_ocean ", + "global_ocean " ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + htovgyre = + -80, -84, -88, + -100, -104, -76, + -120, -92, -96, + -79, -83, -87, + -99, -103, -75, + -107, -111, -115 ; +} + diff --git a/mydoc/examples/fortran/example_04_basin_axis.f90 b/mydoc/examples/fortran/example_04_basin_axis.f90 new file mode 100644 index 0000000..35daf73 --- /dev/null +++ b/mydoc/examples/fortran/example_04_basin_axis.f90 @@ -0,0 +1,101 @@ +program example_04_basin_axis + use cmip7_fortran_common + implicit none + + integer, parameter :: nbasin = 3 + character(len=1024) :: output_dir + character(len=2048) :: tables_path + character(len=2048) :: input_path + character(len=21) :: basin_names(nbasin) + integer :: lat_id + integer :: time_id + integer :: basin_id + integer :: var_id + integer :: ierr + integer :: nul_pos + real :: heat_transport(nlat, nbasin, ntimes) + character(len=2048) :: filename + double precision :: lat(nlat) + double precision :: lat_bnds(2, nlat) + double precision :: time(ntimes) + double precision :: time_bnds(2, ntimes) + + call get_example_args(tables_path, input_path, output_dir) + + ierr = cmor_setup(inpath=trim(tables_path), & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR) + call check_status("cmor_setup", ierr) + + call load_shared_user_input(input_path, output_dir) + + ierr = cmor_load_table("CMIP7_ocean.json") + call check_id("cmor_load_table(CMIP7_ocean)", ierr) + + lat = (/ 10.0d0, 20.0d0, 30.0d0 /) + lat_bnds(:, 1) = (/ 5.0d0, 15.0d0 /) + lat_bnds(:, 2) = (/ 15.0d0, 25.0d0 /) + lat_bnds(:, 3) = (/ 25.0d0, 35.0d0 /) + + lat_id = cmor_axis(table="CMIP7_ocean.json", & + table_entry="latitude", & + units="degrees_north", & + length=nlat, & + coord_vals=lat, & + cell_bounds=lat_bnds) + call check_id("cmor_axis(latitude)", lat_id) + + time = (/ 15.5d0, 45.5d0 /) + time_bnds(:, 1) = (/ 0.0d0, 31.0d0 /) + time_bnds(:, 2) = (/ 31.0d0, 60.0d0 /) + time_id = cmor_axis(table="CMIP7_ocean.json", & + table_entry="time", & + units="days since 1979-01-01", & + length=ntimes, & + coord_vals=time, & + cell_bounds=time_bnds) + call check_id("cmor_axis(time)", time_id) + + basin_names(1) = "atlantic_arctic_ocean" + basin_names(2) = "indian_pacific_ocean" + basin_names(3) = "global_ocean" + basin_id = cmor_axis(table="CMIP7_ocean.json", & + table_entry="basin", & + units="", & + length=nbasin, & + coord_vals=basin_names) + call check_id("cmor_axis(basin)", basin_id) + + heat_transport(:, :, 1) = reshape((/ & + -80.0, -84.0, -88.0, & + -100.0, -104.0, -76.0, & + -120.0, -92.0, -96.0 /), & + (/ nlat, nbasin /)) + heat_transport(:, :, 2) = reshape((/ & + -79.0, -83.0, -87.0, & + -99.0, -103.0, -75.0, & + -107.0, -111.0, -115.0 /), & + (/ nlat, nbasin /)) + + var_id = cmor_variable(table="CMIP7_ocean.json", & + table_entry="htovgyre_tavg-u-hyb-sea", & + units="W", & + axis_ids=(/ lat_id, basin_id, time_id /), & + missing_value=missing_value) + call check_id("cmor_variable(htovgyre)", var_id) + call apply_cmip7_variable_metadata(var_id, tables_path, "ocean", & + "htovgyre_tavg-u-hyb-sea", "mon", "glb") + + ierr = cmor_write(var_id, heat_transport) + call check_status("cmor_write", ierr) + + filename = "" + ierr = cmor_close(var_id, file_name=filename) + call check_status("cmor_close(var)", ierr) + nul_pos = index(filename, char(0)) + if (nul_pos > 0) filename(nul_pos:) = " " + write(*, '(a)') trim(filename) + + ierr = cmor_close() + call check_status("cmor_close", ierr) +end program example_04_basin_axis diff --git a/mydoc/examples/fortran/example_05_hybrid_sigma_levels.cdl b/mydoc/examples/fortran/example_05_hybrid_sigma_levels.cdl new file mode 100644 index 0000000..df0881c --- /dev/null +++ b/mydoc/examples/fortran/example_05_hybrid_sigma_levels.cdl @@ -0,0 +1,205 @@ +netcdf cl_tavg-al-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lev = 5 ; + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lev(lev) ; + lev:bounds = "lev_bnds" ; + lev:units = "1" ; + lev:axis = "Z" ; + lev:positive = "down" ; + lev:long_name = "hybrid sigma pressure coordinate" ; + lev:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; + lev:formula = "p = a*p0 + b*ps" ; + lev:formula_terms = "p0: p0 a: a b: b ps: ps" ; + double lev_bnds(lev, bnds) ; + lev_bnds:formula = "p = a*p0 + b*ps" ; + lev_bnds:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; + lev_bnds:units = "1" ; + lev_bnds:formula_terms = "p0: p0 a: a_bnds b: b_bnds ps: ps" ; + double p0 ; + p0:standard_name = "reference_air_pressure_for_atmosphere_vertical_coordinate" ; + p0:long_name = "vertical coordinate formula term: reference pressure" ; + p0:units = "Pa" ; + double a(lev) ; + a:long_name = "vertical coordinate formula term: a" ; + double b(lev) ; + b:long_name = "vertical coordinate formula term: b" ; + float ps(time, lat, lon) ; + ps:standard_name = "air_pressure" ; + ps:long_name = "Surface Air Pressure" ; + ps:units = "Pa" ; + double a_bnds(lev, bnds) ; + a_bnds:long_name = "vertical coordinate formula term: a(k+1/2)" ; + double b_bnds(lev, bnds) ; + b_bnds:long_name = "vertical coordinate formula term: b(k+1/2)" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float cl(time, lev, lat, lon) ; + cl:standard_name = "cloud_area_fraction_in_atmosphere_layer" ; + cl:long_name = "Percentage Cloud Cover" ; + cl:units = "%" ; + cl:cell_methods = "area: time: mean" ; + cl:missing_value = 1.e+20f ; + cl:_FillValue = 1.e+20f ; + cl:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "cl_tavg-al-hxy-u" ; + :branding_suffix = "tavg-al-hxy-u" ; + :creation_date = "2026-08-07T00:47:29Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:47:29Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/fortran/output/example_05_hybrid_sigma_levels" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/a775c733-b6ab-40b3-af61-4e1ce146fd92" ; + :variable_id = "cl" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "al" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lev = 0.92, 0.72, 0.5, 0.3, 0.1 ; + + lev_bnds = + 1, 0.83, + 0.83, 0.61, + 0.61, 0.4, + 0.4, 0.2, + 0.2, 0 ; + + p0 = 100000 ; + + a = 0.12, 0.22, 0.3, 0.2, 0.1 ; + + b = 0.8, 0.5, 0.2, 0.1, 0 ; + + ps = + 97000, 97400, 97800, 98200, + 98600, 99000, 99400, 99800, + 100200, 100600, 101000, 101400, + 97100, 97500, 97900, 98300, + 98700, 99100, 99500, 99900, + 100300, 100700, 101100, 101500 ; + + a_bnds = + 0.06, 0.18, + 0.18, 0.26, + 0.26, 0.25, + 0.25, 0.15, + 0.15, 0 ; + + b_bnds = + 0.94, 0.65, + 0.65, 0.35, + 0.35, 0.15, + 0.15, 0.05, + 0.05, 0 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + cl = + 70, 70.4, 70.8, 71.2, + 68.8, 69.2, 69.60001, 70, + 67.6, 68, 68.4, 68.8, + 65, 65.4, 65.8, 66.2, + 63.8, 64.2, 64.6, 65, + 62.6, 63, 63.4, 63.8, + 60, 60.4, 60.8, 61.2, + 58.8, 59.2, 59.6, 60, + 57.6, 58, 58.4, 58.8, + 55, 55.4, 55.8, 56.2, + 53.8, 54.2, 54.6, 55, + 52.6, 53, 53.4, 53.8, + 50, 50.4, 50.8, 51.2, + 48.8, 49.2, 49.6, 50, + 47.6, 48, 48.4, 48.8, + 70.1, 70.5, 70.9, 71.3, + 68.9, 69.3, 69.7, 70.1, + 67.7, 68.1, 68.5, 68.89999, + 65.1, 65.5, 65.9, 66.3, + 63.9, 64.3, 64.7, 65.1, + 62.7, 63.1, 63.5, 63.9, + 60.1, 60.5, 60.9, 61.3, + 58.9, 59.3, 59.7, 60.1, + 57.7, 58.1, 58.5, 58.9, + 55.1, 55.5, 55.9, 56.3, + 53.9, 54.3, 54.7, 55.1, + 52.7, 53.1, 53.5, 53.9, + 50.1, 50.5, 50.9, 51.3, + 48.9, 49.3, 49.7, 50.1, + 47.7, 48.1, 48.5, 48.9 ; +} + diff --git a/mydoc/examples/fortran/example_05_hybrid_sigma_levels.f90 b/mydoc/examples/fortran/example_05_hybrid_sigma_levels.f90 new file mode 100644 index 0000000..2b7dcbe --- /dev/null +++ b/mydoc/examples/fortran/example_05_hybrid_sigma_levels.f90 @@ -0,0 +1,174 @@ +program example_05_hybrid_sigma_levels + use cmip7_fortran_common + implicit none + + integer, parameter :: nlev = 5 + character(len=1024) :: output_dir + character(len=2048) :: tables_path + character(len=2048) :: input_path + integer :: lat_id + integer :: lon_id + integer :: time_id + integer :: lev_id + integer :: ps_id + integer :: var_id + integer :: ierr + integer :: nul_pos + integer :: i + integer :: j + integer :: k + integer :: t + real :: cl(nlon, nlat, nlev, ntimes) + real :: ps(nlon, nlat, ntimes) + character(len=2048) :: filename + double precision :: lat(nlat) + double precision :: lon(nlon) + double precision :: time(ntimes) + double precision :: lat_bnds(2, nlat) + double precision :: lon_bnds(2, nlon) + double precision :: time_bnds(2, ntimes) + double precision :: lev(nlev) + double precision :: lev_bnds(nlev + 1) + double precision :: a_coeff(nlev) + double precision :: b_coeff(nlev) + double precision :: a_bnds(nlev + 1) + double precision :: b_bnds(nlev + 1) + double precision :: p0 + + call get_example_args(tables_path, input_path, output_dir) + + ierr = cmor_setup(inpath=trim(tables_path), & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR) + call check_status("cmor_setup", ierr) + + call load_shared_user_input(input_path, output_dir) + + ierr = cmor_load_table("CMIP7_atmos.json") + call check_id("cmor_load_table(CMIP7_atmos)", ierr) + + lat = (/ 10.0d0, 20.0d0, 30.0d0 /) + lat_bnds(:, 1) = (/ 5.0d0, 15.0d0 /) + lat_bnds(:, 2) = (/ 15.0d0, 25.0d0 /) + lat_bnds(:, 3) = (/ 25.0d0, 35.0d0 /) + + lon = (/ 0.0d0, 90.0d0, 180.0d0, 270.0d0 /) + lon_bnds(:, 1) = (/ -45.0d0, 45.0d0 /) + lon_bnds(:, 2) = (/ 45.0d0, 135.0d0 /) + lon_bnds(:, 3) = (/ 135.0d0, 225.0d0 /) + lon_bnds(:, 4) = (/ 225.0d0, 315.0d0 /) + + time = (/ 15.5d0, 45.5d0 /) + time_bnds(:, 1) = (/ 0.0d0, 31.0d0 /) + time_bnds(:, 2) = (/ 31.0d0, 60.0d0 /) + + lon_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="longitude", & + units="degrees_east", & + length=nlon, & + coord_vals=lon, & + cell_bounds=lon_bnds) + call check_id("cmor_axis(longitude)", lon_id) + + lat_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="latitude", & + units="degrees_north", & + length=nlat, & + coord_vals=lat, & + cell_bounds=lat_bnds) + call check_id("cmor_axis(latitude)", lat_id) + + time_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="time", & + units="days since 1979-01-01", & + length=ntimes, & + coord_vals=time, & + cell_bounds=time_bnds) + call check_id("cmor_axis(time)", time_id) + + lev = (/ 0.92d0, 0.72d0, 0.50d0, 0.30d0, 0.10d0 /) + lev_bnds = (/ 1.00d0, 0.83d0, 0.61d0, 0.40d0, 0.20d0, 0.00d0 /) + lev_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="standard_hybrid_sigma", & + units="1", & + length=nlev, & + coord_vals=lev, & + cell_bounds=lev_bnds) + call check_id("cmor_axis(standard_hybrid_sigma)", lev_id) + + a_coeff = (/ 0.12d0, 0.22d0, 0.30d0, 0.20d0, 0.10d0 /) + b_coeff = (/ 0.80d0, 0.50d0, 0.20d0, 0.10d0, 0.00d0 /) + a_bnds = (/ 0.06d0, 0.18d0, 0.26d0, 0.25d0, 0.15d0, 0.00d0 /) + b_bnds = (/ 0.94d0, 0.65d0, 0.35d0, 0.15d0, 0.05d0, 0.00d0 /) + p0 = 100000.0d0 + + ierr = cmor_zfactor(zaxis_id=lev_id, & + zfactor_name="a", & + axis_ids=(/ lev_id /), & + zfactor_values=a_coeff, & + zfactor_bounds=a_bnds) + call check_id("cmor_zfactor(a)", ierr) + + ierr = cmor_zfactor(zaxis_id=lev_id, & + zfactor_name="b", & + axis_ids=(/ lev_id /), & + zfactor_values=b_coeff, & + zfactor_bounds=b_bnds) + call check_id("cmor_zfactor(b)", ierr) + + ierr = cmor_zfactor(zaxis_id=lev_id, & + zfactor_name="p0", & + units="Pa", & + zfactor_values=p0) + call check_id("cmor_zfactor(p0)", ierr) + + ps_id = cmor_zfactor(zaxis_id=lev_id, & + zfactor_name="ps", & + axis_ids=(/ lon_id, lat_id, time_id /), & + units="Pa") + call check_id("cmor_zfactor(ps)", ps_id) + + do t = 1, ntimes + do j = 1, nlat + do i = 1, nlon + ps(i, j, t) = 97000.0 + 400.0 * real(i - 1) & + + 1600.0 * real(j - 1) + 100.0 * real(t - 1) + enddo + enddo + enddo + + do t = 1, ntimes + do k = 1, nlev + do j = 1, nlat + do i = 1, nlon + cl(i, j, k, t) = 75.0 - 5.0 * real(k) - 1.2 * real(j - 1) & + + 0.4 * real(i - 1) + 0.1 * real(t - 1) + enddo + enddo + enddo + enddo + + var_id = cmor_variable(table="CMIP7_atmos.json", & + table_entry="cl_tavg-al-hxy-u", & + units="%", & + axis_ids=(/ lon_id, lat_id, lev_id, time_id /), & + missing_value=missing_value) + call check_id("cmor_variable(cl)", var_id) + call apply_cmip7_variable_metadata(var_id, tables_path, "atmos", & + "cl_tavg-al-hxy-u", "mon", "glb") + + ierr = cmor_write(var_id, cl) + call check_status("cmor_write(cl)", ierr) + ierr = cmor_write(ps_id, ps, store_with=var_id) + call check_status("cmor_write(ps)", ierr) + + filename = "" + ierr = cmor_close(var_id, file_name=filename) + call check_status("cmor_close(var)", ierr) + nul_pos = index(filename, char(0)) + if (nul_pos > 0) filename(nul_pos:) = " " + write(*, '(a)') trim(filename) + + ierr = cmor_close() + call check_status("cmor_close", ierr) +end program example_05_hybrid_sigma_levels diff --git a/mydoc/examples/fortran/example_06_curvilinear_grid.cdl b/mydoc/examples/fortran/example_06_curvilinear_grid.cdl new file mode 100644 index 0000000..071561e --- /dev/null +++ b/mydoc/examples/fortran/example_06_curvilinear_grid.cdl @@ -0,0 +1,190 @@ +netcdf hfls_tavg-u-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + x = 4 ; + y = 3 ; + bnds = 2 ; + vertices = 4 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double x(x) ; + x:bounds = "x_bnds" ; + x:units = "m" ; + x:axis = "X" ; + x:long_name = "x coordinate of projection" ; + x:standard_name = "projection_x_coordinate" ; + double x_bnds(x, bnds) ; + double y(y) ; + y:bounds = "y_bnds" ; + y:units = "m" ; + y:axis = "Y" ; + y:long_name = "y coordinate of projection" ; + y:standard_name = "projection_y_coordinate" ; + double y_bnds(y, bnds) ; + int lambert_conformal_conic ; + lambert_conformal_conic:grid_mapping_name = "lambert_conformal_conic" ; + lambert_conformal_conic:standard_parallel = -20., 20. ; + lambert_conformal_conic:longitude_of_central_meridian = 175. ; + lambert_conformal_conic:latitude_of_projection_origin = 13. ; + lambert_conformal_conic:false_easting = 8. ; + lambert_conformal_conic:false_northing = 0. ; + double latitude(x, y) ; + latitude:standard_name = "latitude" ; + latitude:long_name = "latitude" ; + latitude:units = "degrees_north" ; + latitude:missing_value = 1.e+20 ; + latitude:_FillValue = 1.e+20 ; + latitude:bounds = "vertices_latitude" ; + double longitude(x, y) ; + longitude:standard_name = "longitude" ; + longitude:long_name = "longitude" ; + longitude:units = "degrees_east" ; + longitude:missing_value = 1.e+20 ; + longitude:_FillValue = 1.e+20 ; + longitude:bounds = "vertices_longitude" ; + double vertices_latitude(x, y, vertices) ; + vertices_latitude:units = "degrees_north" ; + vertices_latitude:missing_value = 1.e+20 ; + vertices_latitude:_FillValue = 1.e+20 ; + double vertices_longitude(x, y, vertices) ; + vertices_longitude:units = "degrees_east" ; + vertices_longitude:missing_value = 1.e+20 ; + vertices_longitude:_FillValue = 1.e+20 ; + float hfls(time, x, y) ; + hfls:standard_name = "surface_upward_latent_heat_flux" ; + hfls:long_name = "Surface Upward Latent Heat Flux" ; + hfls:units = "W m-2" ; + hfls:cell_methods = "area: time: mean" ; + hfls:history = "2026-08-07T00:47:29Z altered by CMOR: Reordered dimensions, original order: time y x." ; + hfls:missing_value = 1.e+20f ; + hfls:_FillValue = 1.e+20f ; + hfls:cell_measures = "area: areacella" ; + hfls:grid_mapping = "lambert_conformal_conic" ; + hfls:coordinates = "latitude longitude" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "hfls_tavg-u-hxy-u" ; + :branding_suffix = "tavg-u-hxy-u" ; + :creation_date = "2026-08-07T00:47:29Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:47:29Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/fortran/output/example_06_curvilinear_grid" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/75423cc2-95fe-459f-ab52-920d50b42956" ; + :variable_id = "hfls" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + x = 0, 10000, 20000, 30000 ; + + x_bnds = + -5000, 5000, + 5000, 15000, + 15000, 25000, + 25000, 35000 ; + + y = 0, 10000, 20000 ; + + y_bnds = + -5000, 5000, + 5000, 15000, + 15000, 25000 ; + + lambert_conformal_conic = _ ; + + latitude = + 10, 20, 30, + 8, 18, 28, + 6, 16, 26, + 4, 14, 24 ; + + longitude = + 280, 282, 284, + 290, 292, 294, + 300, 302, 304, + 310, 312, 314 ; + + vertices_latitude = + 5, 6, 15, 14, + 15, 16, 25, 24, + 25, 26, 35, 34, + 3, 4, 13, 12, + 13, 14, 23, 22, + 23, 24, 33, 32, + 1, 2, 11, 10, + 11, 12, 21, 20, + 21, 22, 31, 30, + -1, 0, 9, 8, + 9, 10, 19, 18, + 19, 20, 29, 28 ; + + vertices_longitude = + 275, 285, 285, 275, + 277, 287, 287, 277, + 279, 289, 289, 279, + 285, 295, 295, 285, + 287, 297, 297, 287, + 289, 299, 299, 289, + 295, 305, 305, 295, + 297, 307, 307, 297, + 299, 309, 309, 299, + 305, 315, 315, 305, + 307, 317, 317, 307, + 309, 319, 319, 309 ; + + hfls = + 80, 88, 96, + 82, 90, 98, + 84, 92, 100, + 86, 94, 102, + 81, 89, 97, + 83, 91, 99, + 85, 93, 101, + 87, 95, 103 ; +} + diff --git a/mydoc/examples/fortran/example_06_curvilinear_grid.f90 b/mydoc/examples/fortran/example_06_curvilinear_grid.f90 new file mode 100644 index 0000000..a261301 --- /dev/null +++ b/mydoc/examples/fortran/example_06_curvilinear_grid.f90 @@ -0,0 +1,145 @@ +program example_06_curvilinear_grid + use cmip7_fortran_common + implicit none + + integer, parameter :: nx = 4 + integer, parameter :: ny = 3 + integer, parameter :: nvertices = 4 + character(len=1024) :: output_dir + character(len=2048) :: tables_path + character(len=2048) :: input_path + integer :: x_id + integer :: y_id + integer :: time_id + integer :: grid_id + integer :: grid_table_id + integer :: var_id + integer :: ierr + integer :: nul_pos + integer :: i + integer :: j + integer :: t + real :: hfls(nx, ny, ntimes) + character(len=2048) :: filename + double precision :: x(nx) + double precision :: y(ny) + double precision :: x_bnds(2, nx) + double precision :: y_bnds(2, ny) + double precision :: latitude(nx, ny) + double precision :: longitude(nx, ny) + double precision :: latitude_vertices(nvertices, nx, ny) + double precision :: longitude_vertices(nvertices, nx, ny) + double precision :: time(ntimes) + double precision :: time_bnds(2, ntimes) + character(len=30) :: parameter_names(6) + character(len=1) :: parameter_units(6) + double precision :: parameter_values(6) + + call get_example_args(tables_path, input_path, output_dir) + + ierr = cmor_setup(inpath=trim(tables_path), & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR) + call check_status("cmor_setup", ierr) + + call load_shared_user_input(input_path, output_dir) + + grid_table_id = cmor_load_table("CMIP7_grids.json") + call check_id("cmor_load_table(CMIP7_grids)", grid_table_id) + call cmor_set_table(grid_table_id) + + x = (/ 0.0d0, 10000.0d0, 20000.0d0, 30000.0d0 /) + x_bnds(:, 1) = (/ -5000.0d0, 5000.0d0 /) + x_bnds(:, 2) = (/ 5000.0d0, 15000.0d0 /) + x_bnds(:, 3) = (/ 15000.0d0, 25000.0d0 /) + x_bnds(:, 4) = (/ 25000.0d0, 35000.0d0 /) + y = (/ 0.0d0, 10000.0d0, 20000.0d0 /) + y_bnds(:, 1) = (/ -5000.0d0, 5000.0d0 /) + y_bnds(:, 2) = (/ 5000.0d0, 15000.0d0 /) + y_bnds(:, 3) = (/ 15000.0d0, 25000.0d0 /) + + x_id = cmor_axis(table_entry="x", units="m", length=nx, & + coord_vals=x, cell_bounds=x_bnds) + call check_id("cmor_axis(x)", x_id) + y_id = cmor_axis(table_entry="y", units="m", length=ny, & + coord_vals=y, cell_bounds=y_bnds) + call check_id("cmor_axis(y)", y_id) + + do j = 1, ny + do i = 1, nx + latitude(i, j) = 10.0d0 * dble(j) - 2.0d0 * dble(i - 1) + longitude(i, j) = 280.0d0 + 10.0d0 * dble(i - 1) & + + 2.0d0 * dble(j - 1) + latitude_vertices(:, i, j) = (/ latitude(i, j) - 5.0d0, & + latitude(i, j) - 4.0d0, latitude(i, j) + 5.0d0, & + latitude(i, j) + 4.0d0 /) + longitude_vertices(:, i, j) = (/ longitude(i, j) - 5.0d0, & + longitude(i, j) + 5.0d0, longitude(i, j) + 5.0d0, & + longitude(i, j) - 5.0d0 /) + enddo + enddo + + grid_id = cmor_grid(axis_ids=(/ x_id, y_id /), & + latitude=latitude, & + longitude=longitude, & + latitude_vertices=latitude_vertices, & + longitude_vertices=longitude_vertices) + call check_grid_id("cmor_grid", grid_id) + + parameter_names = (/ "standard_parallel1 ", & + "longitude_of_central_meridian", & + "latitude_of_projection_origin", & + "false_easting ", & + "false_northing ", & + "standard_parallel2 " /) + parameter_units = (/ " ", " ", " ", " ", " ", " " /) + parameter_values = (/ -20.0d0, 175.0d0, 13.0d0, 8.0d0, 0.0d0, 20.0d0 /) + ierr = cmor_set_grid_mapping(grid_id, "lambert_conformal_conic", & + parameter_names, parameter_values, parameter_units) + call check_status("cmor_set_grid_mapping", ierr) + + ierr = cmor_load_table("CMIP7_atmos.json") + call check_id("cmor_load_table(CMIP7_atmos)", ierr) + time = (/ 15.5d0, 45.5d0 /) + time_bnds(:, 1) = (/ 0.0d0, 31.0d0 /) + time_bnds(:, 2) = (/ 31.0d0, 60.0d0 /) + time_id = cmor_axis(table="CMIP7_atmos.json", & + table_entry="time", & + units="days since 1979-01-01", & + length=ntimes, & + coord_vals=time, & + cell_bounds=time_bnds) + call check_id("cmor_axis(time)", time_id) + + do t = 1, ntimes + do j = 1, ny + do i = 1, nx + hfls(i, j, t) = 80.0 + 2.0 * real(i - 1) + 8.0 * real(j - 1) & + + real(t - 1) + enddo + enddo + enddo + + var_id = cmor_variable(table="CMIP7_atmos.json", & + table_entry="hfls_tavg-u-hxy-u", & + units="W m-2", & + axis_ids=(/ grid_id, time_id /), & + positive="up", & + missing_value=missing_value) + call check_id("cmor_variable(hfls)", var_id) + call apply_cmip7_variable_metadata(var_id, tables_path, "atmos", & + "hfls_tavg-u-hxy-u", "mon", "glb") + + ierr = cmor_write(var_id, hfls) + call check_status("cmor_write", ierr) + + filename = "" + ierr = cmor_close(var_id, file_name=filename) + call check_status("cmor_close(var)", ierr) + nul_pos = index(filename, char(0)) + if (nul_pos > 0) filename(nul_pos:) = " " + write(*, '(a)') trim(filename) + + ierr = cmor_close() + call check_status("cmor_close", ierr) +end program example_06_curvilinear_grid diff --git a/mydoc/examples/fortran/example_07_fixed_field_rootd.cdl b/mydoc/examples/fortran/example_07_fixed_field_rootd.cdl new file mode 100644 index 0000000..b2a076e --- /dev/null +++ b/mydoc/examples/fortran/example_07_fixed_field_rootd.cdl @@ -0,0 +1,95 @@ +netcdf rootd_ti-u-hxy-lnd_fx_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1 { +dimensions: + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float rootd(lat, lon) ; + rootd:standard_name = "root_depth" ; + rootd:long_name = "Maximum Root Depth" ; + rootd:units = "m" ; + rootd:cell_methods = "area: mean where land" ; + rootd:missing_value = 1.e+20f ; + rootd:_FillValue = 1.e+20f ; + rootd:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "lnd" ; + :branded_variable = "rootd_ti-u-hxy-lnd" ; + :branding_suffix = "ti-u-hxy-lnd" ; + :creation_date = "2026-08-07T00:47:30Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "fx" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:47:30Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :outpath = "/Users/mauzey1/Desktop/github/cmor3_documentation/mydoc/examples/fortran/output/example_07_fixed_field_rootd" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "land" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_land.json; Creation Date:(2026-07-21 13:16:24) MD5:ea523449976b1c3cc3c14c1492f2fb74" ; + :temporal_label = "ti" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/fc175e85-c7a1-4461-a35b-6bd44fcb66db" ; + :variable_id = "rootd" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + rootd = + 0.5, 0.45, _, 0.55, + 0.6, 0.6, _, 0.55, + _, 0.45, 0.5, 0.5 ; +} + diff --git a/mydoc/examples/fortran/example_07_fixed_field_rootd.f90 b/mydoc/examples/fortran/example_07_fixed_field_rootd.f90 new file mode 100644 index 0000000..3b0a71a --- /dev/null +++ b/mydoc/examples/fortran/example_07_fixed_field_rootd.f90 @@ -0,0 +1,86 @@ +program example_07_fixed_field_rootd + use cmip7_fortran_common + implicit none + + character(len=1024) :: output_dir + character(len=2048) :: tables_path + character(len=2048) :: input_path + integer :: lat_id + integer :: lon_id + integer :: var_id + integer :: ierr + integer :: nul_pos + real :: rootd(nlon, nlat) + character(len=2048) :: filename + double precision :: lat(nlat) + double precision :: lon(nlon) + double precision :: lat_bnds(2, nlat) + double precision :: lon_bnds(2, nlon) + + call get_example_args(tables_path, input_path, output_dir) + + ierr = cmor_setup(inpath=trim(tables_path), & + netcdf_file_action=CMOR_REPLACE, & + exit_control=CMOR_EXIT_ON_MAJOR) + call check_status("cmor_setup", ierr) + + call load_shared_user_input(input_path, output_dir, "fx") + + ierr = cmor_load_table("CMIP7_land.json") + call check_id("cmor_load_table(CMIP7_land)", ierr) + + lat = (/ 10.0d0, 20.0d0, 30.0d0 /) + lat_bnds(:, 1) = (/ 5.0d0, 15.0d0 /) + lat_bnds(:, 2) = (/ 15.0d0, 25.0d0 /) + lat_bnds(:, 3) = (/ 25.0d0, 35.0d0 /) + + lon = (/ 0.0d0, 90.0d0, 180.0d0, 270.0d0 /) + lon_bnds(:, 1) = (/ -45.0d0, 45.0d0 /) + lon_bnds(:, 2) = (/ 45.0d0, 135.0d0 /) + lon_bnds(:, 3) = (/ 135.0d0, 225.0d0 /) + lon_bnds(:, 4) = (/ 225.0d0, 315.0d0 /) + + lon_id = cmor_axis(table="CMIP7_land.json", & + table_entry="longitude", & + units="degrees_east", & + length=nlon, & + coord_vals=lon, & + cell_bounds=lon_bnds) + call check_id("cmor_axis(longitude)", lon_id) + + lat_id = cmor_axis(table="CMIP7_land.json", & + table_entry="latitude", & + units="degrees_north", & + length=nlat, & + coord_vals=lat, & + cell_bounds=lat_bnds) + call check_id("cmor_axis(latitude)", lat_id) + + rootd = reshape((/ & + 0.50, 0.45, missing_value, 0.55, & + 0.60, 0.60, missing_value, 0.55, & + missing_value, 0.45, 0.50, 0.50 /), & + (/ nlon, nlat /)) + + var_id = cmor_variable(table="CMIP7_land.json", & + table_entry="rootd_ti-u-hxy-lnd", & + units="m", & + axis_ids=(/ lon_id, lat_id /), & + missing_value=missing_value) + call check_id("cmor_variable(rootd)", var_id) + call apply_cmip7_variable_metadata(var_id, tables_path, "land", & + "rootd_ti-u-hxy-lnd", "fx", "glb") + + ierr = cmor_write(var_id, rootd) + call check_status("cmor_write", ierr) + + filename = "" + ierr = cmor_close(var_id, file_name=filename) + call check_status("cmor_close(var)", ierr) + nul_pos = index(filename, char(0)) + if (nul_pos > 0) filename(nul_pos:) = " " + write(*, '(a)') trim(filename) + + ierr = cmor_close() + call check_status("cmor_close", ierr) +end program example_07_fixed_field_rootd diff --git a/mydoc/examples/fortran/run_examples.sh b/mydoc/examples/fortran/run_examples.sh new file mode 100755 index 0000000..a5351b2 --- /dev/null +++ b/mydoc/examples/fortran/run_examples.sh @@ -0,0 +1,122 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +RUN_DIR="${RUN_DIR:-$PWD}" +TABLES_PATH="${CMOR_TABLES_PATH:-$RUN_DIR/cmip7-cmor-tables/tables}" +INPUT_PATH="${CMOR_INPUT_PATH:-$RUN_DIR/CMIP7_input_example.json}" +OUTPUT_ROOT="$SCRIPT_DIR/output" +BUILD_DIR="${BUILD_DIR:-$SCRIPT_DIR/build}" + +cd "$SCRIPT_DIR" + +if [[ -z "${CONDA_PREFIX:-}" ]]; then + echo "Activate your conda environment or run: conda run -n $0" >&2 + exit 2 +fi + +detect_fortran_compiler() { + if [[ -n "${FC:-}" ]]; then + command -v "$FC" >/dev/null 2>&1 || { + echo "FC is set to '$FC', but that compiler was not found" >&2 + exit 2 + } + echo "$FC" + return + fi + + local compiler + for compiler in "$CONDA_PREFIX"/bin/*gfortran "$CONDA_PREFIX"/bin/gfortran; do + if [[ -x "$compiler" ]]; then + echo "$compiler" + return + fi + done + + if command -v gfortran >/dev/null 2>&1; then + command -v gfortran + return + fi + + echo "Could not find a Fortran compiler. Install gfortran in the active conda environment or set FC." >&2 + exit 2 +} + +mkdir -p "$BUILD_DIR" "$OUTPUT_ROOT" + +if [[ ! -d "$TABLES_PATH" ]]; then + echo "Could not find CMIP7 tables under $TABLES_PATH. Clone cmip7-cmor-tables or set CMOR_TABLES_PATH." >&2 + exit 2 +fi + +if [[ ! -f "$INPUT_PATH" ]]; then + echo "Could not find CMIP7 user input JSON at $INPUT_PATH. Set CMOR_INPUT_PATH to override it." >&2 + exit 2 +fi + +FC="$(detect_fortran_compiler)" +CMOR_PREFIX="${CMOR_PREFIX:-$CONDA_PREFIX}" +CMOR_MOD_DIR="${CMOR_MOD_DIR:-$CMOR_PREFIX/include}" + +if [[ -n "${CMOR_LIB:-}" ]]; then + CMOR_LINK_FLAGS=("$CMOR_LIB") +elif [[ -f "$CMOR_PREFIX/lib/libcmor.a" ]]; then + CMOR_LINK_FLAGS=("$CMOR_PREFIX/lib/libcmor.a") +elif [[ -f "$CMOR_PREFIX/lib/libcmor.dylib" || -f "$CMOR_PREFIX/lib/libcmor.so" ]]; then + CMOR_LINK_FLAGS=("-L$CMOR_PREFIX/lib" "-lcmor") +else + echo "Could not find CMOR in $CMOR_PREFIX. Install cmor in the active conda environment or set CMOR_PREFIX/CMOR_LIB." >&2 + exit 2 +fi + +if [[ ! -f "$CMOR_MOD_DIR/cmor_users_functions.mod" ]]; then + echo "Could not find cmor_users_functions.mod in $CMOR_MOD_DIR. Install cmor in the active conda environment or set CMOR_MOD_DIR." >&2 + exit 2 +fi + +FFLAGS_DEFAULT="-g -O2 -ffree-line-length-none" +FFLAGS="${FFLAGS:-$FFLAGS_DEFAULT}" +EXTRA_LDFLAGS="${EXTRA_LDFLAGS:-}" +LINK_DIRS=("$CMOR_PREFIX/lib") +if [[ "$CONDA_PREFIX/lib" != "$CMOR_PREFIX/lib" ]]; then + LINK_DIRS+=("$CONDA_PREFIX/lib") +fi + +LINK_FLAGS=("${CMOR_LINK_FLAGS[@]}") +for link_dir in "${LINK_DIRS[@]}"; do + LINK_FLAGS+=("-L$link_dir") +done +LINK_FLAGS+=("-lnetcdf" "-ludunits2" "-ljson-c" "-luuid" "-lm") +for link_dir in "${LINK_DIRS[@]}"; do + if [[ "$(uname -s)" != "Darwin" || "$link_dir" != "$CONDA_PREFIX/lib" ]]; then + LINK_FLAGS+=("-Wl,-rpath,$link_dir") + fi +done + +INCLUDES=("-I$CMOR_MOD_DIR" "-I$BUILD_DIR" "-I$CONDA_PREFIX/include") +COMMON_SRC="$SCRIPT_DIR/cmip7_fortran_common.f90" + +examples=( + example_01_regular_grid_tos + example_02_pressure_levels + example_03_scalar_height_tas + example_04_basin_axis + example_05_hybrid_sigma_levels + example_06_curvilinear_grid + example_07_fixed_field_rootd +) + +for example in "${examples[@]}"; do + src="$SCRIPT_DIR/$example.f90" + exe="$BUILD_DIR/$example" + run_output="$OUTPUT_ROOT/$example" + mkdir -p "$run_output" + + echo "Compiling $example" + "$FC" $FFLAGS -J "$BUILD_DIR" "${INCLUDES[@]}" "$COMMON_SRC" "$src" "${LINK_FLAGS[@]}" $EXTRA_LDFLAGS -o "$exe" + + echo "Running $example" + "$exe" "$TABLES_PATH" "$INPUT_PATH" "$run_output" +done + +echo "Wrote CMIP7 example output under $OUTPUT_ROOT" diff --git a/mydoc/examples/python/.gitignore b/mydoc/examples/python/.gitignore new file mode 100644 index 0000000..ea1472e --- /dev/null +++ b/mydoc/examples/python/.gitignore @@ -0,0 +1 @@ +output/ diff --git a/mydoc/examples/python/README.md b/mydoc/examples/python/README.md new file mode 100644 index 0000000..060d4cc --- /dev/null +++ b/mydoc/examples/python/README.md @@ -0,0 +1,40 @@ +# Python examples + +## Setup + +Install CMOR to your Python environment. + +```bash +pip install cmor --extra-index-url https://pcmdi.github.io/cmor +``` + +## CMIP7 tables + +The examples also need the CMIP7 tables. Clone the tables into the directory +where you run the examples. + +```bash +git clone https://github.com/WCRP-CMIP/cmip7-cmor-tables.git +``` + +## Run + +Run one of the Python files in this directory from a working directory that +contains the `cmip7-cmor-tables` repository. + +```bash +python example_01_usual_2d_field.py +``` + +The examples expect tables under `./cmip7-cmor-tables/tables` and use the +shared CMIP7 user input JSON from `../CMIP7_input_example.json`. + +Use `CMOR_TABLES_PATH` when the CMIP7 tables are not under +`./cmip7-cmor-tables/tables`. + +```bash +CMOR_TABLES_PATH=/path/to/cmip7-cmor-tables/tables python example_01_usual_2d_field.py +``` + +Use `--output-dir` to write generated NetCDF files somewhere other than +`./output`. diff --git a/mydoc/examples/python/example_01_usual_2d_field.cdl b/mydoc/examples/python/example_01_usual_2d_field.cdl new file mode 100644 index 0000000..f0bc605 --- /dev/null +++ b/mydoc/examples/python/example_01_usual_2d_field.cdl @@ -0,0 +1,112 @@ +netcdf tos_tavg-u-hxy-sea_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float tos(time, lat, lon) ; + tos:standard_name = "sea_surface_temperature" ; + tos:long_name = "Sea Surface Temperature" ; + tos:units = "degC" ; + tos:cell_methods = "area: mean where sea time: mean" ; + tos:missing_value = 1.e+20f ; + tos:_FillValue = 1.e+20f ; + tos:cell_measures = "area: areacello" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "sea" ; + :branded_variable = "tos_tavg-u-hxy-sea" ; + :branding_suffix = "tavg-u-hxy-sea" ; + :creation_date = "2026-08-07T00:46:47Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacello" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:46:47Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "ocean" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_ocean.json; Creation Date:(2026-07-21 13:16:24) MD5:734c6f53560fa60b7c1c21b38e5b9a3f" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/39cb4d40-2a52-4c7e-a53f-c6a925306c32" ; + :variable_id = "tos" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + tos = + 254.0895, 258.4085, _, 258.7101, + 258.668, 258.299, _, 255.0432, + 253.7254, 251.246, _, 255.4808, + 254.0995, 258.5085, _, 258.8101, + 258.868, 258.499, _, 255.2432, + 254.0254, 251.546, _, 255.7808 ; +} + diff --git a/mydoc/examples/python/example_01_usual_2d_field.py b/mydoc/examples/python/example_01_usual_2d_field.py new file mode 100644 index 0000000..69226e3 --- /dev/null +++ b/mydoc/examples/python/example_01_usual_2d_field.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + +import cmor +import numpy as np + +EXAMPLE_DIR = Path(__file__).resolve().parent +RUN_DIR = Path.cwd() +DEFAULT_TABLES_PATH = RUN_DIR / "cmip7-cmor-tables" / "tables" +TABLES_PATH = Path(os.environ.get("CMOR_TABLES_PATH", DEFAULT_TABLES_PATH)) +INPUT_PATH = EXAMPLE_DIR.parent / "CMIP7_input_example.json" + + +def configure( + output_dir: Path, + frequency: str = "mon", + realization_index: str = "r1", + forcing_index: str = "f1", +) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + user_input = json.loads(INPUT_PATH.read_text()) + user_input["outpath"] = str(output_dir) + user_input["frequency"] = frequency + user_input["realization_index"] = realization_index + user_input["forcing_index"] = forcing_index + input_path = output_dir / "CMIP7_input_example.json" + input_path.write_text(json.dumps(user_input, indent=2, sort_keys=True)) + cmor.setup(inpath=str(TABLES_PATH), netcdf_file_action=cmor.CMOR_REPLACE) + cmor.dataset_json(str(input_path)) + + +def apply_cmip7_variable_metadata( + var_id: int, + realm: str, + table_entry: str, + frequency: str, + region: str, +) -> str: + compound_name = ".".join( + [realm] + table_entry.split("_") + [frequency, region] + ) + + with (TABLES_PATH / "CMIP7_cell_measures.json").open() as handle: + cell_measures = json.load(handle)["cell_measures"] + cmor.set_variable_attribute( + var_id, + "cell_measures", + "c", + cell_measures.get(compound_name, ""), + ) + + with (TABLES_PATH / "CMIP7_long_name_overrides.json").open() as handle: + long_name_overrides = json.load(handle)["long_name_overrides"] + if compound_name in long_name_overrides: + cmor.set_variable_attribute( + var_id, + "long_name", + "c", + long_name_overrides[compound_name], + ) + + return compound_name + + +def write_example(output_dir: Path) -> str: + configure(output_dir) + cmor.load_table("CMIP7_ocean.json") + lat_id = cmor.axis( + "latitude", + "degrees_north", + coord_vals=np.array([10.0, 20.0, 30.0], dtype="d"), + cell_bounds=np.array([5.0, 15.0, 25.0, 35.0], dtype="d"), + ) + lon_id = cmor.axis( + "longitude", + "degrees_east", + coord_vals=np.array([0.0, 90.0, 180.0, 270.0], dtype="d"), + cell_bounds=np.array([-45.0, 45.0, 135.0, 225.0, 315.0], dtype="d"), + ) + time_id = cmor.axis( + "time", + "days since 1979-01-01", + coord_vals=np.array([15.5, 45.5], dtype="d"), + cell_bounds=np.array([0.0, 31.0, 60.0], dtype="d"), + ) + data = np.array( + [ + [254.0895, 258.4085, 1.0e20, 258.7101], + [258.6680, 258.2990, 1.0e20, 255.0432], + [253.7254, 251.2460, 1.0e20, 255.4808], + [254.0995, 258.5085, 1.0e20, 258.8101], + [258.8680, 258.4990, 1.0e20, 255.2432], + [254.0254, 251.5460, 1.0e20, 255.7808], + ], + dtype="f4", + ).reshape(2, 3, 4) + var_id = cmor.variable( + "tos_tavg-u-hxy-sea", + "degC", + [time_id, lat_id, lon_id], + missing_value=1.0e20, + ) + apply_cmip7_variable_metadata( + var_id, + "ocean", + "tos_tavg-u-hxy-sea", + "mon", + "glb", + ) + cmor.write(var_id, data) + path = cmor.close(var_id, file_name=True) + cmor.close() + return path + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Write CMIP7 example 1 with CMOR." + ) + parser.add_argument( + "--output-dir", + type=Path, + default=Path(__file__).resolve().parent / "output", + ) + args = parser.parse_args() + print(write_example(args.output_dir)) + + +if __name__ == "__main__": + main() diff --git a/mydoc/examples/python/example_02_pressure_levels.cdl b/mydoc/examples/python/example_02_pressure_levels.cdl new file mode 100644 index 0000000..6a950c4 --- /dev/null +++ b/mydoc/examples/python/example_02_pressure_levels.cdl @@ -0,0 +1,230 @@ +netcdf ta_tavg-p19-hxy-air_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + plev = 19 ; + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double plev(plev) ; + plev:units = "Pa" ; + plev:axis = "Z" ; + plev:positive = "down" ; + plev:long_name = "Pressure Levels (19)" ; + plev:standard_name = "air_pressure" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float ta(time, plev, lat, lon) ; + ta:standard_name = "air_temperature" ; + ta:long_name = "Air Temperature" ; + ta:units = "K" ; + ta:cell_methods = "area: time: mean where air" ; + ta:missing_value = 1.e+20f ; + ta:_FillValue = 1.e+20f ; + ta:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "air" ; + :branded_variable = "ta_tavg-p19-hxy-air" ; + :branding_suffix = "tavg-p19-hxy-air" ; + :creation_date = "2026-08-07T00:46:48Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:46:48Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/480e7c54-803d-4c73-9ffd-62eb07c5d9dc" ; + :variable_id = "ta" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "p19" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + plev = 100000, 92500, 85000, 70000, 60000, 50000, 40000, 30000, 25000, + 20000, 15000, 10000, 7000, 5000, 3000, 2000, 1000, 500, 100 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + ta = + _, 250.0549, 250.1099, 250.1648, + 250.2198, 250.2747, 250.3297, 250.3846, + 250.4396, 250.4945, 250.5495, 250.6044, + 250.6593, 250.7143, 250.7692, 250.8242, + 250.8791, 250.9341, 250.989, 251.044, + 251.0989, 251.1538, 251.2088, 251.2637, + 251.3187, 251.3736, 251.4286, 251.4835, + 251.5385, 251.5934, 251.6483, 251.7033, + 251.7582, 251.8132, 251.8681, 251.9231, + 251.978, 252.033, 252.0879, 252.1429, + 252.1978, 252.2527, 252.3077, 252.3626, + 252.4176, 252.4725, 252.5275, 252.5824, + 252.6374, 252.6923, 252.7473, 252.8022, + 252.8571, 252.9121, 252.967, 253.022, + 253.0769, 253.1319, 253.1868, 253.2418, + 253.2967, 253.3517, 253.4066, 253.4615, + 253.5165, 253.5714, 253.6264, 253.6813, + 253.7363, 253.7912, 253.8462, 253.9011, + 253.956, 254.011, 254.0659, 254.1209, + 254.1758, 254.2308, 254.2857, 254.3407, + 254.3956, 254.4505, 254.5055, 254.5604, + 254.6154, 254.6703, 254.7253, 254.7802, + 254.8352, 254.8901, 254.9451, 255, + 255.0549, 255.1099, 255.1648, 255.2198, + 255.2747, 255.3297, 255.3846, 255.4396, + 255.4945, 255.5495, 255.6044, 255.6593, + 255.7143, 255.7692, 255.8242, 255.8791, + 255.9341, 255.989, 256.0439, 256.0989, + 256.1538, 256.2088, 256.2637, 256.3187, + 256.3736, 256.4286, 256.4835, 256.5385, + 256.5934, 256.6483, 256.7033, 256.7582, + 256.8132, 256.8681, 256.9231, 256.978, + 257.033, 257.0879, 257.1429, 257.1978, + 257.2527, 257.3077, 257.3626, 257.4176, + 257.4725, 257.5275, 257.5824, 257.6374, + 257.6923, 257.7473, 257.8022, 257.8571, + 257.9121, 257.967, 258.022, 258.0769, + 258.1319, 258.1868, 258.2418, 258.2967, + 258.3517, 258.4066, 258.4615, 258.5165, + 258.5714, 258.6264, 258.6813, 258.7363, + 258.7912, 258.8462, 258.9011, 258.9561, + 259.011, 259.0659, 259.1209, 259.1758, + 259.2308, 259.2857, 259.3407, 259.3956, + 259.4506, 259.5055, 259.5604, 259.6154, + 259.6703, 259.7253, 259.7802, 259.8352, + 259.8901, 259.9451, 260, 260.0549, + 260.1099, 260.1648, 260.2198, 260.2747, + 260.3297, 260.3846, 260.4396, 260.4945, + 260.5494, 260.6044, 260.6593, 260.7143, + 260.7692, 260.8242, 260.8791, 260.9341, + 260.989, 261.0439, 261.0989, 261.1538, + 261.2088, 261.2637, 261.3187, 261.3736, + 261.4286, 261.4835, 261.5385, 261.5934, + 261.6483, 261.7033, 261.7582, 261.8132, + 261.8681, 261.9231, 261.978, 262.033, + 262.0879, 262.1429, 262.1978, 262.2527, + 262.3077, 262.3626, 262.4176, 262.4725, + 262.5275, 262.5824, 262.6374, 262.6923, + 262.7473, 262.8022, 262.8571, 262.9121, + 262.967, 263.022, 263.0769, 263.1319, + 263.1868, 263.2418, 263.2967, 263.3517, + 263.4066, 263.4615, 263.5165, 263.5714, + 263.6264, 263.6813, 263.7363, 263.7912, + 263.8462, 263.9011, 263.9561, 264.011, + 264.0659, 264.1209, 264.1758, 264.2308, + 264.2857, 264.3407, 264.3956, 264.4506, + 264.5055, 264.5604, 264.6154, 264.6703, + 264.7253, 264.7802, 264.8352, 264.8901, + 264.9451, 265, 265.0549, 265.1099, + 265.1648, 265.2198, 265.2747, 265.3297, + 265.3846, 265.4396, 265.4945, 265.5494, + 265.6044, 265.6593, 265.7143, 265.7692, + 265.8242, 265.8791, 265.9341, 265.989, + 266.0439, 266.0989, 266.1538, 266.2088, + 266.2637, 266.3187, 266.3736, 266.4286, + 266.4835, 266.5385, 266.5934, 266.6483, + 266.7033, 266.7582, 266.8132, 266.8681, + 266.9231, 266.978, 267.033, 267.0879, + 267.1429, 267.1978, 267.2527, 267.3077, + 267.3626, 267.4176, 267.4725, 267.5275, + 267.5824, 267.6374, 267.6923, 267.7473, + 267.8022, 267.8571, 267.9121, 267.967, + 268.022, 268.0769, 268.1319, 268.1868, + 268.2418, 268.2967, 268.3517, 268.4066, + 268.4615, 268.5165, 268.5714, 268.6264, + 268.6813, 268.7363, 268.7912, 268.8462, + 268.9011, 268.9561, 269.011, 269.0659, + 269.1209, 269.1758, 269.2308, 269.2857, + 269.3407, 269.3956, 269.4506, 269.5055, + 269.5604, 269.6154, 269.6703, 269.7253, + 269.7802, 269.8352, 269.8901, 269.9451, + 270, 270.0549, 270.1099, 270.1648, + 270.2198, 270.2747, 270.3297, 270.3846, + 270.4396, 270.4945, 270.5494, 270.6044, + 270.6593, 270.7143, 270.7692, 270.8242, + 270.8791, 270.9341, 270.989, 271.0439, + 271.0989, 271.1538, 271.2088, 271.2637, + 271.3187, 271.3736, 271.4286, 271.4835, + 271.5385, 271.5934, 271.6483, 271.7033, + 271.7582, 271.8132, 271.8681, 271.9231, + 271.978, 272.033, 272.0879, 272.1429, + 272.1978, 272.2527, 272.3077, 272.3626, + 272.4176, 272.4725, 272.5275, 272.5824, + 272.6374, 272.6923, 272.7473, 272.8022, + 272.8571, 272.9121, 272.967, 273.022, + 273.0769, 273.1319, 273.1868, 273.2418, + 273.2967, 273.3517, 273.4066, 273.4615, + 273.5165, 273.5714, 273.6264, 273.6813, + 273.7363, 273.7912, 273.8462, 273.9011, + 273.9561, 274.011, 274.0659, 274.1209, + 274.1758, 274.2308, 274.2857, 274.3407, + 274.3956, 274.4506, 274.5055, 274.5604, + 274.6154, 274.6703, 274.7253, 274.7802, + 274.8352, 274.8901, 274.9451, 275 ; +} + diff --git a/mydoc/examples/python/example_02_pressure_levels.py b/mydoc/examples/python/example_02_pressure_levels.py new file mode 100644 index 0000000..dc5534d --- /dev/null +++ b/mydoc/examples/python/example_02_pressure_levels.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + +import cmor +import numpy as np + +EXAMPLE_DIR = Path(__file__).resolve().parent +RUN_DIR = Path.cwd() +DEFAULT_TABLES_PATH = RUN_DIR / "cmip7-cmor-tables" / "tables" +TABLES_PATH = Path(os.environ.get("CMOR_TABLES_PATH", DEFAULT_TABLES_PATH)) +INPUT_PATH = EXAMPLE_DIR.parent / "CMIP7_input_example.json" + + +def configure( + output_dir: Path, + frequency: str = "mon", + realization_index: str = "r1", + forcing_index: str = "f1", +) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + user_input = json.loads(INPUT_PATH.read_text()) + user_input["outpath"] = str(output_dir) + user_input["frequency"] = frequency + user_input["realization_index"] = realization_index + user_input["forcing_index"] = forcing_index + input_path = output_dir / "CMIP7_input_example.json" + input_path.write_text(json.dumps(user_input, indent=2, sort_keys=True)) + cmor.setup(inpath=str(TABLES_PATH), netcdf_file_action=cmor.CMOR_REPLACE) + cmor.dataset_json(str(input_path)) + + +def apply_cmip7_variable_metadata( + var_id: int, + realm: str, + table_entry: str, + frequency: str, + region: str, +) -> str: + compound_name = ".".join( + [realm] + table_entry.split("_") + [frequency, region] + ) + + with (TABLES_PATH / "CMIP7_cell_measures.json").open() as handle: + cell_measures = json.load(handle)["cell_measures"] + cmor.set_variable_attribute( + var_id, + "cell_measures", + "c", + cell_measures.get(compound_name, ""), + ) + + with (TABLES_PATH / "CMIP7_long_name_overrides.json").open() as handle: + long_name_overrides = json.load(handle)["long_name_overrides"] + if compound_name in long_name_overrides: + cmor.set_variable_attribute( + var_id, + "long_name", + "c", + long_name_overrides[compound_name], + ) + + return compound_name + + +def write_example(output_dir: Path) -> str: + configure(output_dir) + cmor.load_table("CMIP7_atmos.json") + lat_id = cmor.axis( + "latitude", + "degrees_north", + coord_vals=np.array([10.0, 20.0, 30.0], dtype="d"), + cell_bounds=np.array([5.0, 15.0, 25.0, 35.0], dtype="d"), + ) + lon_id = cmor.axis( + "longitude", + "degrees_east", + coord_vals=np.array([0.0, 90.0, 180.0, 270.0], dtype="d"), + cell_bounds=np.array([-45.0, 45.0, 135.0, 225.0, 315.0], dtype="d"), + ) + time_id = cmor.axis( + "time", + "days since 1979-01-01", + coord_vals=np.array([15.5, 45.5], dtype="d"), + cell_bounds=np.array([0.0, 31.0, 60.0], dtype="d"), + ) + plev_id = cmor.axis( + "plev19", + "Pa", + coord_vals=np.array( + [ + 100000.0, + 92500.0, + 85000.0, + 70000.0, + 60000.0, + 50000.0, + 40000.0, + 30000.0, + 25000.0, + 20000.0, + 15000.0, + 10000.0, + 7000.0, + 5000.0, + 3000.0, + 2000.0, + 1000.0, + 500.0, + 100.0, + ], + dtype="d", + ), + ) + var_id = cmor.variable( + "ta_tavg-p19-hxy-air", + "K", + [time_id, plev_id, lat_id, lon_id], + missing_value=1.0e20, + ) + apply_cmip7_variable_metadata( + var_id, + "atmos", + "ta_tavg-p19-hxy-air", + "mon", + "glb", + ) + data = np.linspace( + 250.0, + 275.0, + 2 * 19 * 3 * 4, + dtype="f4", + ).reshape(2, 19, 3, 4) + data[0, 0, 0, 0] = np.float32(1.0e20) + cmor.write(var_id, data) + path = cmor.close(var_id, file_name=True) + cmor.close() + return path + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Write CMIP7 example 2 with CMOR." + ) + parser.add_argument( + "--output-dir", + type=Path, + default=Path(__file__).resolve().parent / "output", + ) + args = parser.parse_args() + print(write_example(args.output_dir)) + + +if __name__ == "__main__": + main() diff --git a/mydoc/examples/python/example_03_scalar_dimension.cdl b/mydoc/examples/python/example_03_scalar_dimension.cdl new file mode 100644 index 0000000..ff0e6bc --- /dev/null +++ b/mydoc/examples/python/example_03_scalar_dimension.cdl @@ -0,0 +1,122 @@ +netcdf tas_tavg-h2m-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r9i1p1f2_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + double height ; + height:units = "m" ; + height:axis = "Z" ; + height:positive = "up" ; + height:long_name = "height" ; + height:standard_name = "height" ; + float tas(time, lat, lon) ; + tas:standard_name = "air_temperature" ; + tas:long_name = "Near-Surface Air Temperature" ; + tas:units = "K" ; + tas:cell_methods = "area: time: mean" ; + tas:history = "2026-08-07T00:46:49Z altered by CMOR: Treated scalar dimension: \'height\'." ; + tas:coordinates = "height" ; + tas:missing_value = 1.e+20f ; + tas:_FillValue = 1.e+20f ; + tas:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "tas_tavg-h2m-hxy-u" ; + :branding_suffix = "tavg-h2m-hxy-u" ; + :creation_date = "2026-08-07T00:46:49Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f2" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:46:49Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r9" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/d4e73969-87ad-4f16-abfa-5fc650c54297" ; + :variable_id = "tas" ; + :variant_label = "r9i1p1f2" ; + :vertical_label = "h2m" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + height = 2 ; + + tas = + 254.0895, 258.4085, 250.5549, 258.7101, + 258.668, 258.299, 252.1237, 255.0432, + 253.7254, 251.246, 254.3168, 255.4808, + 259.7908, 252.2754, 257.1892, 253.3132, + 253.8823, 253.4698, 253.5381, 254.973, + 256.1002, 251.8168, 259.3698, 250.2994 ; +} + diff --git a/mydoc/examples/python/example_03_scalar_dimension.py b/mydoc/examples/python/example_03_scalar_dimension.py new file mode 100644 index 0000000..199cf76 --- /dev/null +++ b/mydoc/examples/python/example_03_scalar_dimension.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + +import cmor +import numpy as np + +EXAMPLE_DIR = Path(__file__).resolve().parent +RUN_DIR = Path.cwd() +DEFAULT_TABLES_PATH = RUN_DIR / "cmip7-cmor-tables" / "tables" +TABLES_PATH = Path(os.environ.get("CMOR_TABLES_PATH", DEFAULT_TABLES_PATH)) +INPUT_PATH = EXAMPLE_DIR.parent / "CMIP7_input_example.json" + + +def configure( + output_dir: Path, + frequency: str = "mon", + realization_index: str = "r1", + forcing_index: str = "f1", +) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + user_input = json.loads(INPUT_PATH.read_text()) + user_input["outpath"] = str(output_dir) + user_input["frequency"] = frequency + user_input["realization_index"] = realization_index + user_input["forcing_index"] = forcing_index + input_path = output_dir / "CMIP7_input_example.json" + input_path.write_text(json.dumps(user_input, indent=2, sort_keys=True)) + cmor.setup(inpath=str(TABLES_PATH), netcdf_file_action=cmor.CMOR_REPLACE) + cmor.dataset_json(str(input_path)) + + +def apply_cmip7_variable_metadata( + var_id: int, + realm: str, + table_entry: str, + frequency: str, + region: str, +) -> str: + compound_name = ".".join( + [realm] + table_entry.split("_") + [frequency, region] + ) + + with (TABLES_PATH / "CMIP7_cell_measures.json").open() as handle: + cell_measures = json.load(handle)["cell_measures"] + cmor.set_variable_attribute( + var_id, + "cell_measures", + "c", + cell_measures.get(compound_name, ""), + ) + + with (TABLES_PATH / "CMIP7_long_name_overrides.json").open() as handle: + long_name_overrides = json.load(handle)["long_name_overrides"] + if compound_name in long_name_overrides: + cmor.set_variable_attribute( + var_id, + "long_name", + "c", + long_name_overrides[compound_name], + ) + + return compound_name + + +def write_example(output_dir: Path) -> str: + configure(output_dir, realization_index="r9", forcing_index="f2") + cmor.load_table("CMIP7_atmos.json") + lat_id = cmor.axis( + "latitude", + "degrees_north", + coord_vals=np.array([10.0, 20.0, 30.0], dtype="d"), + cell_bounds=np.array([5.0, 15.0, 25.0, 35.0], dtype="d"), + ) + lon_id = cmor.axis( + "longitude", + "degrees_east", + coord_vals=np.array([0.0, 90.0, 180.0, 270.0], dtype="d"), + cell_bounds=np.array([-45.0, 45.0, 135.0, 225.0, 315.0], dtype="d"), + ) + time_id = cmor.axis( + "time", + "days since 1979-01-01", + coord_vals=np.array([15.5, 45.5], dtype="d"), + cell_bounds=np.array([0.0, 31.0, 60.0], dtype="d"), + ) + height_id = cmor.axis( + "height2m", + "m", + coord_vals=np.array([2.0], dtype="d"), + ) + var_id = cmor.variable( + "tas_tavg-h2m-hxy-u", + "K", + [time_id, lat_id, lon_id, height_id], + missing_value=1.0e20, + ) + apply_cmip7_variable_metadata( + var_id, + "atmos", + "tas_tavg-h2m-hxy-u", + "mon", + "glb", + ) + data = np.array( + [ + 254.0895, + 258.4085, + 250.5549, + 258.7101, + 258.6680, + 258.2990, + 252.1237, + 255.0432, + 253.7254, + 251.2460, + 254.3168, + 255.4808, + 259.7908, + 252.2754, + 257.1892, + 253.3132, + 253.8823, + 253.4698, + 253.5381, + 254.9730, + 256.1002, + 251.8168, + 259.3698, + 250.2994, + ], + dtype="f4", + ).reshape(2, 3, 4, 1) + cmor.write(var_id, data) + path = cmor.close(var_id, file_name=True) + cmor.close() + return path + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Write CMIP7 example 3 with CMOR." + ) + parser.add_argument( + "--output-dir", + type=Path, + default=Path(__file__).resolve().parent / "output", + ) + args = parser.parse_args() + print(write_example(args.output_dir)) + + +if __name__ == "__main__": + main() diff --git a/mydoc/examples/python/example_04_auxiliary_coordinates.cdl b/mydoc/examples/python/example_04_auxiliary_coordinates.cdl new file mode 100644 index 0000000..8a23459 --- /dev/null +++ b/mydoc/examples/python/example_04_auxiliary_coordinates.cdl @@ -0,0 +1,105 @@ +netcdf htovgyre_tavg-u-hyb-sea_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + basin = 3 ; + lat = 3 ; + bnds = 2 ; + strlen = 21 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + char sector(basin, strlen) ; + sector:long_name = "Ocean Basin" ; + sector:standard_name = "region" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + float htovgyre(time, basin, lat) ; + htovgyre:standard_name = "northward_ocean_heat_transport_due_to_gyre" ; + htovgyre:long_name = "Northward Ocean Heat Transport Due to Gyre" ; + htovgyre:units = "W" ; + htovgyre:cell_methods = "depth: longitude: sum where sea (along a zig-zag grid path spanning a basin) time: mean" ; + htovgyre:missing_value = 1.e+20f ; + htovgyre:_FillValue = 1.e+20f ; + htovgyre:coordinates = "sector" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "sea" ; + :branded_variable = "htovgyre_tavg-u-hyb-sea" ; + :branding_suffix = "tavg-u-hyb-sea" ; + :creation_date = "2026-08-07T00:46:50Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:46:50Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hyb" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "ocean" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_ocean.json; Creation Date:(2026-07-21 13:16:24) MD5:734c6f53560fa60b7c1c21b38e5b9a3f" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/29d2ba90-14ef-4e3d-9b5f-3d171d3eb35d" ; + :variable_id = "htovgyre" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + sector = + "atlantic_arctic_ocean", + "indian_pacific_ocean", + "global_ocean" ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + htovgyre = + -80, -84, -88, + -100, -104, -76, + -120, -92, -96, + -79, -83, -87, + -99, -103, -75, + -107, -111, -115 ; +} + diff --git a/mydoc/examples/python/example_04_auxiliary_coordinates.py b/mydoc/examples/python/example_04_auxiliary_coordinates.py new file mode 100644 index 0000000..49ceb5d --- /dev/null +++ b/mydoc/examples/python/example_04_auxiliary_coordinates.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + +import cmor +import numpy as np + +EXAMPLE_DIR = Path(__file__).resolve().parent +RUN_DIR = Path.cwd() +DEFAULT_TABLES_PATH = RUN_DIR / "cmip7-cmor-tables" / "tables" +TABLES_PATH = Path(os.environ.get("CMOR_TABLES_PATH", DEFAULT_TABLES_PATH)) +INPUT_PATH = EXAMPLE_DIR.parent / "CMIP7_input_example.json" + + +def configure( + output_dir: Path, + frequency: str = "mon", + realization_index: str = "r1", + forcing_index: str = "f1", +) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + user_input = json.loads(INPUT_PATH.read_text()) + user_input["outpath"] = str(output_dir) + user_input["frequency"] = frequency + user_input["realization_index"] = realization_index + user_input["forcing_index"] = forcing_index + input_path = output_dir / "CMIP7_input_example.json" + input_path.write_text(json.dumps(user_input, indent=2, sort_keys=True)) + cmor.setup(inpath=str(TABLES_PATH), netcdf_file_action=cmor.CMOR_REPLACE) + cmor.dataset_json(str(input_path)) + + +def apply_cmip7_variable_metadata( + var_id: int, + realm: str, + table_entry: str, + frequency: str, + region: str, +) -> str: + compound_name = ".".join( + [realm] + table_entry.split("_") + [frequency, region] + ) + + with (TABLES_PATH / "CMIP7_cell_measures.json").open() as handle: + cell_measures = json.load(handle)["cell_measures"] + cmor.set_variable_attribute( + var_id, + "cell_measures", + "c", + cell_measures.get(compound_name, ""), + ) + + with (TABLES_PATH / "CMIP7_long_name_overrides.json").open() as handle: + long_name_overrides = json.load(handle)["long_name_overrides"] + if compound_name in long_name_overrides: + cmor.set_variable_attribute( + var_id, + "long_name", + "c", + long_name_overrides[compound_name], + ) + + return compound_name + + +def write_example(output_dir: Path) -> str: + configure(output_dir) + cmor.load_table("CMIP7_ocean.json") + time_id = cmor.axis( + "time", + "days since 1979-01-01", + coord_vals=np.array([15.5, 45.5], dtype="d"), + cell_bounds=np.array([0.0, 31.0, 60.0], dtype="d"), + ) + lat_id = cmor.axis( + "latitude", + "degrees_north", + coord_vals=np.array([10.0, 20.0, 30.0], dtype="d"), + cell_bounds=np.array([5.0, 15.0, 25.0, 35.0], dtype="d"), + ) + basin_id = cmor.axis( + "basin", + "", + coord_vals=np.array( + [ + "atlantic_arctic_ocean", + "indian_pacific_ocean", + "global_ocean", + ], + dtype="U21", + ), + ) + var_id = cmor.variable( + "htovgyre_tavg-u-hyb-sea", + "W", + [time_id, basin_id, lat_id], + missing_value=1.0e20, + ) + apply_cmip7_variable_metadata( + var_id, + "ocean", + "htovgyre_tavg-u-hyb-sea", + "mon", + "glb", + ) + data = np.array( + [ + -80.0, + -84.0, + -88.0, + -100.0, + -104.0, + -76.0, + -120.0, + -92.0, + -96.0, + -79.0, + -83.0, + -87.0, + -99.0, + -103.0, + -75.0, + -107.0, + -111.0, + -115.0, + ], + dtype="f4", + ).reshape(2, 3, 3) + cmor.write(var_id, data) + path = cmor.close(var_id, file_name=True) + cmor.close() + return path + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Write CMIP7 example 4 with CMOR." + ) + parser.add_argument( + "--output-dir", + type=Path, + default=Path(__file__).resolve().parent / "output", + ) + args = parser.parse_args() + print(write_example(args.output_dir)) + + +if __name__ == "__main__": + main() diff --git a/mydoc/examples/python/example_05_model_levels.cdl b/mydoc/examples/python/example_05_model_levels.cdl new file mode 100644 index 0000000..b664093 --- /dev/null +++ b/mydoc/examples/python/example_05_model_levels.cdl @@ -0,0 +1,204 @@ +netcdf cl_tavg-al-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + lev = 5 ; + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double lev(lev) ; + lev:bounds = "lev_bnds" ; + lev:units = "1" ; + lev:axis = "Z" ; + lev:positive = "down" ; + lev:long_name = "hybrid sigma pressure coordinate" ; + lev:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; + lev:formula = "p = a*p0 + b*ps" ; + lev:formula_terms = "p0: p0 a: a b: b ps: ps" ; + double lev_bnds(lev, bnds) ; + lev_bnds:formula = "p = a*p0 + b*ps" ; + lev_bnds:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; + lev_bnds:units = "1" ; + lev_bnds:formula_terms = "p0: p0 a: a_bnds b: b_bnds ps: ps" ; + double p0 ; + p0:standard_name = "reference_air_pressure_for_atmosphere_vertical_coordinate" ; + p0:long_name = "vertical coordinate formula term: reference pressure" ; + p0:units = "Pa" ; + double a(lev) ; + a:long_name = "vertical coordinate formula term: a" ; + double b(lev) ; + b:long_name = "vertical coordinate formula term: b" ; + float ps(time, lat, lon) ; + ps:standard_name = "air_pressure" ; + ps:long_name = "Surface Air Pressure" ; + ps:units = "Pa" ; + double a_bnds(lev, bnds) ; + a_bnds:long_name = "vertical coordinate formula term: a(k+1/2)" ; + double b_bnds(lev, bnds) ; + b_bnds:long_name = "vertical coordinate formula term: b(k+1/2)" ; + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float cl(time, lev, lat, lon) ; + cl:standard_name = "cloud_area_fraction_in_atmosphere_layer" ; + cl:long_name = "Percentage Cloud Cover" ; + cl:units = "%" ; + cl:cell_methods = "area: time: mean" ; + cl:missing_value = 1.e+20f ; + cl:_FillValue = 1.e+20f ; + cl:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "cl_tavg-al-hxy-u" ; + :branding_suffix = "tavg-al-hxy-u" ; + :creation_date = "2026-08-07T00:46:51Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:46:51Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :variable_id = "cl" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "al" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; + :tracking_id = "hdl:21.14107/17a3a87a-88ac-46fd-82f6-c55c756211d5" ; +data: + + time = 15, 45 ; + + time_bnds = + 0, 30, + 30, 60 ; + + lev = 0.92, 0.72, 0.5, 0.3, 0.1 ; + + lev_bnds = + 1, 0.83, + 0.83, 0.61, + 0.61, 0.4, + 0.4, 0.2, + 0.2, 0 ; + + p0 = 100000 ; + + a = 0.12, 0.22, 0.3, 0.2, 0.1 ; + + b = 0.8, 0.5, 0.2, 0.1, 0 ; + + ps = + 97000, 97400, 97800, 98200, + 98600, 99000, 99400, 99800, + 100200, 100600, 101000, 101400, + 97100, 97500, 97900, 98300, + 98700, 99100, 99500, 99900, + 100300, 100700, 101100, 101500 ; + + a_bnds = + 0.06, 0.18, + 0.18, 0.26, + 0.26, 0.25, + 0.25, 0.15, + 0.15, 0 ; + + b_bnds = + 0.94, 0.65, + 0.65, 0.35, + 0.35, 0.15, + 0.15, 0.05, + 0.05, 0 ; + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + cl = + 72.8, 73.2, 73.6, 74, + 71.6, 72, 72.4, 72.4, + 70.4, 70.8, 70.8, 71.2, + 67.6, 69.2, 69.6, 70, + 66, 66.4, 66.8, 67.2, + 64.8, 65.2, 65.6, 66, + 63.6, 64, 64.4, 64.4, + 60.8, 61.2, 62.8, 63.2, + 59.6, 59.6, 60, 60.4, + 58, 58.4, 58.8, 59.2, + 56.8, 57.2, 57.6, 58, + 54, 54.4, 54.8, 56.4, + 52.8, 53.2, 53.2, 53.6, + 51.6, 51.6, 52, 52.4, + 50, 50.4, 50.8, 51.2, + 72.9, 73.3, 73.7, 74.1, + 71.7, 72.1, 72.5, 72.5, + 70.5, 70.9, 70.9, 71.3, + 67.7, 69.3, 69.7, 70.1, + 66.1, 66.5, 66.9, 67.3, + 64.9, 65.3, 65.7, 66.1, + 63.7, 64.1, 64.5, 64.5, + 60.9, 61.3, 62.9, 63.3, + 59.7, 59.7, 60.1, 60.5, + 58.1, 58.5, 58.9, 59.3, + 56.9, 57.3, 57.7, 58.1, + 54.1, 54.5, 54.9, 56.5, + 52.9, 53.3, 53.3, 53.7, + 51.7, 51.7, 52.1, 52.5, + 50.1, 50.5, 50.9, 51.3 ; +} + diff --git a/mydoc/examples/python/example_05_model_levels.py b/mydoc/examples/python/example_05_model_levels.py new file mode 100644 index 0000000..e6e336d --- /dev/null +++ b/mydoc/examples/python/example_05_model_levels.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + +import cmor +import numpy as np + +EXAMPLE_DIR = Path(__file__).resolve().parent +RUN_DIR = Path.cwd() +DEFAULT_TABLES_PATH = RUN_DIR / "cmip7-cmor-tables" / "tables" +TABLES_PATH = Path(os.environ.get("CMOR_TABLES_PATH", DEFAULT_TABLES_PATH)) +INPUT_PATH = EXAMPLE_DIR.parent / "CMIP7_input_example.json" + + +def configure( + output_dir: Path, + frequency: str = "mon", + realization_index: str = "r1", + forcing_index: str = "f1", +) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + user_input = json.loads(INPUT_PATH.read_text()) + user_input["outpath"] = str(output_dir) + user_input["frequency"] = frequency + user_input["realization_index"] = realization_index + user_input["forcing_index"] = forcing_index + input_path = output_dir / "CMIP7_input_example.json" + input_path.write_text(json.dumps(user_input, indent=2, sort_keys=True)) + cmor.setup(inpath=str(TABLES_PATH), netcdf_file_action=cmor.CMOR_REPLACE) + cmor.dataset_json(str(input_path)) + + +def apply_cmip7_variable_metadata( + var_id: int, + realm: str, + table_entry: str, + frequency: str, + region: str, +) -> str: + compound_name = ".".join( + [realm] + table_entry.split("_") + [frequency, region] + ) + + with (TABLES_PATH / "CMIP7_cell_measures.json").open() as handle: + cell_measures = json.load(handle)["cell_measures"] + cmor.set_variable_attribute( + var_id, + "cell_measures", + "c", + cell_measures.get(compound_name, ""), + ) + + with (TABLES_PATH / "CMIP7_long_name_overrides.json").open() as handle: + long_name_overrides = json.load(handle)["long_name_overrides"] + if compound_name in long_name_overrides: + cmor.set_variable_attribute( + var_id, + "long_name", + "c", + long_name_overrides[compound_name], + ) + + return compound_name + + +def write_example(output_dir: Path) -> str: + configure(output_dir) + cmor.load_table("CMIP7_atmos.json") + lat_id = cmor.axis( + "latitude", + "degrees_north", + coord_vals=np.array([10.0, 20.0, 30.0], dtype="d"), + cell_bounds=np.array([5.0, 15.0, 25.0, 35.0], dtype="d"), + ) + lon_id = cmor.axis( + "longitude", + "degrees_east", + coord_vals=np.array([0.0, 90.0, 180.0, 270.0], dtype="d"), + cell_bounds=np.array([-45.0, 45.0, 135.0, 225.0, 315.0], dtype="d"), + ) + time_id = cmor.axis( + "time", + "days since 1979-01-01", + coord_vals=np.array([15.0, 45.0], dtype="d"), + cell_bounds=np.array([0.0, 30.0, 60.0], dtype="d"), + ) + lev_id = cmor.axis( + "standard_hybrid_sigma", + "1", + coord_vals=np.array([0.92, 0.72, 0.50, 0.30, 0.10], dtype="d"), + cell_bounds=np.array([1.00, 0.83, 0.61, 0.40, 0.20, 0.00], dtype="d"), + ) + cmor.zfactor( + zaxis_id=lev_id, + zfactor_name="a", + axis_ids=[lev_id], + zfactor_values=np.array([0.12, 0.22, 0.30, 0.20, 0.10], dtype="d"), + zfactor_bounds=np.array( + [0.06, 0.18, 0.26, 0.25, 0.15, 0.00], + dtype="d", + ), + ) + cmor.zfactor( + zaxis_id=lev_id, + zfactor_name="b", + axis_ids=[lev_id], + zfactor_values=np.array([0.80, 0.50, 0.20, 0.10, 0.00], dtype="d"), + zfactor_bounds=np.array( + [0.94, 0.65, 0.35, 0.15, 0.05, 0.00], + dtype="d", + ), + ) + cmor.zfactor( + zaxis_id=lev_id, + zfactor_name="p0", + units="Pa", + zfactor_values=100000.0, + ) + ps = np.array( + [ + 97000.0, + 97400.0, + 97800.0, + 98200.0, + 98600.0, + 99000.0, + 99400.0, + 99800.0, + 100200.0, + 100600.0, + 101000.0, + 101400.0, + 97100.0, + 97500.0, + 97900.0, + 98300.0, + 98700.0, + 99100.0, + 99500.0, + 99900.0, + 100300.0, + 100700.0, + 101100.0, + 101500.0, + ], + dtype="f4", + ).reshape(2, 3, 4) + ps_id = cmor.zfactor( + zaxis_id=lev_id, + zfactor_name="ps", + axis_ids=[time_id, lat_id, lon_id], + units="Pa", + ) + var_id = cmor.variable( + "cl_tavg-al-hxy-u", + "%", + [time_id, lev_id, lat_id, lon_id], + missing_value=1.0e20, + ) + apply_cmip7_variable_metadata( + var_id, + "atmos", + "cl_tavg-al-hxy-u", + "mon", + "glb", + ) + data = np.array( + [ + 72.8, 73.2, 73.6, 74.0, + 71.6, 72.0, 72.4, 72.4, + 70.4, 70.8, 70.8, 71.2, + 67.6, 69.2, 69.6, 70.0, + 66.0, 66.4, 66.8, 67.2, + 64.8, 65.2, 65.6, 66.0, + 63.6, 64.0, 64.4, 64.4, + 60.8, 61.2, 62.8, 63.2, + 59.6, 59.6, 60.0, 60.4, + 58.0, 58.4, 58.8, 59.2, + 56.8, 57.2, 57.6, 58.0, + 54.0, 54.4, 54.8, 56.4, + 52.8, 53.2, 53.2, 53.6, + 51.6, 51.6, 52.0, 52.4, + 50.0, 50.4, 50.8, 51.2, + 72.9, 73.3, 73.7, 74.1, + 71.7, 72.1, 72.5, 72.5, + 70.5, 70.9, 70.9, 71.3, + 67.7, 69.3, 69.7, 70.1, + 66.1, 66.5, 66.9, 67.3, + 64.9, 65.3, 65.7, 66.1, + 63.7, 64.1, 64.5, 64.5, + 60.9, 61.3, 62.9, 63.3, + 59.7, 59.7, 60.1, 60.5, + 58.1, 58.5, 58.9, 59.3, + 56.9, 57.3, 57.7, 58.1, + 54.1, 54.5, 54.9, 56.5, + 52.9, 53.3, 53.3, 53.7, + 51.7, 51.7, 52.1, 52.5, + 50.1, 50.5, 50.9, 51.3, + ], + dtype="f4", + ).reshape(2, 5, 3, 4) + cmor.write(var_id, data) + cmor.write(ps_id, ps, store_with=var_id) + path = cmor.close(var_id, file_name=True) + cmor.close() + return path + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Write CMIP7 example 5 with CMOR." + ) + parser.add_argument( + "--output-dir", + type=Path, + default=Path(__file__).resolve().parent / "output", + ) + args = parser.parse_args() + print(write_example(args.output_dir)) + + +if __name__ == "__main__": + main() diff --git a/mydoc/examples/python/example_06_complex_grid.cdl b/mydoc/examples/python/example_06_complex_grid.cdl new file mode 100644 index 0000000..b81eda5 --- /dev/null +++ b/mydoc/examples/python/example_06_complex_grid.cdl @@ -0,0 +1,189 @@ +netcdf hfls_tavg-u-hxy-u_mon_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1_197901-197902 { +dimensions: + time = UNLIMITED ; // (2 currently) + x = 4 ; + y = 3 ; + bnds = 2 ; + vertices = 4 ; +variables: + double time(time) ; + time:bounds = "time_bnds" ; + time:units = "days since 1979-01-01" ; + time:calendar = "360_day" ; + time:axis = "T" ; + time:long_name = "Time Intervals" ; + time:standard_name = "time" ; + double time_bnds(time, bnds) ; + double x(x) ; + x:bounds = "x_bnds" ; + x:units = "m" ; + x:axis = "X" ; + x:long_name = "x coordinate of projection" ; + x:standard_name = "projection_x_coordinate" ; + double x_bnds(x, bnds) ; + double y(y) ; + y:bounds = "y_bnds" ; + y:units = "m" ; + y:axis = "Y" ; + y:long_name = "y coordinate of projection" ; + y:standard_name = "projection_y_coordinate" ; + double y_bnds(y, bnds) ; + int lambert_conformal_conic ; + lambert_conformal_conic:grid_mapping_name = "lambert_conformal_conic" ; + lambert_conformal_conic:standard_parallel = -20., 20. ; + lambert_conformal_conic:longitude_of_central_meridian = 175. ; + lambert_conformal_conic:latitude_of_projection_origin = 13. ; + lambert_conformal_conic:false_easting = 8. ; + lambert_conformal_conic:false_northing = 0. ; + double latitude(x, y) ; + latitude:standard_name = "latitude" ; + latitude:long_name = "latitude" ; + latitude:units = "degrees_north" ; + latitude:missing_value = 1.e+20 ; + latitude:_FillValue = 1.e+20 ; + latitude:bounds = "vertices_latitude" ; + double longitude(x, y) ; + longitude:standard_name = "longitude" ; + longitude:long_name = "longitude" ; + longitude:units = "degrees_east" ; + longitude:missing_value = 1.e+20 ; + longitude:_FillValue = 1.e+20 ; + longitude:bounds = "vertices_longitude" ; + double vertices_latitude(x, y, vertices) ; + vertices_latitude:units = "degrees_north" ; + vertices_latitude:missing_value = 1.e+20 ; + vertices_latitude:_FillValue = 1.e+20 ; + double vertices_longitude(x, y, vertices) ; + vertices_longitude:units = "degrees_east" ; + vertices_longitude:missing_value = 1.e+20 ; + vertices_longitude:_FillValue = 1.e+20 ; + float hfls(time, x, y) ; + hfls:standard_name = "surface_upward_latent_heat_flux" ; + hfls:long_name = "Surface Upward Latent Heat Flux" ; + hfls:units = "W m-2" ; + hfls:cell_methods = "area: time: mean" ; + hfls:history = "2026-08-07T00:46:52Z altered by CMOR: Reordered dimensions, original order: time y x." ; + hfls:missing_value = 1.e+20f ; + hfls:_FillValue = 1.e+20f ; + hfls:cell_measures = "area: areacella" ; + hfls:grid_mapping = "lambert_conformal_conic" ; + hfls:coordinates = "latitude longitude" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "u" ; + :branded_variable = "hfls_tavg-u-hxy-u" ; + :branding_suffix = "tavg-u-hxy-u" ; + :creation_date = "2026-08-07T00:46:52Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "mon" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:46:52Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "atmos" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_atmos.json; Creation Date:(2026-07-21 13:16:24) MD5:28339aa355908b9331150e1536f5e384" ; + :temporal_label = "tavg" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/56ae9743-13c7-4712-bf75-b445d0a7df7b" ; + :variable_id = "hfls" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + time = 15.5, 45.5 ; + + time_bnds = + 0, 31, + 31, 60 ; + + x = 0, 10000, 20000, 30000 ; + + x_bnds = + -5000, 5000, + 5000, 15000, + 15000, 25000, + 25000, 35000 ; + + y = 0, 10000, 20000 ; + + y_bnds = + -5000, 5000, + 5000, 15000, + 15000, 25000 ; + + lambert_conformal_conic = _ ; + + latitude = + 10, 20, 30, + 8, 18, 28, + 6, 16, 26, + 4, 14, 24 ; + + longitude = + 280, 282, 284, + 290, 292, 294, + 300, 302, 304, + 310, 312, 314 ; + + vertices_latitude = + 5, 6, 15, 14, + 15, 16, 25, 24, + 25, 26, 35, 34, + 3, 4, 13, 12, + 13, 14, 23, 22, + 23, 24, 33, 32, + 1, 2, 11, 10, + 11, 12, 21, 20, + 21, 22, 31, 30, + -1, 0, 9, 8, + 9, 10, 19, 18, + 19, 20, 29, 28 ; + + vertices_longitude = + 275, 285, 285, 275, + 277, 287, 287, 277, + 279, 289, 289, 279, + 285, 295, 295, 285, + 287, 297, 297, 287, + 289, 299, 299, 289, + 295, 305, 305, 295, + 297, 307, 307, 297, + 299, 309, 309, 299, + 305, 315, 315, 305, + 307, 317, 317, 307, + 309, 319, 319, 309 ; + + hfls = + 80, 88, 96, + 82, 90, 98, + 84, 92, 100, + 86, 94, 102, + 81, 89, 97, + 83, 91, 99, + 85, 93, 101, + 87, 95, 103 ; +} + diff --git a/mydoc/examples/python/example_06_complex_grid.py b/mydoc/examples/python/example_06_complex_grid.py new file mode 100644 index 0000000..9f3b349 --- /dev/null +++ b/mydoc/examples/python/example_06_complex_grid.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + +import cmor +import numpy as np + +EXAMPLE_DIR = Path(__file__).resolve().parent +RUN_DIR = Path.cwd() +DEFAULT_TABLES_PATH = RUN_DIR / "cmip7-cmor-tables" / "tables" +TABLES_PATH = Path(os.environ.get("CMOR_TABLES_PATH", DEFAULT_TABLES_PATH)) +INPUT_PATH = EXAMPLE_DIR.parent / "CMIP7_input_example.json" + + +def configure( + output_dir: Path, + frequency: str = "mon", + realization_index: str = "r1", + forcing_index: str = "f1", +) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + user_input = json.loads(INPUT_PATH.read_text()) + user_input["outpath"] = str(output_dir) + user_input["frequency"] = frequency + user_input["realization_index"] = realization_index + user_input["forcing_index"] = forcing_index + input_path = output_dir / "CMIP7_input_example.json" + input_path.write_text(json.dumps(user_input, indent=2, sort_keys=True)) + cmor.setup(inpath=str(TABLES_PATH), netcdf_file_action=cmor.CMOR_REPLACE) + cmor.dataset_json(str(input_path)) + + +def apply_cmip7_variable_metadata( + var_id: int, + realm: str, + table_entry: str, + frequency: str, + region: str, +) -> str: + compound_name = ".".join( + [realm] + table_entry.split("_") + [frequency, region] + ) + + with (TABLES_PATH / "CMIP7_cell_measures.json").open() as handle: + cell_measures = json.load(handle)["cell_measures"] + cmor.set_variable_attribute( + var_id, + "cell_measures", + "c", + cell_measures.get(compound_name, ""), + ) + + with (TABLES_PATH / "CMIP7_long_name_overrides.json").open() as handle: + long_name_overrides = json.load(handle)["long_name_overrides"] + if compound_name in long_name_overrides: + cmor.set_variable_attribute( + var_id, + "long_name", + "c", + long_name_overrides[compound_name], + ) + + return compound_name + + +def write_example(output_dir: Path) -> str: + configure(output_dir) + grid_table = cmor.load_table("CMIP7_grids.json") + cmor.set_table(grid_table) + y_id = cmor.axis( + "y", + "m", + coord_vals=np.array([0.0, 10000.0, 20000.0], dtype="d"), + cell_bounds=np.array( + [-5000.0, 5000.0, 15000.0, 25000.0], + dtype="d", + ), + ) + x_id = cmor.axis( + "x", + "m", + coord_vals=np.array([0.0, 10000.0, 20000.0, 30000.0], dtype="d"), + cell_bounds=np.array( + [-5000.0, 5000.0, 15000.0, 25000.0, 35000.0], + dtype="d", + ), + ) + latitude = np.array( + [ + [10.0, 8.0, 6.0, 4.0], + [20.0, 18.0, 16.0, 14.0], + [30.0, 28.0, 26.0, 24.0], + ], + dtype="d", + ) + longitude = np.array( + [ + [280.0, 290.0, 300.0, 310.0], + [282.0, 292.0, 302.0, 312.0], + [284.0, 294.0, 304.0, 314.0], + ], + dtype="d", + ) + latitude_vertices = np.empty((3, 4, 4), dtype="d") + longitude_vertices = np.empty((3, 4, 4), dtype="d") + for j in range(3): + for i in range(4): + latitude_vertices[j, i, :] = [ + latitude[j, i] - 5.0, + latitude[j, i] - 4.0, + latitude[j, i] + 5.0, + latitude[j, i] + 4.0, + ] + longitude_vertices[j, i, :] = [ + longitude[j, i] - 5.0, + longitude[j, i] + 5.0, + longitude[j, i] + 5.0, + longitude[j, i] - 5.0, + ] + grid_id = cmor.grid( + axis_ids=[y_id, x_id], + latitude=latitude, + longitude=longitude, + latitude_vertices=latitude_vertices, + longitude_vertices=longitude_vertices, + ) + cmor.set_grid_mapping( + grid_id=grid_id, + mapping_name="lambert_conformal_conic", + parameter_names=[ + "standard_parallel1", + "longitude_of_central_meridian", + "latitude_of_projection_origin", + "false_easting", + "false_northing", + "standard_parallel2", + ], + parameter_values=[-20.0, 175.0, 13.0, 8.0, 0.0, 20.0], + parameter_units=["", "", "", "", "", ""], + ) + cmor.load_table("CMIP7_atmos.json") + time_id = cmor.axis( + "time", + "days since 1979-01-01", + coord_vals=np.array([15.5, 45.5], dtype="d"), + cell_bounds=np.array([0.0, 31.0, 60.0], dtype="d"), + ) + var_id = cmor.variable( + "hfls_tavg-u-hxy-u", + "W m-2", + [time_id, grid_id], + positive="up", + missing_value=1.0e20, + ) + apply_cmip7_variable_metadata( + var_id, + "atmos", + "hfls_tavg-u-hxy-u", + "mon", + "glb", + ) + data = np.array( + [ + 80.0, + 82.0, + 84.0, + 86.0, + 88.0, + 90.0, + 92.0, + 94.0, + 96.0, + 98.0, + 100.0, + 102.0, + 81.0, + 83.0, + 85.0, + 87.0, + 89.0, + 91.0, + 93.0, + 95.0, + 97.0, + 99.0, + 101.0, + 103.0, + ], + dtype="f4", + ).reshape(2, 3, 4) + cmor.write(var_id, data) + path = cmor.close(var_id, file_name=True) + cmor.close() + return path + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Write CMIP7 example 6 with CMOR." + ) + parser.add_argument( + "--output-dir", + type=Path, + default=Path(__file__).resolve().parent / "output", + ) + args = parser.parse_args() + print(write_example(args.output_dir)) + + +if __name__ == "__main__": + main() diff --git a/mydoc/examples/python/example_07_fixed_field.cdl b/mydoc/examples/python/example_07_fixed_field.cdl new file mode 100644 index 0000000..3fedcbf --- /dev/null +++ b/mydoc/examples/python/example_07_fixed_field.cdl @@ -0,0 +1,94 @@ +netcdf rootd_ti-u-hxy-lnd_fx_glb_g999_ACCESS-ESM1-6_amip_r1i1p1f1 { +dimensions: + lat = 3 ; + lon = 4 ; + bnds = 2 ; +variables: + double lat(lat) ; + lat:bounds = "lat_bnds" ; + lat:units = "degrees_north" ; + lat:axis = "Y" ; + lat:long_name = "Latitude" ; + lat:standard_name = "latitude" ; + double lat_bnds(lat, bnds) ; + double lon(lon) ; + lon:bounds = "lon_bnds" ; + lon:units = "degrees_east" ; + lon:axis = "X" ; + lon:long_name = "Longitude" ; + lon:standard_name = "longitude" ; + double lon_bnds(lon, bnds) ; + float rootd(lat, lon) ; + rootd:standard_name = "root_depth" ; + rootd:long_name = "Maximum Root Depth" ; + rootd:units = "m" ; + rootd:cell_methods = "area: mean where land" ; + rootd:missing_value = 1.e+20f ; + rootd:_FillValue = 1.e+20f ; + rootd:cell_measures = "area: areacella" ; + +// global attributes: + :Conventions = "CF-1.12" ; + :activity_id = "CMIP" ; + :archive_id = "WCRP" ; + :area_label = "lnd" ; + :branded_variable = "rootd_ti-u-hxy-lnd" ; + :branding_suffix = "ti-u-hxy-lnd" ; + :creation_date = "2026-08-07T00:46:52Z" ; + :data_specs_version = "MIP-DS7.1.0.0" ; + :description = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :drs_specs = "MIP-DRS7" ; + :experiment = "Simulation of the climate of the recent past with prescribed sea surface temperatures and sea ice concentrations." ; + :experiment_id = "amip" ; + :external_variables = "areacella" ; + :forcing_index = "f1" ; + :frequency = "fx" ; + :grid_label = "g999" ; + :history = "2026-08-07T00:46:52Z ; CMOR rewrote data to be consistent with CF-1.12 and CMIP7 data requirements." ; + :horizontal_label = "hxy" ; + :host_collection = "CMIP7" ; + :initialization_index = "i1" ; + :institution = "Met Office Hadley Centre" ; + :institution_id = "MOHC" ; + :license_id = "CC-BY-4.0" ; + :mip_era = "CMIP7" ; + :nominal_resolution = "100 km" ; + :physics_index = "p1" ; + :product = "model-output" ; + :realization_index = "r1" ; + :realm = "land" ; + :region = "glb" ; + :source = "ACCESS-ESM1-6: aerosol: classic; atmosphere: um7-3; land-surface: cable3; ocean-biogeochemistry: wombatlite; ocean: mom5; sea-ice: cice5" ; + :source_id = "ACCESS-ESM1-6" ; + :table_info = "Name: CMIP7_land.json; Creation Date:(2026-07-21 13:16:24) MD5:ea523449976b1c3cc3c14c1492f2fb74" ; + :temporal_label = "ti" ; + :title = "ACCESS-ESM1-6 output prepared for CMIP7" ; + :tracking_id = "hdl:21.14107/59f55805-e290-4366-a99a-8f6ef9c20df6" ; + :variable_id = "rootd" ; + :variant_label = "r1i1p1f1" ; + :vertical_label = "u" ; + :license = "CC-BY-4.0; CMIP7 data produced by MOHC is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0). Consult https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Guidance_for_users/#2-terms-of-use-and-citations-requirements for terms of use governing CMIP7 output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; + :cmor_version = "3.15.2" ; +data: + + lat = 10, 20, 30 ; + + lat_bnds = + 5, 15, + 15, 25, + 25, 35 ; + + lon = 0, 90, 180, 270 ; + + lon_bnds = + -45, 45, + 45, 135, + 135, 225, + 225, 315 ; + + rootd = + 0.5, 0.45, _, 0.55, + 0.6, 0.6, _, 0.55, + _, 0.45, 0.5, 0.5 ; +} + diff --git a/mydoc/examples/python/example_07_fixed_field.py b/mydoc/examples/python/example_07_fixed_field.py new file mode 100644 index 0000000..8ea558d --- /dev/null +++ b/mydoc/examples/python/example_07_fixed_field.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + +import cmor +import numpy as np + +EXAMPLE_DIR = Path(__file__).resolve().parent +RUN_DIR = Path.cwd() +DEFAULT_TABLES_PATH = RUN_DIR / "cmip7-cmor-tables" / "tables" +TABLES_PATH = Path(os.environ.get("CMOR_TABLES_PATH", DEFAULT_TABLES_PATH)) +INPUT_PATH = EXAMPLE_DIR.parent / "CMIP7_input_example.json" + + +def configure( + output_dir: Path, + frequency: str = "mon", + realization_index: str = "r1", + forcing_index: str = "f1", +) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + user_input = json.loads(INPUT_PATH.read_text()) + user_input["outpath"] = str(output_dir) + user_input["frequency"] = frequency + user_input["realization_index"] = realization_index + user_input["forcing_index"] = forcing_index + input_path = output_dir / "CMIP7_input_example.json" + input_path.write_text(json.dumps(user_input, indent=2, sort_keys=True)) + cmor.setup(inpath=str(TABLES_PATH), netcdf_file_action=cmor.CMOR_REPLACE) + cmor.dataset_json(str(input_path)) + + +def apply_cmip7_variable_metadata( + var_id: int, + realm: str, + table_entry: str, + frequency: str, + region: str, +) -> str: + compound_name = ".".join( + [realm] + table_entry.split("_") + [frequency, region] + ) + + with (TABLES_PATH / "CMIP7_cell_measures.json").open() as handle: + cell_measures = json.load(handle)["cell_measures"] + cmor.set_variable_attribute( + var_id, + "cell_measures", + "c", + cell_measures.get(compound_name, ""), + ) + + with (TABLES_PATH / "CMIP7_long_name_overrides.json").open() as handle: + long_name_overrides = json.load(handle)["long_name_overrides"] + if compound_name in long_name_overrides: + cmor.set_variable_attribute( + var_id, + "long_name", + "c", + long_name_overrides[compound_name], + ) + + return compound_name + + +def write_example(output_dir: Path) -> str: + configure(output_dir, frequency="fx") + cmor.load_table("CMIP7_land.json") + lat_id = cmor.axis( + "latitude", + "degrees_north", + coord_vals=np.array([10.0, 20.0, 30.0], dtype="d"), + cell_bounds=np.array([5.0, 15.0, 25.0, 35.0], dtype="d"), + ) + lon_id = cmor.axis( + "longitude", + "degrees_east", + coord_vals=np.array([0.0, 90.0, 180.0, 270.0], dtype="d"), + cell_bounds=np.array( + [-45.0, 45.0, 135.0, 225.0, 315.0], + dtype="d", + ), + ) + var_id = cmor.variable( + "rootd_ti-u-hxy-lnd", + "m", + [lat_id, lon_id], + missing_value=1.0e20, + ) + apply_cmip7_variable_metadata( + var_id, + "land", + "rootd_ti-u-hxy-lnd", + "fx", + "glb", + ) + data = np.array( + [ + [0.50, 0.45, 1.0e20, 0.55], + [0.60, 0.60, 1.0e20, 0.55], + [1.0e20, 0.45, 0.50, 0.50], + ], + dtype="f4", + ) + cmor.write(var_id, data) + path = cmor.close(var_id, file_name=True) + cmor.close() + return path + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Write CMIP7 example 7 with CMOR." + ) + parser.add_argument( + "--output-dir", + type=Path, + default=Path(__file__).resolve().parent / "output", + ) + args = parser.parse_args() + print(write_example(args.output_dir)) + + +if __name__ == "__main__": + main() diff --git a/mydoc/mydoc_cmor3_c.md b/mydoc/mydoc_cmor3_c.md index 17b232a..b461a59 100644 --- a/mydoc/mydoc_cmor3_c.md +++ b/mydoc/mydoc_cmor3_c.md @@ -1,510 +1,227 @@ --- -title: C example -tags: [examples, c] -keywords: example, C +title: C Examples +tags: [examples, c, cmip7] +keywords: example, C, cmip7 sidebar: mydoc_sidebar permalink: /mydoc_cmor3_c/ --- -### CMOR user input +These examples are based on the CMOR repository's [examples/c](https://github.com/PCMDI/cmor/tree/main/examples/c){:target="_blank"} directory. They use the same shared CMIP7 user input file as the Python and Fortran examples and load CMIP7 tables from a local clone of [WCRP-CMIP/cmip7-cmor-tables](https://github.com/WCRP-CMIP/cmip7-cmor-tables){:target="_blank"}. -* [CMOR_input_example.json](https://github.com/PCMDI/cmor/blob/main/Test/CMOR_input_example.json) +Create and activate a Conda or Mamba environment with CMOR and a C compiler: -
Click to expand JSON file +```bash +mamba create -n cmor-c -c conda-forge cmor c-compiler libnetcdf udunits2 json-c libuuid +mamba activate cmor-c +``` + +If you use Conda instead of Mamba, use the same package list: + +```bash +conda create -n cmor-c -c conda-forge cmor c-compiler libnetcdf udunits2 json-c libuuid +conda activate cmor-c +``` + +Install the CMIP7 tables in the working directory where you will run the examples: + +```bash +git clone https://github.com/WCRP-CMIP/cmip7-cmor-tables.git +``` + +Run the examples from a working directory that contains the `cmip7-cmor-tables` repository using the [run_examples.sh]({{site.baseurl}}/mydoc/examples/c/run_examples.sh){:target="_blank"} script: + +```bash +chmod a+x run_examples.sh +./run_examples.sh +``` + +The examples expect tables under `./cmip7-cmor-tables/tables` in the directory where you run the script. To use a different table location, set `CMOR_TABLES_PATH` to the directory containing the CMIP7 table JSON files. To use a different user input file, set `CMOR_INPUT_PATH`. + +Each example builds the CMIP7 compound variable name and uses it to read `CMIP7_cell_measures.json` and `CMIP7_long_name_overrides.json` before writing data. The fixed-field example overrides `frequency` from the shared user input file to `fx`. + +### CMOR Input Files + +* [CMIP7_input_example.json]({{site.baseurl}}/mydoc/examples/CMIP7_input_example.json){:target="_blank"} +* [CMIP7_coordinate.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_coordinate.json){:target="_blank"} +* [CMIP7_formula_terms.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_formula_terms.json){:target="_blank"} +* [CMIP7_cell_measures.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_cell_measures.json){:target="_blank"} +* [CMIP7_long_name_overrides.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_long_name_overrides.json){:target="_blank"} +* [cmor-cvs.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables-cvs/cmor-cvs.json){:target="_blank"} + +
Click to expand shared JSON input ```json -{ - "#note": "explanation of what source_type is goes here", - "source_type": "AOGCM ISM AER", - - "#note": "CMIP6 valid experiment_ids are found in CMIP6_CV.json", - "experiment_id": "piControl-withism", - "activity_id": "ISMIP6", - "sub_experiment_id": "none", - - "realization_index": "3", - "initialization_index": "1", - "physics_index": "1", - "forcing_index": "1", - - "#note": "Text stored in attribute variant_info (recommended, not required description of run variant)", - "run_variant": "3rd realization", - - "parent_experiment_id": "historical", - "parent_activity_id": "CMIP", - "parent_source_id": "PCMDI-test-1-0", - "parent_variant_label": "r3i1p1f1", - - "parent_time_units": "days since 1850-01-01", - "branch_method": "standard", - "branch_time_in_child": 59400.0, - "branch_time_in_parent": 59400.0, - - "#note": "institution_id must be registered at https://github.com/WCRP-CMIP/CMIP6_CVs/issues/new ", - "institution_id": "PCMDI", - - "#note": "source_id (model name) must be registered at https://github.com/WCRP-CMIP/CMIP6_CVs/issues/new ", - "source_id": "PCMDI-test-1-0", - - "calendar": "360_day", - - "grid": "native atmosphere regular grid (3x4 latxlon)", - "grid_label": "gn", - "nominal_resolution": "10000 km", - - "license": "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.", - - "#output": "Root directory for output (can be either a relative or full path)", - "outpath": "CMIP6", - - "#note": " **** The following descriptors are optional and may be set to an empty string ", - - "contact ": "Python Coder (coder@a.b.c.com)", - "history": "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.", - "comment": "", - "references": "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'", - - "#note": " **** The following will be obtained from the CV and do not need to be defined here", - - "sub_experiment": "none", - "institution": "", - "source": "PCMDI-test 1.0 (1989)", - - "#note": " **** The following are set correctly for CMIP6 and should not normally need editing", - - "_controlled_vocabulary_file": "CMIP6_CV.json", - "_AXIS_ENTRY_FILE": "CMIP6_coordinate.json", - "_FORMULA_VAR_FILE": "CMIP6_formula_terms.json", - "_cmip6_option": "CMIP6", - - "mip_era": "CMIP6", - "parent_mip_era": "CMIP6", - - "tracking_prefix": "hdl:21.14100", - "_history_template": "%s ;rewrote data to be consistent with for variable found in table .", - - "#output_path_template": "Template for output path directory using tables keys or global attributes, these should follow the relevant data reference syntax", - "output_path_template": "<_member_id>
", - "output_file_template": "
<_member_id>", -} +{% include_relative examples/CMIP7_input_example.json %} +``` + + + +### Common C Utilities + +* [cmip7_c_common.h]({{site.baseurl}}/mydoc/examples/c/cmip7_c_common.h){:target="_blank"} +* [cmip7_c_common.c]({{site.baseurl}}/mydoc/examples/c/cmip7_c_common.c){:target="_blank"} +* [run_examples.sh]({{site.baseurl}}/mydoc/examples/c/run_examples.sh){:target="_blank"} + +
Click to expand common C header + +```c +{% include_relative examples/c/cmip7_c_common.h %} +``` + +
+ +
Click to expand common C code + +```c +{% include_relative examples/c/cmip7_c_common.c %} +``` +
+ +
Click to expand runner script + +```bash +{% include_relative examples/c/run_examples.sh %} +``` + +
+ +### Example 1: Regular Grid Ocean Field + +* [example_01_regular_grid_tos.c]({{site.baseurl}}/mydoc/examples/c/example_01_regular_grid_tos.c){:target="_blank"} + +
Click to expand C code + +```c +{% include_relative examples/c/example_01_regular_grid_tos.c %} +``` + +
+
Click to expand NetCDF dump +```text +{% include_relative examples/c/example_01_regular_grid_tos.cdl %} ``` +
+### Example 2: 3-D Field on Pressure Levels + +* [example_02_pressure_levels.c]({{site.baseurl}}/mydoc/examples/c/example_02_pressure_levels.c){:target="_blank"} + +
Click to expand C code + +```c +{% include_relative examples/c/example_02_pressure_levels.c %} +``` -### C source code +
-* [ipcc_test_code.c](https://github.com/PCMDI/cmor/blob/main/Test/ipcc_test_code.c) -* [reader_2D_3D.h](https://github.com/PCMDI/cmor/blob/main/Test/reader_2D_3D.h) +
Click to expand NetCDF dump + +```text +{% include_relative examples/c/example_02_pressure_levels.cdl %} +``` + +
+ +### Example 3: Scalar Height Coordinate + +* [example_03_scalar_height_tas.c]({{site.baseurl}}/mydoc/examples/c/example_03_scalar_height_tas.c){:target="_blank"}
Click to expand C code ```c -#include -#include -#include -#include "cmor.h" -#include - -void read_coords(alats, alons, plevs, bnds_lat, bnds_lon, lon, lat, lev) -double *alats, *alons; -int *plevs; -double *bnds_lat, *bnds_lon; -int lon, lat, lev; -{ - int i; - - for (i = 0; i < lon; i++) { - alons[i] = i * 360. / lon; - bnds_lon[2 * i] = (i - 0.5) * 360. / lon; - bnds_lon[2 * i + 1] = (i + 0.5) * 360. / lon; - }; - - for (i = 0; i < lat; i++) { - alats[i] = (lat - i) * 10; - bnds_lat[2 * i] = (lat - i) * 10 + 5.; - bnds_lat[2 * i + 1] = (lat - i) * 10 - 5.; - }; - - plevs[0] = 1000; - plevs[1] = 925; - plevs[2] = 850; - plevs[3] = 700; - plevs[4] = 600; - plevs[5] = 500; - plevs[6] = 400; - plevs[7] = 300; - plevs[8] = 250; - plevs[9] = 200; - plevs[10] = 150; - plevs[11] = 100; - plevs[12] = 70; - plevs[13] = 50; - plevs[14] = 30; - plevs[15] = 20; - plevs[16] = 10; - plevs[17] = 5; - plevs[18] = 1; -} - -void read_time(it, time, time_bnds) -int it; -double time[]; -double time_bnds[]; -{ - time[0] = (it - 0.5) * 30.; - time_bnds[0] = (it - 1) * 30.; - time_bnds[1] = it * 30.; - - time[0] = it; - time_bnds[0] = it; - time_bnds[1] = it + 1; - -} - -#include "reader_2D_3D.h" - -int main() -/* Purpose: To serve as a generic example of an application that */ -/* uses the "Climate Model Output Rewriter" (CMOR) */ -/* CMOR writes CF-compliant netCDF files. */ -/* Its use is strongly encouraged by the IPCC and is intended for use */ -/* by those participating in many community-coordinated standard */ -/* climate model experiments (e.g., AMIP, CMIP, CFMIP, PMIP, APE, */ -/* etc.) */ -/* Background information for this sample code: */ -/* Atmospheric standard output requested by IPCC are listed in */ -/* tables available on the web. Monthly mean output is found in */ -/* tables A1a and A1c. This sample code processes only two 3-d */ -/* variables listed in table A1c ("monthly mean atmosphere 3-D data" */ -/* and only four 2-d variables listed in table A1a ("monthly mean */ -/* atmosphere + land surface 2-D (latitude, longitude) data"). The */ -/* extension to many more fields is trivial. */ -/* For this example, the user must fill in the sections of code that */ -/* extract the 3-d and 2-d fields from his monthly mean "history" */ -/* files (which usually contain many variables but only a single time */ -/* slice). The CMOR code will write each field in a separate file, but */ -/* many monthly mean time-samples will be stored together. These */ -/* constraints partially determine the structure of the code. */ -/* Record of revisions: */ -/* Date Programmer(s) Description of change */ -/* ==== ========== ===================== */ -/* 10/22/03 Rusty Koder Original code */ -/* 1/28/04 Les R. Koder Revised to be consistent */ -/* with evolving code design */ -{ - /* --------------------------------- */ - /* dimension parameters: */ - /* --------------------------------- */ -#define ntimes 2 /* number of time samples to process */ -#define lon 4 /* number of longitude grid cells */ -#define lat 3 /* number of latitude grid cells */ -#define lev 19 /* number of standard pressure levels */ -#define n2d 4 /* number of IPCC Table A1a fields to be output. */ -#define n3d 3 /* number of IPCC Table A1c fields to be output. */ - - /* Tables associating the user's variables with IPCC standard output */ - /* variables. The user may choose to make this association in a */ - /* different way (e.g., by defining values of pointers that allow him */ - /* to directly retrieve data from a data record containing many */ - /* different variables), but in some way the user will need to map his */ - /* model output onto the Tables specifying the MIP standard output. */ - - /* ---------------------------------- */ - - /* My variable names for IPCC Table A1c fields */ - char varin3d[n3d][6] = { "CLOUD", "U", "T" }; - - /* Units appropriate to my data */ - char units3d[n3d][6] = { "%", "m s-1", "K" }; - - /* Corresponding IPCC Table A1c entry (variable name) */ - char entry3d[n3d][3] = { "cl", "ua", "ta" }; - - /* My variable names for IPCC Table A1a fields */ - char varin2d[n2d][9] = { "LATENT", "TSURF", "SOIL_WET", "PSURF" }; - - /* Units appropriate to my data */ - char units2d[n2d][7] = { "W m-2", "K", "kg m-2", "Pa" }; - - char positive2d[n2d][4] = { "down", " ", " ", " " }; - - /* Corresponding IPCC Table A1a entry (variable name) */ - char entry2d[n2d][6] = { "hfls", "tas", "mrsos", "ps" }; - -/* uninitialized variables used in communicating with CMOR: */ -/* --------------------------------------------------------- */ - - int error_flag; - int znondim_id, zfactor_id; - int var2d_ids[n2d]; - int var3d_ids[n3d]; - double data2d[lat * lon]; - double data3d[lev * lat * lon]; - double alats[lat]; - double alons[lon]; - int ilats[lat]; - int ilons[lon]; - double plevs[lev]; - int iplevs[lev]; - long lplevs[lev]; - float fplevs[lev]; - double Time[2]; - double bnds_time[4]; - double bnds_lat[lat * 2]; - double bnds_lon[lon * 2]; - double zlevs[lev]; - double zlev_bnds[lev + 1]; - - double a_coeff[lev] = { 0.1, 0.2, 0.3, 0.22, 0.1 }; - double b_coeff[lev] = { 0.0, 0.1, 0.2, 0.5, 0.8 }; - float p0 = 1.e5; - double a_coeff_bnds[lev + 1] = { 0., .15, .25, .25, .16, 0. }; - double b_coeff_bnds[lev + 1] = { 0., .05, .15, .35, .65, 1. }; - int ilon, ilat, ipres, ilev, itim; - double dtmp, dtmp2; - - /* Other variables: */ - /* --------------------- */ - - int it, m, i, ierr, j; - int myaxes[10]; - int myaxes2[10]; - int myvars[10]; - char id[CMOR_MAX_STRING]; - char units[CMOR_MAX_STRING]; - char interval[CMOR_MAX_STRING]; - char anames[25][CMOR_MAX_STRING]; - char type; - char regions[5][23] = - { "atlantic_arctic_ocean", "indian_pacific_ocean", "pacific_ocean", - "global_ocean", "sf_bay" - }; - double timestest[5]; - /* Externals funcs */ - int tables[5]; - char msg[555]; - double bt = 0.; - /* ================================ */ - /* Execution begins here: */ - /* ================================ */ - - /* Read coordinate information from model into arrays that will be passed */ - /* to CMOR. */ - /* Read latitude, longitude, and pressure coordinate values into */ - /* alats, alons, and plevs, respectively. Also generate latitude and */ - /* longitude bounds, and store in bnds_lat and bnds_lon, respectively. */ - /* Note that all variable names in this code can be freely chosen by */ - /* the user. */ - - /* The user must write the subroutine that fills the coordinate arrays */ - /* and their bounds with actual data. The following line is simply a */ - /* a place-holder for the user's code, which should replace it. */ - - /* *** possible user-written call *** */ - - m = CMOR_EXIT_ON_MAJOR; - j = CMOR_REPLACE_4; - i = 1; - it = 0; - printf("ok mode is:%i\n", m); - ierr = cmor_setup(NULL, &j, NULL, &m, NULL, &i); //," ipcc_test.LOG "); - - read_coords(&alats[0], &alons[0], &iplevs[0], &bnds_lat[0], &bnds_lon[0], - lon, lat, lev); - int tmpmo[12]; - printf("Test code: ok init cmor\n"); - char c1[CMOR_MAX_STRING]; - char c2[CMOR_MAX_STRING]; - strcpy(c1, "GICCM1(2002)\0"); - strcpy(c2, "Nat\0"); - - printf("yep: %s, %s\n", c1, c2); - ierr = cmor_dataset_json("Test/CMOR_input_example.json"); - - printf("Test code: ok load cmor table(s)\n"); - ierr = cmor_load_table("Tables/CMIP6_Omon.json", &tables[0]); - ierr = cmor_load_table("Tables/CMIP6_Amon.json", &tables[1]); - - strcpy(id, "time"); - strcpy(units, "months since 1980"); - strcpy(interval, "1 month"); - - read_time(0, &Time[0], &bnds_time[0]); - read_time(1, &Time[1], &bnds_time[2]); - ierr = - cmor_axis(&myaxes[0], id, units, ntimes, &Time[0], 'd', &bnds_time[0], 2, - interval); - - strcpy(id, "latitude"); - strcpy(units, "degrees_north"); - strcpy(interval, ""); - ierr = - cmor_axis(&myaxes[1], id, units, lat, &alats, 'd', &bnds_lat, 2, - interval); - - strcpy(id, "longitude"); - strcpy(units, "degrees_east"); - ierr = - cmor_axis(&myaxes[2], id, units, lon, &alons, 'd', &bnds_lon, 2, - interval); - - strcpy(id, "plev19"); - strcpy(units, "hPa"); - ierr = - cmor_axis(&myaxes[3], id, units, lev, &iplevs, 'i', NULL, 0, interval); - - zlevs[0] = 0.1; - zlevs[1] = 0.3; - zlevs[2] = 0.5; - zlevs[3] = 0.72; - zlevs[4] = 0.9; - - zlev_bnds[0] = 0.; - zlev_bnds[1] = .2; - zlev_bnds[2] = .42; - zlev_bnds[3] = .62; - zlev_bnds[4] = .8; - zlev_bnds[5] = 1.; -/* p0 = 1.e5; */ -/* a_coeff = { 0.1, 0.2, 0.3, 0.22, 0.1 }; */ -/* b_coeff = { 0.0, 0.1, 0.2, 0.5, 0.8 }; */ - -/* a_coeff_bnds={0.,.15, .25, .25, .16, 0.}; */ -/* b_coeff_bnds={0.,.05, .15, .35, .65, 1.}; */ - - ierr = - cmor_axis(&myaxes[4], "standard_hybrid_sigma", "1", 5, &zlevs, 'd', - &zlev_bnds, 1, interval); - - cmor_set_table(tables[0]); - /* ok here we declare a "regions" axis */ - printf("Test code: defining axis region \n"); - ierr = - cmor_axis(&myaxes[5], "basin", "", 4, ®ions[0], 'c', NULL, 23, - interval); - - printf("Test code: Redefining time/lat from O table\n"); - - strcpy(id, "time"); - strcpy(units, "months since 1980"); - strcpy(interval, "1 month"); - read_time(0, &Time[0], &bnds_time[0]); - read_time(1, &Time[1], &bnds_time[2]); - ierr = - cmor_axis(&myaxes[7], id, units, ntimes, &Time[0], 'd', &bnds_time[0], 2, - interval); - - strcpy(id, "latitude"); - strcpy(units, "degrees_north"); - strcpy(interval, ""); - ierr = - cmor_axis(&myaxes[8], id, units, lat, &alats, 'd', &bnds_lat, 2, - interval); - - cmor_set_table(tables[1]); - - dtmp = -999; - dtmp2 = 1.e-4; - myaxes2[0] = myaxes[0]; - myaxes2[1] = myaxes[3]; - myaxes2[2] = myaxes[1]; - myaxes2[3] = myaxes[2]; - - printf("Test code: defining variables from table 1, %s\n", positive2d[0]); - ierr = - cmor_variable(&myvars[0], entry2d[0], units2d[0], 3, myaxes, 'd', &dtmp, - &dtmp2, positive2d[0], varin2d[0], "no history", - "no future"); - ierr = - cmor_variable(&myvars[1], entry3d[2], units3d[2], 4, myaxes2, 'd', NULL, - &dtmp2, NULL, varin3d[2], "no history", "no future"); - - printf("Test code: definig tas\n"); - ierr = - cmor_variable(&myvars[5], "tas", "K", 3, myaxes, 'd', NULL, &dtmp2, NULL, - "TS", "no history", "no future"); - - myaxes2[1] = myaxes[4]; - ierr = - cmor_variable(&myvars[2], entry3d[0], units3d[0], 4, myaxes2, 'd', NULL, - &dtmp2, NULL, varin3d[0], "no history", "no future"); - ierr = - cmor_zfactor(&myvars[3], myaxes2[1], "p0", "Pa", 0, NULL, 'f', &p0, NULL); - ierr = - cmor_zfactor(&myvars[3], myaxes2[1], "b", "", 1, &myaxes2[1], 'd', - &b_coeff, &b_coeff_bnds); - ierr = - cmor_zfactor(&myvars[3], myaxes2[1], "a", "", 1, &myaxes2[1], 'd', - &a_coeff, &a_coeff_bnds); -/* printf("defining ap\n"); */ -/* for(i=0;i<5;i++) {a_coeff[i]*=1.e3;printf("sending acoef: %i, %lf\n",i,a_coeff[i]);} */ -/* for(i=0;i<6;i++) {a_coeff_bnds[i]*=1.e5;printf("sending acoef: %i, %lf\n",i,a_coeff_bnds[i]);} */ -/* ierr = cmor_zfactor(&myvars[3],myaxes2[1],"ap","hPa",1,&myaxes2[1],'d',&a_coeff,&a_coeff_bnds); */ - ierr = - cmor_zfactor(&myvars[3], myaxes2[1], "ps", "hPa", 3, &myaxes[0], 'd', - NULL, NULL); - - /* ok here we decalre a variable for region axis testing */ - cmor_set_table(tables[0]); - myaxes2[0] = myaxes[7]; /* time */ - myaxes2[1] = myaxes[5]; /* region */ - myaxes2[2] = myaxes[8]; /* latitudes */ - printf("Test code: ok we define hfogo positive: %s\n", positive2d[0]); - ierr = - cmor_variable(&myvars[4], "htovgyre", "W", 3, myaxes2, 'd', NULL, &dtmp2, - NULL, varin2d[0], "no history", "no future"); - - cmor_set_table(tables[1]); - - for (i = 0; i < ntimes; i++) { - printf("Test code: writing time: %i of %i\n", i + 1, ntimes); - - printf("2d\n"); - read_2d_input_files(i, varin2d[0], &data2d, lat, lon); - sprintf(id, "%i", i); - ierr = cmor_write(myvars[0], &data2d, 'd', NULL, 1, NULL, NULL, NULL); - if (ierr) - return (1); - printf("3d\n"); - read_3d_input_files(i, varin3d[2], &data3d, lev, lat, lon); - ierr = cmor_write(myvars[1], &data3d, 'd', NULL, 1, NULL, NULL, NULL); - if (ierr) - return (1); - - printf("writing tas\n"); - read_2d_input_files(i, varin2d[1], &data2d, lat, lon); - ierr = cmor_write(myvars[5], &data2d, 'd', NULL, 1, NULL, NULL, NULL); - if (ierr) - return (1); - - printf("3d zfactor\n"); - read_3d_input_files(i, varin3d[0], &data3d, 5, lat, lon); - ierr = cmor_write(myvars[2], &data3d, 'd', NULL, 1, NULL, NULL, NULL); - if (ierr) - return (1); - - printf("writing ps\n"); - read_2d_input_files(i, varin2d[3], &data2d, lat, lon); - ierr = cmor_write(myvars[3], &data2d, 'd', NULL, 1, NULL, NULL, &myvars[2]); - if (ierr) - return (1); - - /* rereading hfls to fake hfogo */ - printf("2d region\n"); - read_2d_input_files(i, "htov", &data2d, lat, lon); - ierr = cmor_write(myvars[4], &data2d, 'd', NULL, 1, NULL, NULL, NULL); - if (ierr) - return (1); - - } - ierr = cmor_close_variable(myvars[0], NULL, NULL); - ierr = cmor_close(); - return (0); -} +{% include_relative examples/c/example_03_scalar_height_tas.c %} +``` + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/c/example_03_scalar_height_tas.cdl %} +``` + +
+ +### Example 4: Basin Axis + +* [example_04_basin_axis.c]({{site.baseurl}}/mydoc/examples/c/example_04_basin_axis.c){:target="_blank"} + +
Click to expand C code + +```c +{% include_relative examples/c/example_04_basin_axis.c %} +``` + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/c/example_04_basin_axis.cdl %} +``` + +
+ +### Example 5: Hybrid Sigma Model Levels + +* [example_05_hybrid_sigma_levels.c]({{site.baseurl}}/mydoc/examples/c/example_05_hybrid_sigma_levels.c){:target="_blank"} + +
Click to expand C code + +```c +{% include_relative examples/c/example_05_hybrid_sigma_levels.c %} +``` + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/c/example_05_hybrid_sigma_levels.cdl %} +``` + +
+ +### Example 6: Curvilinear Grid + +* [example_06_curvilinear_grid.c]({{site.baseurl}}/mydoc/examples/c/example_06_curvilinear_grid.c){:target="_blank"} + +
Click to expand C code + +```c +{% include_relative examples/c/example_06_curvilinear_grid.c %} +``` + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/c/example_06_curvilinear_grid.cdl %} +``` + +
+ +### Example 7: Fixed Field + +* [example_07_fixed_field_rootd.c]({{site.baseurl}}/mydoc/examples/c/example_07_fixed_field_rootd.c){:target="_blank"} + +
Click to expand C code + +```c +{% include_relative examples/c/example_07_fixed_field_rootd.c %} +``` + +
+ +
Click to expand NetCDF dump +```text +{% include_relative examples/c/example_07_fixed_field_rootd.cdl %} ```
diff --git a/mydoc/mydoc_cmor3_fortran.md b/mydoc/mydoc_cmor3_fortran.md index df5d301..dced2f2 100644 --- a/mydoc/mydoc_cmor3_fortran.md +++ b/mydoc/mydoc_cmor3_fortran.md @@ -1,602 +1,218 @@ --- -title: Fortran Example -tags: [examples, fortran] -keywords: example, Fortran +title: Fortran Examples +tags: [examples, fortran, cmip7] +keywords: example, Fortran, cmip7 sidebar: mydoc_sidebar permalink: /mydoc_cmor3_fortran/ --- -### CMOR user input +These examples are based on the CMOR repository's [examples/fortran](https://github.com/PCMDI/cmor/tree/main/examples/fortran){:target="_blank"} directory. They use the same shared CMIP7 user input file as the Python examples and load CMIP7 tables from a local clone of [WCRP-CMIP/cmip7-cmor-tables](https://github.com/WCRP-CMIP/cmip7-cmor-tables){:target="_blank"}. -* [CMOR_input_example.json](https://github.com/PCMDI/cmor/blob/main/Test/CMOR_input_example.json) +Create and activate a Conda or Mamba environment with CMOR and a Fortran compiler: -
Click to expand json file +```bash +mamba create -n cmor-fortran -c conda-forge cmor fortran-compiler udunits2 +mamba activate cmor-fortran +``` + +If you use Conda instead of Mamba, use the same package list: + +```bash +conda create -n cmor-fortran -c conda-forge cmor fortran-compiler udunits2 +conda activate cmor-fortran +``` + +Install the CMIP7 tables in the working directory where you will run the examples: + +```bash +git clone https://github.com/WCRP-CMIP/cmip7-cmor-tables.git +``` + +Run the examples from a working directory that contains the `cmip7-cmor-tables` repository using the [run_examples.sh]({{site.baseurl}}/mydoc/examples/fortran/run_examples.sh){:target="_blank"} script: + +```bash +chmod a+x run_examples.sh +./run_examples.sh +``` + +The examples expect tables under `./cmip7-cmor-tables/tables` in the directory where you run the script. To use a different table location, set `CMOR_TABLES_PATH` to the directory containing the CMIP7 table JSON files. To use a different user input file, set `CMOR_INPUT_PATH`. + +Each example builds the CMIP7 compound variable name and uses it to read `CMIP7_cell_measures.json` and `CMIP7_long_name_overrides.json` before writing data. The fixed-field example overrides `frequency` from the shared user input file to `fx`. + +### CMOR Input Files + +* [CMIP7_input_example.json]({{site.baseurl}}/mydoc/examples/CMIP7_input_example.json){:target="_blank"} +* [CMIP7_coordinate.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_coordinate.json){:target="_blank"} +* [CMIP7_formula_terms.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_formula_terms.json){:target="_blank"} +* [CMIP7_cell_measures.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_cell_measures.json){:target="_blank"} +* [CMIP7_long_name_overrides.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_long_name_overrides.json){:target="_blank"} +* [cmor-cvs.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables-cvs/cmor-cvs.json){:target="_blank"} + +
Click to expand shared JSON input ```json -{ - "#note": "explanation of what source_type is goes here", - "source_type": "AOGCM ISM AER", +{% include_relative examples/CMIP7_input_example.json %} +``` - "#note": "CMIP6 valid experiment_ids are found in CMIP6_CV.json", - "experiment_id": "piControl-withism", - "activity_id": "ISMIP6", - "sub_experiment_id": "none", +
- "realization_index": "3", - "initialization_index": "1", - "physics_index": "1", - "forcing_index": "1", +### Common Fortran Utilities - "#note": "Text stored in attribute variant_info (recommended, not required description of run variant)", - "run_variant": "3rd realization", +* [cmip7_fortran_common.f90]({{site.baseurl}}/mydoc/examples/fortran/cmip7_fortran_common.f90){:target="_blank"} +* [run_examples.sh]({{site.baseurl}}/mydoc/examples/fortran/run_examples.sh){:target="_blank"} - "parent_experiment_id": "historical", - "parent_activity_id": "CMIP", - "parent_source_id": "PCMDI-test-1-0", - "parent_variant_label": "r3i1p1f1", +
Click to expand common Fortran code - "parent_time_units": "days since 1850-01-01", - "branch_method": "standard", - "branch_time_in_child": 59400.0, - "branch_time_in_parent": 59400.0, +```fortran +{% include_relative examples/fortran/cmip7_fortran_common.f90 %} +``` - "#note": "institution_id must be registered at https://github.com/WCRP-CMIP/CMIP6_CVs/issues/new ", - "institution_id": "PCMDI", +
- "#note": "source_id (model name) must be registered at https://github.com/WCRP-CMIP/CMIP6_CVs/issues/new ", - "source_id": "PCMDI-test-1-0", +
Click to expand runner script - "calendar": "360_day", +```bash +{% include_relative examples/fortran/run_examples.sh %} +``` - "grid": "native atmosphere regular grid (3x4 latxlon)", - "grid_label": "gn", - "nominal_resolution": "10000 km", +
- "license": "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.", +### Example 1: Regular Grid Ocean Field - "#output": "Root directory for output (can be either a relative or full path)", - "outpath": "CMIP6", +* [example_01_regular_grid_tos.f90]({{site.baseurl}}/mydoc/examples/fortran/example_01_regular_grid_tos.f90){:target="_blank"} - "#note": " **** The following descriptors are optional and may be set to an empty string ", +
Click to expand Fortran code - "contact ": "Python Coder (coder@a.b.c.com)", - "history": "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.", - "comment": "", - "references": "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'", +```fortran +{% include_relative examples/fortran/example_01_regular_grid_tos.f90 %} +``` - "#note": " **** The following will be obtained from the CV and do not need to be defined here", +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/fortran/example_01_regular_grid_tos.cdl %} +``` + +
- "sub_experiment": "none", - "institution": "", - "source": "PCMDI-test 1.0 (1989)", +### Example 2: 3-D Field on Pressure Levels - "#note": " **** The following are set correctly for CMIP6 and should not normally need editing", +* [example_02_pressure_levels.f90]({{site.baseurl}}/mydoc/examples/fortran/example_02_pressure_levels.f90){:target="_blank"} - "_controlled_vocabulary_file": "CMIP6_CV.json", - "_AXIS_ENTRY_FILE": "CMIP6_coordinate.json", - "_FORMULA_VAR_FILE": "CMIP6_formula_terms.json", - "_cmip6_option": "CMIP6", +
Click to expand Fortran code - "mip_era": "CMIP6", - "parent_mip_era": "CMIP6", +```fortran +{% include_relative examples/fortran/example_02_pressure_levels.f90 %} +``` - "tracking_prefix": "hdl:21.14100", - "_history_template": "%s ;rewrote data to be consistent with for variable found in table .", +
- "#output_path_template": "Template for output path directory using tables keys or global attributes, these should follow the relevant data reference syntax", - "output_path_template": "<_member_id>
", - "output_file_template": "
<_member_id>", -} +
Click to expand NetCDF dump +```text +{% include_relative examples/fortran/example_02_pressure_levels.cdl %} ``` +
-### Fortran source code +### Example 3: Scalar Height Coordinate -* [ipcc_test_code.f90](https://github.com/PCMDI/cmor/blob/main/Test/ipcc_test_code.f90) -* [reader_2D_3D.f90](https://github.com/PCMDI/cmor/blob/main/Test/reader_2D_3D.f90) +* [example_03_scalar_height_tas.f90]({{site.baseurl}}/mydoc/examples/fortran/example_03_scalar_height_tas.f90){:target="_blank"}
Click to expand Fortran code ```fortran -!!$pgf90 -I/work/NetCDF/5.1/include -L/work/NetCDF/5.1/lib -l netcdf -L. -l cmor Test/test_dimensionless.f90 -IModules -o cmor_test -!!$pgf90 -g -I/pcmdi/charles_work/NetCDF/include -L/pcmdi/charles_work/NetCDF/lib -lnetcdf -module Modules -IModules -L. -lcmor -I/pcmdi/charles_work/Unidata/include -L/pcmdi/charles_work/Unidata/lib -ludunits Test/test_dimensionless.f90 -o cmor_test - -MODULE local_subs - -USE cmor_users_functions -PRIVATE -PUBLIC read_coords, read_time, read_3d_input_files, read_2d_input_files -CONTAINS - -SUBROUTINE read_coords(alats, alons, plevs, bnds_lat, bnds_lon) - - IMPLICIT NONE - - DOUBLE PRECISION, INTENT(OUT), DIMENSION(:) :: alats - DOUBLE PRECISION, INTENT(OUT), DIMENSION(:) :: alons - DOUBLE PRECISION, INTENT(OUT), DIMENSION(:) :: plevs - DOUBLE PRECISION, INTENT(OUT), DIMENSION(:,:) :: bnds_lat - DOUBLE PRECISION, INTENT(OUT), DIMENSION(:,:) :: bnds_lon - - INTEGER :: i - - DO i = 1, SIZE(alons) - alons(i) = (i-1)*360./SIZE(alons) - bnds_lon(1,i) = (i - 1.5)*360./SIZE(alons) - bnds_lon(2,i) = (i - 0.5)*360./SIZE(alons) - END DO - - DO i = 1, SIZE(alats) - alats(i) = (size(alats)+1-i)*10 - bnds_lat(1,i) = (size(alats)+1-i)*10 + 5. - bnds_lat(2,i) = (size(alats)+1-i)*10 - 5. - END DO - - DO i = 1, SIZE(plevs) - plevs(i) = i*1.0e4 - END DO - plevs = (/100000., 92500., 85000., 70000.,& - 60000., 50000., 40000., 30000., 25000., 20000.,& - 15000., 10000., 7000., 5000., 3000., 2000., 1000., 500., 100./) - - RETURN -END SUBROUTINE read_coords - -SUBROUTINE read_time(it, time, time_bnds) - - IMPLICIT NONE - - INTEGER, INTENT(IN) :: it - DOUBLE PRECISION, INTENT(OUT) :: time - DOUBLE PRECISION, INTENT(OUT), DIMENSION(2,1) :: time_bnds - - time = (it-0.5)*30. - time_bnds(1,1) = (it-1)*30. - time_bnds(2,1) = it*30. - - RETURN -END SUBROUTINE read_time - -INCLUDE "reader_2D_3D.f90" - -END MODULE local_subs - - -PROGRAM ipcc_test_code -! -! Purpose: To serve as a generic example of an application that -! uses the "Climate Model Output Rewriter" (CMOR) - -! CMOR writes CF-compliant netCDF files. -! Its use is strongly encouraged by the IPCC and is intended for use -! by those participating in many community-coordinated standard -! climate model experiments (e.g., AMIP, CMIP, CFMIP, PMIP, APE, -! etc.) -! -! Background information for this sample code: -! -! Atmospheric standard output requested by IPCC are listed in -! tables available on the web. Monthly mean output is found in -! tables A1a and A1c. This sample code processes only two 3-d -! variables listed in table A1c ("monthly mean atmosphere 3-D data" -! and only four 2-d variables listed in table A1a ("monthly mean -! atmosphere + land surface 2-D (latitude, longitude) data"). The -! extension to many more fields is trivial. -! -! For this example, the user must fill in the sections of code that -! extract the 3-d and 2-d fields from his monthly mean "history" -! files (which usually contain many variables but only a single time -! slice). The CMOR code will write each field in a separate file, but -! many monthly mean time-samples will be stored together. These -! constraints partially determine the structure of the code. -! -! -! Record of revisions: - -! Date Programmer(s) Description of change -! ==== ========== ===================== -! 10/22/03 Rusty Koder Original code -! 1/28/04 Les R. Koder Revised to be consistent -! with evolving code design - -! include module that contains the user-accessible cmor functions. -USE cmor_users_functions -USE local_subs - -IMPLICIT NONE - -! dimension parameters: -! --------------------------------- -INTEGER, PARAMETER :: ntimes = 2 ! number of time samples to process -INTEGER, PARAMETER :: lon = 4 ! number of longitude grid cells -INTEGER, PARAMETER :: lat = 3 ! number of latitude grid cells -INTEGER, PARAMETER :: lev = 5 ! number of standard pressure levels -INTEGER, PARAMETER :: lev2 = 19 ! number of standard pressure levels -INTEGER, PARAMETER :: n2d = 4 ! number of IPCC Table A1a fields to be - ! output. -INTEGER, PARAMETER :: n3d = 3 ! number of IPCC Table A1c fields to - ! be output. - -! Tables associating the user's variables with IPCC standard output -! variables. The user may choose to make this association in a -! different way (e.g., by defining values of pointers that allow him -! to directly retrieve data from a data record containing many -! different variables), but in some way the user will need to map his -! model output onto the Tables specifying the MIP standard output. - -! ---------------------------------- - - ! My variable names for IPCC Table A1c fields -CHARACTER (LEN=5), DIMENSION(n3d) :: & - varin3d=(/'CLOUD', 'U ', 'T '/) - - ! Units appropriate to my data -CHARACTER (LEN=5), DIMENSION(n3d) :: & - units3d=(/ '% ', 'm s-1', 'K ' /) - - ! Corresponding IPCC Table A1c entry (variable name) -CHARACTER (LEN=2), DIMENSION(n3d) :: entry3d = (/ 'cl', 'ua', 'ta' /) - - ! My variable names for IPCC Table A1a fields -CHARACTER (LEN=8), DIMENSION(n2d) :: & - varin2d=(/ 'LATENT ', 'TSURF ', 'SOIL_WET', 'PSURF ' /) - - ! Units appropriate to my data - CHARACTER (LEN=6), DIMENSION(n2d) :: & - units2d=(/ 'W m-2 ', 'K ', 'kg m-2', 'Pa ' /) - - CHARACTER (LEN=4), DIMENSION(n2d) :: & - positive2d= (/ 'down', ' ', ' ', ' ' /) - - ! Corresponding IPCC Table A1a entry (variable name) -CHARACTER (LEN=5), DIMENSION(n2d) :: & - entry2d = (/ 'hfls ', 'tas ', 'mrsos', 'ps ' /) - -! uninitialized variables used in communicating with CMOR: -! --------------------------------------------------------- - -INTEGER :: error_flag -INTEGER :: znondim_id, zfactor_id -INTEGER, DIMENSION(n2d) :: var2d_ids -INTEGER, DIMENSION(n3d) :: var3d_ids -REAL, DIMENSION(lon,lat) :: data2d -REAL, DIMENSION(lon,lat,lev2) :: data3d -DOUBLE PRECISION, DIMENSION(lat) :: alats -DOUBLE PRECISION, DIMENSION(lon) :: alons -DOUBLE PRECISION, DIMENSION(lev2) :: plevs -DOUBLE PRECISION, DIMENSION(1) :: time -DOUBLE PRECISION, DIMENSION(2,1):: bnds_time -DOUBLE PRECISION, DIMENSION(2,lat) :: bnds_lat -DOUBLE PRECISION, DIMENSION(2,lon) :: bnds_lon -DOUBLE PRECISION, DIMENSION(lev) :: zlevs -DOUBLE PRECISION, DIMENSION(lev+1) :: zlev_bnds -REAL, DIMENSION(lev) :: a_coeff -REAL, DIMENSION(lev) :: b_coeff -REAL :: p0 -REAL, DIMENSION(lev+1) :: a_coeff_bnds -REAL, DIMENSION(lev+1) :: b_coeff_bnds -INTEGER :: ilon, ilat, ipres, ilev, itim, itim2, ilon2,ilat2 -DOUBLE PRECISION bt - -character(256):: outpath,mycal - -! Other variables: -! --------------------- - -INTEGER :: it, m -bt=0. -! ================================ -! Execution begins here: -! ================================ - -! Read coordinate information from model into arrays that will be passed -! to CMOR. -! Read latitude, longitude, and pressure coordinate values into -! alats, alons, and plevs, respectively. Also generate latitude and -! longitude bounds, and store in bnds_lat and bnds_lon, respectively. -! Note that all variable names in this code can be freely chosen by -! the user. - -! The user must write the subroutine that fills the coordinate arrays -! and their bounds with actual data. The following line is simply a -! a place-holder for the user's code, which should replace it. - -! *** possible user-written call *** - -call read_coords(alats, alons, plevs, bnds_lat, bnds_lon) - -! Specify path where tables can be found and indicate that existing -! netCDF files should not be overwritten. - -error_flag = cmor_setup(inpath='Test', netcdf_file_action='replace') - -! Define dataset as output from the GICC model (first member of an -! ensemble of simulations) run under IPCC 2xCO2 equilibrium -! experiment conditions, and provide information to be included as -! attributes in all CF-netCDF files written as part of this dataset. - -mycal = '360_day' - -error_flag = cmor_dataset_json("Test/CMOR_input_example.json") - - -! Define all axes that will be needed - -ilat = cmor_axis( & - table='Tables/CMIP6_Amon.json', & - table_entry='latitude', & - units='degrees_north', & - length=lat, & - coord_vals=alats, & - cell_bounds=bnds_lat) - -ilon2 = cmor_axis( & - table='Tables/CMIP6_Lmon.json', & - table_entry='longitude', & - length=lon, & - units='degrees_east', & - coord_vals=alons, & - cell_bounds=bnds_lon) - -ilat2 = cmor_axis( & - table='Tables/CMIP6_Lmon.json', & - table_entry='latitude', & - units='degrees_north', & - length=lat, & - coord_vals=alats, & - cell_bounds=bnds_lat) - -ilon = cmor_axis( & - table='Tables/CMIP6_Amon.json', & - table_entry='longitude', & - length=lon, & - units='degrees_east', & - coord_vals=alons, & - cell_bounds=bnds_lon) - -ipres = cmor_axis( & - table='Tables/CMIP6_Amon.json', & - table_entry='plev19', & - units='Pa', & - length=lev2, & - coord_vals=plevs) - -! note that the time axis is defined next, but the time coordinate -! values and bounds will be passed to cmor through function -! cmor_write (later, below). - -itim = cmor_axis( & - table='Tables/CMIP6_Amon.json', & - table_entry='time', & - units='days since 2030-1-1', & - length=ntimes, & - interval='20 minutes') -itim2 = cmor_axis( & - table='Tables/CMIP6_Lmon.json', & - table_entry='time', & - units='days since 2030-1-1', & - length=ntimes, & - interval='20 minutes') - -! define model eta levels (although these must be provided, they will -! actually be replaced by a+b before writing the netCDF file) -zlevs = (/ 0.1, 0.3, 0.55, 0.7, 0.9 /) -zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /) - -ilev = cmor_axis( & - table='Tables/CMIP6_Amon.json', & - table_entry='standard_hybrid_sigma', & - units='1', & - length=lev, & - coord_vals=zlevs, & - cell_bounds=zlev_bnds) - -! define z-factors needed to transform from model level to pressure -p0 = 1.e5 -a_coeff = (/ 0.1, 0.2, 0.3, 0.22, 0.1 /) -b_coeff = (/ 0.0, 0.1, 0.2, 0.5, 0.8 /) - -a_coeff_bnds=(/0.,.15, .25, .25, .16, 0./) -b_coeff_bnds=(/0.,.05, .15, .35, .65, 1./) - -error_flag = cmor_zfactor( & - zaxis_id=ilev, & - zfactor_name='p0', & - units='Pa', & - zfactor_values = p0) - -error_flag = cmor_zfactor( & - zaxis_id=ilev, & - zfactor_name='b', & - axis_ids= (/ ilev /), & - zfactor_values = b_coeff, & - zfactor_bounds = b_coeff_bnds ) - -error_flag = cmor_zfactor( & - zaxis_id=ilev, & - zfactor_name='a', & - axis_ids= (/ ilev /), & - zfactor_values = a_coeff, & - zfactor_bounds = a_coeff_bnds ) - -zfactor_id = cmor_zfactor( & - zaxis_id=ilev, & - zfactor_name='ps', & - axis_ids=(/ ilon, ilat, itim /), & - units='Pa' ) - -! Define the only field to be written that is a function of model level -! (appearing in IPCC table A1c) - -var3d_ids(1) = cmor_variable( & - table='Tables/CMIP6_Amon.json', & - table_entry=entry3d(1), & - units=units3d(1), & - axis_ids=(/ ilon, ilat, ilev, itim /), & - missing_value=1.0e28, & - original_name=varin3d(1)) - -! Define variables appearing in IPCC table A1c that are a function of pressure -! (3-d variables) - -DO m=2,n3d - var3d_ids(m) = cmor_variable( & - table='Tables/CMIP6_Amon.json', & - table_entry=entry3d(m), & - units=units3d(m), & - axis_ids=(/ ilon, ilat, ipres, itim /), & - missing_value=1.0e28, & - original_name=varin3d(m)) -ENDDO - - -! Define variables appearing in IPCC table A1a (2-d variables) - -DO m=1,n2d - if (m.ne.3) then - var2d_ids(m) = cmor_variable( & - table='Tables/CMIP6_Amon.json', & - table_entry=entry2d(m), & - units=units2d(m), & - axis_ids=(/ ilon, ilat, itim /), & - missing_value=1.0e28, & - positive=positive2d(m), & - original_name=varin2d(m)) -else - var2d_ids(m) = cmor_variable( & - table='Tables/CMIP6_Lmon.json', & - table_entry=entry2d(m), & - units=units2d(m), & - axis_ids=(/ ilon2, ilat2, itim2 /), & - missing_value=1.0e28, & - positive=positive2d(m), & - original_name=varin2d(m)) -endif -ENDDO - -PRINT*, ' ' -PRINT*, 'completed everything up to writing output fields ' -PRINT*, ' ' - -! Loop through history files (each containing several different fields, -! but only a single month of data, averaged over the month). Then -! extract fields of interest and write these to netCDF files (with -! one field per file, but all months included in the loop). - -time_loop: DO it=1, ntimes - - ! In the following loops over the 3d and 2d fields, the user-written - ! subroutines (read_3d_input_files and read_2d_input_files) retrieve - ! the requested IPCC table A1c and table A1a fields and store them in - ! data3d and data2d, respectively. In addition a user-written code - ! (read_time) retrieves the time and time-bounds associated with the - ! time sample (in units of 'days since 1970-1-1', consistent with the - ! axis definitions above). The bounds are set to the beginning and - ! the end of the month retrieved, indicating the averaging period. - - ! The user must write a code to obtain the times and time-bounds for - ! the time slice. The following line is simply a place-holder for - ! the user's code, which should replace it. - - call read_time(it, time(1), bnds_time) - - call read_3d_input_files(it, varin3d(1), data3d) - - error_flag = cmor_write( & - var_id = var3d_ids(1), & - data = data3d, & - ntimes_passed = 1, & - time_vals = time, & - time_bnds = bnds_time ) - - call read_2d_input_files(it, varin2d(4), data2d) - - error_flag = cmor_write( & - var_id = zfactor_id, & - data = data2d, & - ntimes_passed = 1, & - time_vals = time, & - time_bnds = bnds_time, & - store_with = var3d_ids(1) ) - - ! Cycle through the 3-d fields (stored on pressure levels), - ! and retrieve the requested variable and append each to the - ! appropriate netCDF file. - - DO m=2,n3d - - ! The user must write the code that fills the arrays of data - ! that will be passed to CMOR. The following line is simply a - ! a place-holder for the user's code, which should replace it. - - call read_3d_input_files(it, varin3d(m), data3d) - - ! append a single time sample of data for a single field to - ! the appropriate netCDF file. - error_flag = cmor_write( & - var_id = var3d_ids(m), & - data = data3d, & - ntimes_passed = 1, & - time_vals = time, & - time_bnds = bnds_time ) - - IF (error_flag < 0) THEN - ! write diagnostic messages to standard output device - write(*,*) ' Error encountered writing IPCC Table A1c ' & - // 'field ', entry3d(m), ', which I call ', varin3d(m) - write(*,*) ' Was processing time sample: ', time - - END IF - - END DO - - ! Cycle through the 2-d fields, retrieve the requested variable and - ! append each to the appropriate netCDF file. - - DO m=1,n2d - - ! The user must write the code that fills the arrays of data - ! that will be passed to CMOR. The following line is simply a - ! a place-holder for the user's code, which should replace it. - - call read_2d_input_files(it, varin2d(m), data2d) - - ! append a single time sample of data for a single field to - ! the appropriate netCDF file. - - error_flag = cmor_write( & - var_id = var2d_ids(m), & - data = data2d, & - ntimes_passed = 1, & - time_vals = time, & - time_bnds = bnds_time ) - - IF (error_flag < 0) THEN - ! write diagnostic messages to standard output device - write(*,*) ' Error encountered writing IPCC Table A1a ' & - // 'field ', entry2d(m), ', which I call ', varin2d(m) - write(*,*) ' Was processing time sample: ', time - - END IF - - END DO - -END DO time_loop - -! Close all files opened by CMOR. - -error_flag = cmor_close() - -print*, ' ' -print*, '******************************' -print*, ' ' -print*, 'ipcc_test_code executed to completion ' -print*, ' ' -print*, '******************************' - -END PROGRAM ipcc_test_code +{% include_relative examples/fortran/example_03_scalar_height_tas.f90 %} +``` +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/fortran/example_03_scalar_height_tas.cdl %} +``` + +
+ +### Example 4: Basin Axis + +* [example_04_basin_axis.f90]({{site.baseurl}}/mydoc/examples/fortran/example_04_basin_axis.f90){:target="_blank"} + +
Click to expand Fortran code + +```fortran +{% include_relative examples/fortran/example_04_basin_axis.f90 %} ``` -
\ No newline at end of file + + +
Click to expand NetCDF dump + +```text +{% include_relative examples/fortran/example_04_basin_axis.cdl %} +``` + +
+ +### Example 5: Hybrid Sigma Model Levels + +* [example_05_hybrid_sigma_levels.f90]({{site.baseurl}}/mydoc/examples/fortran/example_05_hybrid_sigma_levels.f90){:target="_blank"} + +
Click to expand Fortran code + +```fortran +{% include_relative examples/fortran/example_05_hybrid_sigma_levels.f90 %} +``` + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/fortran/example_05_hybrid_sigma_levels.cdl %} +``` + +
+ +### Example 6: Curvilinear Grid + +* [example_06_curvilinear_grid.f90]({{site.baseurl}}/mydoc/examples/fortran/example_06_curvilinear_grid.f90){:target="_blank"} + +
Click to expand Fortran code + +```fortran +{% include_relative examples/fortran/example_06_curvilinear_grid.f90 %} +``` + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/fortran/example_06_curvilinear_grid.cdl %} +``` + +
+ +### Example 7: Fixed Field + +* [example_07_fixed_field_rootd.f90]({{site.baseurl}}/mydoc/examples/fortran/example_07_fixed_field_rootd.f90){:target="_blank"} + +
Click to expand Fortran code + +```fortran +{% include_relative examples/fortran/example_07_fixed_field_rootd.f90 %} +``` + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/fortran/example_07_fixed_field_rootd.cdl %} +``` + +
diff --git a/mydoc/mydoc_cmor3_python.md b/mydoc/mydoc_cmor3_python.md index 1f164db..850b58c 100644 --- a/mydoc/mydoc_cmor3_python.md +++ b/mydoc/mydoc_cmor3_python.md @@ -1,1594 +1,189 @@ --- -title: Example Python -tags: [examples, python] -keywords: example, python +title: Python Examples +tags: [examples, python, cmip7] +keywords: example, python, cmip7 sidebar: mydoc_sidebar permalink: /mydoc_cmor3_python/ --- -### CMOR Input Files +These examples are based on the CMOR repository's [examples/python](https://github.com/PCMDI/cmor/tree/main/examples/python){:target="_blank"} directory. They use one shared CMIP7 user input file and load CMIP7 tables from a local clone of [WCRP-CMIP/cmip7-cmor-tables](https://github.com/WCRP-CMIP/cmip7-cmor-tables){:target="_blank"}. + +Install CMOR with conda: -* [CMOR_input_example.json](https://github.com/PCMDI/cmor/blob/main/Test/CMOR_input_example.json) -* [CMIP6_coordinate.json](https://github.com/PCMDI/cmip6-cmor-tables/blob/main/Tables/CMIP6_coordinate.json) -* [CMIP6_formula_terms.json](https://github.com/PCMDI/cmip6-cmor-tables/blob/main/Tables/CMIP6_formula_terms.json) -* [CMIP6_CV.json](https://github.com/PCMDI/cmip6-cmor-tables/blob/main/Tables/CMIP6_CV.json) -* [CMIP6_Amon.json](https://github.com/PCMDI/cmip6-cmor-tables/blob/main/Tables/CMIP6_Amon.json) -* [CMIP6_Omon.json](https://github.com/PCMDI/cmip6-cmor-tables/blob/main/Tables/CMIP6_Omon.json) +```bash +conda install -c conda-forge cmor +``` +or with pip: -### Example 1: Python source code +```bash +pip install cmor --extra-index-url https://pcmdi.github.io/cmor +``` -* [test_doc.py](https://github.com/PCMDI/cmor/blob/main/Test/test_doc.py) +Run the examples from a working directory that contains the `cmip7-cmor-tables` repository: -
Click to expand Python code - +```bash +git clone https://github.com/WCRP-CMIP/cmip7-cmor-tables.git +python /path/to/example_01_usual_2d_field.py +``` -```python -import cmor - -cmor.setup( - # inpath has to point to the CMOR - # tables path (CMIP6, input4MIPs or otherwise) - inpath='Tables', - netcdf_file_action=cmor.CMOR_REPLACE_4 -) - -cmor.dataset_json("Test/CMOR_input_example.json") - -# Loading this test table overwrites the normal CF checks on valid variable values. -# This is perfect for testing but shouldn't be done when writing real data. -table='CMIP6_Amon.json' -cmor.load_table(table) - - -# here is where you add your axes -itime = cmor.axis(table_entry= 'time', - units= 'days since 2000-01-01 00:00:00', - coord_vals= [15,], - cell_bounds= [0, 30]) -ilat = cmor.axis(table_entry= 'latitude', - units= 'degrees_north', - coord_vals= [0], - cell_bounds= [-1, 1]) -ilon = cmor.axis(table_entry= 'longitude', - units= 'degrees_east', - coord_vals= [90], - cell_bounds= [89, 91]) - -axis_ids = [itime,ilat,ilon] - -# here we create a variable with appropriate name, units and axes -varid = cmor.variable('ts', 'K', axis_ids) - -# then we can write the variable along with the data -cmor.write(varid, [273]) - -# finally we close the file and print where it was saved -outfile = cmor.close(varid, file_name=True) -print("File written to: {}".format(outfile)) -cmor.close() +The examples expect tables under `./cmip7-cmor-tables/tables`. To use a different location, set `CMOR_TABLES_PATH` to the directory containing the CMIP7 table JSON files. Each example also accepts `--output-dir` to choose where CMOR writes NetCDF output. +Each example builds the CMIP7 compound variable name and uses it to read `CMIP7_cell_measures.json` and `CMIP7_long_name_overrides.json` before writing data. +### CMOR Input Files + +* [CMIP7_input_example.json]({{site.baseurl}}/mydoc/examples/CMIP7_input_example.json){:target="_blank"} +* [CMIP7_coordinate.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_coordinate.json){:target="_blank"} +* [CMIP7_formula_terms.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_formula_terms.json){:target="_blank"} +* [CMIP7_cell_measures.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_cell_measures.json){:target="_blank"} +* [CMIP7_long_name_overrides.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables/CMIP7_long_name_overrides.json){:target="_blank"} +* [cmor-cvs.json](https://github.com/WCRP-CMIP/cmip7-cmor-tables/blob/main/tables-cvs/cmor-cvs.json){:target="_blank"} + +
Click to expand shared JSON input + +```json +{% include_relative examples/CMIP7_input_example.json %} ``` +
-### Example 2: Usual Treatment of a 2-D Field +### Example 1: Usual Treatment of a 2-D Field -* [example2.py]({{site.baseurl}}/mydoc/examples/example2.py) +* [example_01_usual_2d_field.py]({{site.baseurl}}/mydoc/examples/python/example_01_usual_2d_field.py){:target="_blank"} -
click to expand Python code +
Click to expand Python code ```python -import cmor -import numpy -import os - -hfls = numpy.array([120, 116, 112, 108, - 104, 100, 96, 92, - 88, 84, 80, 76, - 119, 115, 111, 107, - 103, 99, 95, 91, - 87, 83, 79, 75 - ]) -hfls.shape = (2, 3, 4) -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -ipth = opth = 'test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.cmor_normal, - netcdf_file_action=cmor.cmor_replace) -cmor.dataset_json("cmor_input_example.json") -cmor.load_table("cmip6_amon.json") -cmorlat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorlon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmortime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -axes = [cmortime, cmorlat, cmorlon] -cmorhfls = cmor.variable("hfls", "w/m2", axes, positive="up") -cmor.write(cmorhfls, hfls) -filename = cmor.close(cmorhfls, file_name=true) -print("stored in:", filename) -cmor.close() +{% include_relative examples/python/example_01_usual_2d_field.py %} ```
-
click to expand netcdf dump -``` -netcdf hfls_amon_pcmdi-test-1-0_picontrol-withism_r3i1p1f1_gn_201801-201802 { -dimensions: - time = unlimited ; // (2 currently) - lat = 3 ; - lon = 4 ; - bnds = 2 ; -variables: - double time(time) ; - time:bounds = "time_bnds" ; - time:units = "days since 2018" ; - time:calendar = "360_day" ; - time:axis = "t" ; - time:long_name = "time" ; - time:standard_name = "time" ; - double time_bnds(time, bnds) ; - double lat(lat) ; - lat:bounds = "lat_bnds" ; - lat:units = "degrees_north" ; - lat:axis = "y" ; - lat:long_name = "latitude" ; - lat:standard_name = "latitude" ; - double lat_bnds(lat, bnds) ; - double lon(lon) ; - lon:bounds = "lon_bnds" ; - lon:units = "degrees_east" ; - lon:axis = "x" ; - lon:long_name = "longitude" ; - lon:standard_name = "longitude" ; - double lon_bnds(lon, bnds) ; - float hfls(time, lat, lon) ; - hfls:standard_name = "surface_upward_latent_heat_flux" ; - hfls:long_name = "surface upward latent heat flux" ; - hfls:comment = "the surface called \'surface\' means the lower boundary of the atmosphere. \'upward\' indicates a vector component which is positive when directed upward (negative downward). the surface latent heat flux is the exchange of heat between the surface and the air on account of evaporation (including sublimation). in accordance with common usage in geophysical disciplines, \'flux\' implies per unit area, called \'flux density\' in physics." ; - hfls:units = "w m-2" ; - hfls:original_units = "w/m2" ; - hfls:history = "2019-01-08t23:32:26z altered by cmor: converted units from \'w/m2\' to \'w m-2\'. 2019-01-08t23:32:26z altered by cmor: converted type from \'l\' to \'f\'." ; - hfls:cell_methods = "area: time: mean" ; - hfls:cell_measures = "area: areacella" ; - hfls:missing_value = 1.e+20f ; - hfls:_fillvalue = 1.e+20f ; - -// global attributes: - :conventions = "cf-1.7 cmip-6.2" ; - :activity_id = "ismip6" ; - :branch_method = "no parent" ; - :branch_time_in_child = 59400. ; - :branch_time_in_parent = 0. ; - :contact = "python coder (coder@a.b.c.com)" ; - :creation_date = "2019-01-08t23:32:26z" ; - :data_specs_version = "01.00.27" ; - :experiment = "preindustrial control with interactive ice sheet" ; - :experiment_id = "picontrol-withism" ; - :external_variables = "areacella" ; - :forcing_index = 1 ; - :frequency = "mon" ; - :further_info_url = "https://furtherinfo.es-doc.org/cmip6.pcmdi.pcmdi-test-1-0.picontrol-withism.none.r3i1p1f1" ; - :grid = "native atmosphere regular grid (3x4 latxlon)" ; - :grid_label = "gn" ; - :history = "2019-01-08t23:32:26z ;rewrote data to be consistent with ismip6 for variable hfls found in table amon.;\n", - "output from archivcl_a1.nce/giccm_03_std_2xco2_2256." ; - :initialization_index = 1 ; - :institution = "program for climate model diagnosis and intercomparison, lawrence livermore national laboratory, livermore, ca 94550, usa" ; - :institution_id = "pcmdi" ; - :mip_era = "cmip6" ; - :nominal_resolution = "10000 km" ; - :parent_activity_id = "no parent" ; - :parent_experiment_id = "no parent" ; - :parent_mip_era = "no parent" ; - :parent_source_id = "no parent" ; - :parent_time_units = "no parent" ; - :parent_variant_label = "no parent" ; - :physics_index = 1 ; - :product = "model-output" ; - :realization_index = 3 ; - :realm = "atmos" ; - :references = "model described by koder and tolkien (j. geophys. res., 2001, 576-591). also see http://www.gicc.su/giccm/doc/index.html. the ssp245 simulation is described in dorkey et al. \'(clim. dyn., 2003, 323-357.)\'" ; - :run_variant = "3rd realization" ; - :source = "pcmdi-test 1.0 (1989): \n", - "aerosol: none\n", - "atmos: earth1.0-gettinghotter (360 x 180 longitude/latitude; 50 levels; top level 0.1 mb)\n", - "atmoschem: none\n", - "land: earth1.0\n", - "landice: none\n", - "ocean: bluemarble1.0-warming (360 x 180 longitude/latitude; 50 levels; top grid cell 0-10 m)\n", - "ocnbgchem: none\n", - "seaice: declining1.0-warming (360 x 180 longitude/latitude)" ; - :source_id = "pcmdi-test-1-0" ; - :source_type = "aogcm ism aer" ; - :sub_experiment = "none" ; - :sub_experiment_id = "none" ; - :table_id = "amon" ; - :table_info = "creation date:(30 july 2018) md5:fa9bc503f57fb067bf398cab2c4ba77e" ; - :title = "pcmdi-test-1-0 output prepared for cmip6" ; - :tracking_id = "hdl:21.14100/ded65b61-6588-48f6-bd07-7e4281be9bee" ; - :variable_id = "hfls" ; - :variant_label = "r3i1p1f1" ; - :license = "cmip6 model data produced by lawrence livermore pcmdi is licensed under a creative commons attribution sharealike 4.0 international license (https://creativecommons.org/licenses). consult https://pcmdi.llnl.gov/cmip6/termsofuse for terms of use governing cmip6 output, including citation requirements and proper acknowledgment. further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. the data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. all liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; - :cmor_version = "3.4.0" ; -data: - - time = 15.5, 45.5 ; - - time_bnds = - 0, 31, - 31, 60 ; - - lat = 10, 20, 30 ; - - lat_bnds = - 5, 15, - 15, 25, - 25, 35 ; - - lon = 0, 90, 180, 270 ; - - lon_bnds = - -45, 45, - 45, 135, - 135, 225, - 225, 315 ; - - hfls = - 120, 116, 112, 108, - 104, 100, 96, 92, - 88, 84, 80, 76, - 119, 115, 111, 107, - 103, 99, 95, 91, - 87, 83, 79, 75 ; -} +
Click to expand NetCDF dump + +```text +{% include_relative examples/python/example_01_usual_2d_field.cdl %} ```
+### Example 2: Usual Treatment of a 3-D Field on Pressure Levels -### Example 3: Usual Treatment of a 3-D Field on Pressure Levels - -* [example3.py]({{site.baseurl}}/mydoc/examples/example3.py) +* [example_02_pressure_levels.py]({{site.baseurl}}/mydoc/examples/python/example_02_pressure_levels.py){:target="_blank"}
Click to expand Python code ```python -import cmor -import numpy -import os - -ta = 10. * numpy.random.random_sample((2, 19, 3, 4)) + 250. -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -lev = numpy.array([100000, 92500, 85000, 70000, 60000, 50000, 40000, 30000, - 25000, 20000, 15000, 10000, 7000, 5000, 3000, 2000, 1000, 500, 100]) -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Amon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorLon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -cmorLev = cmor.axis("plev19", coord_vals=lev, units='Pa') -axes = [cmorTime, cmorLev, cmorLat, cmorLon] -cmorTa = cmor.variable("ta", "K", axes) -cmor.write(cmorTa, ta) -filename = cmor.close(cmorTa, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) - - +{% include_relative examples/python/example_02_pressure_levels.py %} ``` +
+
Click to expand NetCDF dump +```text +{% include_relative examples/python/example_02_pressure_levels.cdl %} ``` -netcdf ta_Amon_PCMDI-test-1-0_piControl-withism_r3i1p1f1_gn_201801-201802 { -dimensions: - time = UNLIMITED ; // (2 currently) - plev = 19 ; - lat = 3 ; - lon = 4 ; - bnds = 2 ; -variables: - double time(time) ; - time:bounds = "time_bnds" ; - time:units = "days since 2018" ; - time:calendar = "360_day" ; - time:axis = "T" ; - time:long_name = "time" ; - time:standard_name = "time" ; - double time_bnds(time, bnds) ; - double plev(plev) ; - plev:units = "Pa" ; - plev:axis = "Z" ; - plev:positive = "down" ; - plev:long_name = "pressure" ; - plev:standard_name = "air_pressure" ; - double lat(lat) ; - lat:bounds = "lat_bnds" ; - lat:units = "degrees_north" ; - lat:axis = "Y" ; - lat:long_name = "latitude" ; - lat:standard_name = "latitude" ; - double lat_bnds(lat, bnds) ; - double lon(lon) ; - lon:bounds = "lon_bnds" ; - lon:units = "degrees_east" ; - lon:axis = "X" ; - lon:long_name = "Longitude" ; - lon:standard_name = "longitude" ; - double lon_bnds(lon, bnds) ; - float ta(time, plev, lat, lon) ; - ta:standard_name = "air_temperature" ; - ta:long_name = "Air Temperature" ; - ta:comment = "Air Temperature" ; - ta:units = "K" ; - ta:cell_methods = "time: mean" ; - ta:cell_measures = "area: areacella" ; - ta:missing_value = 1.e+20f ; - ta:_FillValue = 1.e+20f ; - ta:history = "2019-01-08T23:35:44Z altered by CMOR: Converted type from \'d\' to \'f\'." ; - -// global attributes: - :Conventions = "CF-1.7 CMIP-6.2" ; - :activity_id = "ISMIP6" ; - :branch_method = "no parent" ; - :branch_time_in_child = 59400. ; - :branch_time_in_parent = 0. ; - :contact = "Python Coder (coder@a.b.c.com)" ; - :creation_date = "2019-01-08T23:35:44Z" ; - :data_specs_version = "01.00.27" ; - :experiment = "preindustrial control with interactive ice sheet" ; - :experiment_id = "piControl-withism" ; - :external_variables = "areacella" ; - :forcing_index = 1 ; - :frequency = "mon" ; - :further_info_url = "https://furtherinfo.es-doc.org/CMIP6.PCMDI.PCMDI-test-1-0.piControl-withism.none.r3i1p1f1" ; - :grid = "native atmosphere regular grid (3x4 latxlon)" ; - :grid_label = "gn" ; - :history = "2019-01-08T23:35:44Z ;rewrote data to be consistent with ISMIP6 for variable ta found in table Amon.;\n", - "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256." ; - :initialization_index = 1 ; - :institution = "Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA" ; - :institution_id = "PCMDI" ; - :mip_era = "CMIP6" ; - :nominal_resolution = "10000 km" ; - :parent_activity_id = "no parent" ; - :parent_experiment_id = "no parent" ; - :parent_mip_era = "no parent" ; - :parent_source_id = "no parent" ; - :parent_time_units = "no parent" ; - :parent_variant_label = "no parent" ; - :physics_index = 1 ; - :product = "model-output" ; - :realization_index = 3 ; - :realm = "atmos" ; - :references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. \'(Clim. Dyn., 2003, 323-357.)\'" ; - :run_variant = "3rd realization" ; - :source = "PCMDI-test 1.0 (1989): \n", - "aerosol: none\n", - "atmos: Earth1.0-gettingHotter (360 x 180 longitude/latitude; 50 levels; top level 0.1 mb)\n", - "atmosChem: none\n", - "land: Earth1.0\n", - "landIce: none\n", - "ocean: BlueMarble1.0-warming (360 x 180 longitude/latitude; 50 levels; top grid cell 0-10 m)\n", - "ocnBgchem: none\n", - "seaIce: Declining1.0-warming (360 x 180 longitude/latitude)" ; - :source_id = "PCMDI-test-1-0" ; - :source_type = "AOGCM ISM AER" ; - :sub_experiment = "none" ; - :sub_experiment_id = "none" ; - :table_id = "Amon" ; - :table_info = "Creation Date:(30 July 2018) MD5:fa9bc503f57fb067bf398cab2c4ba77e" ; - :title = "PCMDI-test-1-0 output prepared for CMIP6" ; - :tracking_id = "hdl:21.14100/11fd8d79-f1d9-453d-8293-7603dc5dfe1e" ; - :variable_id = "ta" ; - :variant_label = "r3i1p1f1" ; - :license = "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; - :cmor_version = "3.4.0" ; -data: - - time = 15.5, 45.5 ; - - time_bnds = - 0, 31, - 31, 60 ; - - plev = 100000, 92500, 85000, 70000, 60000, 50000, 40000, 30000, 25000, - 20000, 15000, 10000, 7000, 5000, 3000, 2000, 1000, 500, 100 ; - - lat = 10, 20, 30 ; - - lat_bnds = - 5, 15, - 15, 25, - 25, 35 ; - - lon = 0, 90, 180, 270 ; - - lon_bnds = - -45, 45, - 45, 135, - 135, 225, - 225, 315 ; - - ta = - 259.8408, 258.941, 252.4908, 251.0074, - 256.835, 258.2486, 250.7763, 256.6857, - 255.0459, 250.3535, 255.2871, 259.8668, - 253.4483, 256.5141, 259.7679, 252.1754, - 253.76, 250.867, 251.4578, 254.0015, - 252.3708, 258.2815, 255.3655, 257.9578, - 250.4145, 256.8469, 252.7675, 255.7654, - 258.5681, 259.7048, 254.8929, 252.6632, - 253.612, 258.3735, 256.299, 256.6488, - 253.1254, 254.9136, 255.2808, 253.8569, - 257.0341, 251.0754, 254.2664, 252.9441, - 255.2702, 255.9075, 253.3035, 257.6259, - 255.9043, 252.595, 253.9338, 258.0882, - 256.6787, 253.8391, 258.4736, 256.7391, - 252.671, 258.3957, 252.4797, 253.4284, - 258.6154, 258.6605, 255.7659, 252.4936, - 256.9681, 254.4894, 252.7608, 254.783, - 250.0667, 255.6354, 258.6563, 259.6775, - 254.3134, 250.8413, 250.2444, 254.6606, - 255.1599, 257.21, 252.6211, 256.2644, - 254.1385, 257.6524, 252.9917, 251.8146, - 259.5888, 256.2946, 255.9592, 254.3341, - 258.4659, 259.7941, 258.0905, 258.1966, - 257.4232, 259.0263, 251.2242, 259.6272, - 257.456, 259.999, 258.7972, 256.6927, - 256.5442, 250.3652, 254.9976, 254.2698, - 256.8535, 252.3693, 259.0882, 258.8849, - 253.6198, 259.3818, 251.4028, 254.9819, - 250.2339, 251.6083, 256.1446, 258.8874, - 259.977, 252.5453, 253.6287, 252.0314, - 257.0711, 254.6262, 253.957, 258.0355, - 250.333, 255.8116, 252.4928, 250.0648, - 256.737, 251.6935, 251.2943, 250.1732, - 256.9901, 256.2216, 259.1346, 258.9967, - 258.4938, 257.6587, 252.6762, 256.5123, - 254.6203, 257.5838, 259.8249, 257.2421, - 251.5132, 250.6997, 255.1321, 255.9642, - 250.5069, 251.3887, 252.1133, 253.0272, - 257.2178, 251.7756, 256.3568, 255.6339, - 250.4361, 258.3318, 259.5203, 258.9857, - 254.0756, 251.2124, 252.6628, 259.1253, - 252.2022, 254.2113, 259.4847, 252.9702, - 251.1179, 259.7756, 253.7968, 257.081, - 254.7999, 253.5379, 259.9748, 257.6128, - 257.1583, 258.5191, 252.2605, 251.6866, - 251.9091, 255.4374, 259.1645, 255.4471, - 251.6325, 252.1992, 256.1027, 252.4458, - 251.5014, 252.293, 250.0457, 251.2812, - 252.3479, 253.4959, 250.742, 254.3526, - 254.2659, 258.3052, 259.6293, 253.8284, - 255.0674, 250.3642, 252.008, 258.3384, - 258.2568, 257.897, 253.424, 254.922, - 254.939, 253.0223, 257.8987, 256.4419, - 254.1967, 257.1554, 253.706, 256.5611, - 259.3974, 254.3611, 251.2371, 257.0125, - 255.4547, 255.4249, 252.8776, 257.173, - 258.8824, 252.4057, 250.6023, 253.0139, - 255.5045, 257.2598, 257.7797, 253.2221, - 253.2658, 252.578, 255.4973, 252.6226, - 259.9648, 251.6002, 254.1322, 251.8064, - 254.0982, 252.5025, 251.4612, 251.3052, - 254.25, 251.7179, 251.4255, 256.1079, - 257.282, 255.7924, 252.2107, 255.8521, - 252.7759, 253.0962, 252.638, 255.9666, - 259.5663, 253.6493, 256.8842, 255.4041, - 254.6592, 255.4181, 258.7055, 254.7371, - 257.1625, 255.0113, 253.0983, 252.3584, - 257.2872, 253.2124, 256.9593, 250.7623, - 257.287, 257.2986, 252.6907, 251.519, - 254.1635, 250.1762, 256.4446, 259.7633, - 259.0938, 253.0846, 250.5819, 258.3493, - 258.6836, 257.3046, 255.8258, 257.9142, - 257.3879, 252.5779, 255.3217, 254.2868, - 255.9011, 252.4209, 253.7516, 255.2315, - 257.6159, 257.8478, 253.0855, 254.9258, - 255.5278, 257.5585, 258.8186, 250.2102, - 250.1217, 256.8153, 255.6852, 255.1126, - 257.7202, 256.3726, 252.1865, 253.0071, - 251.8633, 255.1148, 254.0191, 253.4735, - 257.7912, 253.4579, 255.0269, 250.1707, - 253.9734, 254.2229, 257.9263, 250.1125, - 258.5282, 250.8859, 257.5581, 255.8632, - 252.3537, 253.3955, 252.4796, 251.3484, - 259.0306, 250.2142, 253.429, 251.3313, - 257.0627, 253.5232, 254.0599, 253.5528, - 254.7048, 257.3163, 258.5922, 259.0777, - 253.2622, 258.1998, 254.3777, 259.3747, - 252.3826, 251.1805, 253.8417, 251.8928, - 256.3958, 256.0284, 253.0213, 256.2551, - 258.8141, 258.835, 259.7631, 254.7228, - 254.3701, 251.3905, 250.6818, 258.296, - 258.9814, 258.1483, 256.1503, 252.6487, - 252.123, 256.3247, 252.2733, 259.7609, - 259.3987, 252.3202, 250.5132, 252.3688, - 257.4306, 256.0952, 253.014, 251.8331, - 253.5333, 259.0857, 257.7149, 259.9082, - 259.6393, 258.5578, 256.9663, 252.2192, - 254.2118, 251.6638, 255.6581, 255.7678, - 253.8299, 251.3065, 255.6969, 259.1021, - 256.2309, 257.8936, 251.7329, 253.7878, - 256.5732, 254.0137, 253.6299, 250.413, - 258.7727, 251.4784, 253.509, 255.0283, - 254.1883, 255.0535, 250.6044, 257.4061, - 252.835, 255.2766, 257.4215, 259.0279, - 255.3313, 254.1923, 254.1777, 258.1096, - 250.3586, 255.7441, 258.2351, 257.1729, - 258.3901, 256.7424, 259.8389, 254.8441, - 252.9138, 256.6953, 255.918, 253.6417, - 252.3907, 255.4751, 258.3704, 255.8665, - 250.0418, 251.8351, 258.5436, 256.8799, - 252.2263, 255.383, 253.3702, 253.7597, - 251.112, 254.6407, 251.4067, 252.6422, - 258.1817, 252.3663, 253.5502, 252.4341, - 257.1426, 254.4529, 254.8314, 254.7638 ; -} -``` +
-### Example 4: Treatment of a Scalar Dimension (near-surface air temperature) +### Example 3: Treatment of a Scalar Dimension -* [example4.py]({{site.baseurl}}/mydoc/examples/example4.py) +* [example_03_scalar_dimension.py]({{site.baseurl}}/mydoc/examples/python/example_03_scalar_dimension.py){:target="_blank"}
Click to expand Python code ```python -import cmor -import numpy -import os - -tas = 10. * numpy.random.random_sample((2, 3, 4)) + 250. -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Amon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorLon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -axes = [cmorTime, cmorLat, cmorLon] -cmorTas = cmor.variable("tas", "K", axes) -cmor.write(cmorTas, tas) -filename = cmor.close(cmorTas, file_name=True) -print("Stored in:", filename) -cmor.close() +{% include_relative examples/python/example_03_scalar_dimension.py %} ``` +
+
Click to expand NetCDF dump -``` -netcdf tas_Amon_PCMDI-test-1-0_piControl-withism_r3i1p1f1_gn_201801-201802 { -dimensions: - time = UNLIMITED ; // (2 currently) - lat = 3 ; - lon = 4 ; - bnds = 2 ; -variables: - double time(time) ; - time:bounds = "time_bnds" ; - time:units = "days since 2018" ; - time:calendar = "360_day" ; - time:axis = "T" ; - time:long_name = "time" ; - time:standard_name = "time" ; - double time_bnds(time, bnds) ; - double lat(lat) ; - lat:bounds = "lat_bnds" ; - lat:units = "degrees_north" ; - lat:axis = "Y" ; - lat:long_name = "latitude" ; - lat:standard_name = "latitude" ; - double lat_bnds(lat, bnds) ; - double lon(lon) ; - lon:bounds = "lon_bnds" ; - lon:units = "degrees_east" ; - lon:axis = "X" ; - lon:long_name = "Longitude" ; - lon:standard_name = "longitude" ; - double lon_bnds(lon, bnds) ; - double height ; - height:units = "m" ; - height:axis = "Z" ; - height:positive = "up" ; - height:long_name = "height" ; - height:standard_name = "height" ; - float tas(time, lat, lon) ; - tas:standard_name = "air_temperature" ; - tas:long_name = "Near-Surface Air Temperature" ; - tas:comment = "near-surface (usually, 2 meter) air temperature" ; - tas:units = "K" ; - tas:cell_methods = "area: time: mean" ; - tas:cell_measures = "area: areacella" ; - tas:history = "2019-01-08T23:41:05Z altered by CMOR: Treated scalar dimension: \'height\'. 2019-01-08T23:41:05Z altered by CMOR: Converted type from \'d\' to \'f\'." ; - tas:coordinates = "height" ; - tas:missing_value = 1.e+20f ; - tas:_FillValue = 1.e+20f ; - -// global attributes: - :Conventions = "CF-1.7 CMIP-6.2" ; - :activity_id = "ISMIP6" ; - :branch_method = "no parent" ; - :branch_time_in_child = 59400. ; - :branch_time_in_parent = 0. ; - :contact = "Python Coder (coder@a.b.c.com)" ; - :creation_date = "2019-01-08T23:41:05Z" ; - :data_specs_version = "01.00.27" ; - :experiment = "preindustrial control with interactive ice sheet" ; - :experiment_id = "piControl-withism" ; - :external_variables = "areacella" ; - :forcing_index = 1 ; - :frequency = "mon" ; - :further_info_url = "https://furtherinfo.es-doc.org/CMIP6.PCMDI.PCMDI-test-1-0.piControl-withism.none.r3i1p1f1" ; - :grid = "native atmosphere regular grid (3x4 latxlon)" ; - :grid_label = "gn" ; - :history = "2019-01-08T23:41:05Z ;rewrote data to be consistent with ISMIP6 for variable tas found in table Amon.;\n", - "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256." ; - :initialization_index = 1 ; - :institution = "Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA" ; - :institution_id = "PCMDI" ; - :mip_era = "CMIP6" ; - :nominal_resolution = "10000 km" ; - :parent_activity_id = "no parent" ; - :parent_experiment_id = "no parent" ; - :parent_mip_era = "no parent" ; - :parent_source_id = "no parent" ; - :parent_time_units = "no parent" ; - :parent_variant_label = "no parent" ; - :physics_index = 1 ; - :product = "model-output" ; - :realization_index = 3 ; - :realm = "atmos" ; - :references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. \'(Clim. Dyn., 2003, 323-357.)\'" ; - :run_variant = "3rd realization" ; - :source = "PCMDI-test 1.0 (1989): \n", - "aerosol: none\n", - "atmos: Earth1.0-gettingHotter (360 x 180 longitude/latitude; 50 levels; top level 0.1 mb)\n", - "atmosChem: none\n", - "land: Earth1.0\n", - "landIce: none\n", - "ocean: BlueMarble1.0-warming (360 x 180 longitude/latitude; 50 levels; top grid cell 0-10 m)\n", - "ocnBgchem: none\n", - "seaIce: Declining1.0-warming (360 x 180 longitude/latitude)" ; - :source_id = "PCMDI-test-1-0" ; - :source_type = "AOGCM ISM AER" ; - :sub_experiment = "none" ; - :sub_experiment_id = "none" ; - :table_id = "Amon" ; - :table_info = "Creation Date:(30 July 2018) MD5:fa9bc503f57fb067bf398cab2c4ba77e" ; - :title = "PCMDI-test-1-0 output prepared for CMIP6" ; - :tracking_id = "hdl:21.14100/f93e4db7-d6e5-404d-983b-dbfebc932250" ; - :variable_id = "tas" ; - :variant_label = "r3i1p1f1" ; - :license = "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; - :cmor_version = "3.4.0" ; -data: - - time = 15.5, 45.5 ; - - time_bnds = - 0, 31, - 31, 60 ; - - lat = 10, 20, 30 ; - - lat_bnds = - 5, 15, - 15, 25, - 25, 35 ; - - lon = 0, 90, 180, 270 ; - - lon_bnds = - -45, 45, - 45, 135, - 135, 225, - 225, 315 ; - - height = 2 ; - - tas = - 254.0895, 258.4085, 250.5549, 258.7101, - 258.668, 258.299, 252.1237, 255.0432, - 253.7254, 251.246, 254.3168, 255.4808, - 259.7908, 252.2754, 257.1892, 253.3132, - 253.8823, 253.4698, 253.5381, 254.973, - 256.1002, 251.8168, 259.3698, 250.2994 ; -} +```text +{% include_relative examples/python/example_03_scalar_dimension.cdl %} ```
-### Example 5: Treatment of Auxiliary Coordinates (northward ocean heat transport; a function of latitude, ocean basin, month) +### Example 4: Treatment of Auxiliary Coordinates -* [example5.py]({{site.baseurl}}/mydoc/examples/example5.py) +* [example_04_auxiliary_coordinates.py]({{site.baseurl}}/mydoc/examples/python/example_04_auxiliary_coordinates.py){:target="_blank"}
Click to expand Python code ```python -import cmor -import numpy -import os - -data = 10. * numpy.random.random_sample((2, 3, 4)) + 250. -data = numpy.array([-80, -84, -88, - -100, -104, -76, - -120, -92, -96, - -79, -83, -87, - -99, -103, -75, - -107, -111, -115 - ]) -data.shape = (2, 3, 3) -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -region = [ - "atlantic_arctic_ocean", - "indian_pacific_ocean", - "global_ocean" -] -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Omon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -cmorBasin = cmor.axis("basin", coord_vals=region, units="") -axes = [cmorTime, cmorBasin, cmorLat] -cmorVar = cmor.variable("htovgyre", "W", axes) -cmor.write(cmorVar, data) -filename = cmor.close(cmorVar, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) +{% include_relative examples/python/example_04_auxiliary_coordinates.py %} +``` +
+ +
Click to expand NetCDF dump +```text +{% include_relative examples/python/example_04_auxiliary_coordinates.cdl %} ```
-
Click to expand NetCDF dump +### Example 5: Treatment of a 3-D Field on Model Levels + +* [example_05_model_levels.py]({{site.baseurl}}/mydoc/examples/python/example_05_model_levels.py){:target="_blank"} + +
Click to expand Python code + +```python +{% include_relative examples/python/example_05_model_levels.py %} ``` -netcdf htovgyre_Omon_PCMDI-test-1-0_piControl-withism_r3i1p1f1_gn_201801-201802 { -dimensions: - time = UNLIMITED ; // (2 currently) - basin = 3 ; - lat = 3 ; - bnds = 2 ; - strlen = 21 ; -variables: - double time(time) ; - time:bounds = "time_bnds" ; - time:units = "days since 2018" ; - time:calendar = "360_day" ; - time:axis = "T" ; - time:long_name = "time" ; - time:standard_name = "time" ; - double time_bnds(time, bnds) ; - char sector(basin, strlen) ; - sector:long_name = "ocean basin" ; - sector:standard_name = "region" ; - double lat(lat) ; - lat:bounds = "lat_bnds" ; - lat:units = "degrees_north" ; - lat:axis = "Y" ; - lat:long_name = "latitude" ; - lat:standard_name = "latitude" ; - double lat_bnds(lat, bnds) ; - float htovgyre(time, basin, lat) ; - htovgyre:standard_name = "northward_ocean_heat_transport_due_to_gyre" ; - htovgyre:long_name = "Northward Ocean Heat Transport due to Gyre" ; - htovgyre:comment = "From all advective mass transport processes, resolved and parameterized." ; - htovgyre:units = "W" ; - htovgyre:cell_methods = "longitude: mean time: mean" ; - htovgyre:missing_value = 1.e+20f ; - htovgyre:_FillValue = 1.e+20f ; - htovgyre:history = "2019-01-08T23:45:26Z altered by CMOR: Converted type from \'l\' to \'f\'." ; - htovgyre:coordinates = "sector" ; - -// global attributes: - :Conventions = "CF-1.7 CMIP-6.2" ; - :activity_id = "ISMIP6" ; - :branch_method = "no parent" ; - :branch_time_in_child = 59400. ; - :branch_time_in_parent = 0. ; - :contact = "Python Coder (coder@a.b.c.com)" ; - :creation_date = "2019-01-08T23:45:26Z" ; - :data_specs_version = "01.00.27" ; - :experiment = "preindustrial control with interactive ice sheet" ; - :experiment_id = "piControl-withism" ; - :forcing_index = 1 ; - :frequency = "mon" ; - :further_info_url = "https://furtherinfo.es-doc.org/CMIP6.PCMDI.PCMDI-test-1-0.piControl-withism.none.r3i1p1f1" ; - :grid = "native atmosphere regular grid (3x4 latxlon)" ; - :grid_label = "gn" ; - :history = "2019-01-08T23:45:26Z ;rewrote data to be consistent with ISMIP6 for variable htovgyre found in table Omon.;\n", - "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256." ; - :initialization_index = 1 ; - :institution = "Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA" ; - :institution_id = "PCMDI" ; - :mip_era = "CMIP6" ; - :nominal_resolution = "10000 km" ; - :parent_activity_id = "no parent" ; - :parent_experiment_id = "no parent" ; - :parent_mip_era = "no parent" ; - :parent_source_id = "no parent" ; - :parent_time_units = "no parent" ; - :parent_variant_label = "no parent" ; - :physics_index = 1 ; - :product = "model-output" ; - :realization_index = 3 ; - :realm = "ocean" ; - :references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. \'(Clim. Dyn., 2003, 323-357.)\'" ; - :run_variant = "3rd realization" ; - :source = "PCMDI-test 1.0 (1989): \n", - "aerosol: none\n", - "atmos: Earth1.0-gettingHotter (360 x 180 longitude/latitude; 50 levels; top level 0.1 mb)\n", - "atmosChem: none\n", - "land: Earth1.0\n", - "landIce: none\n", - "ocean: BlueMarble1.0-warming (360 x 180 longitude/latitude; 50 levels; top grid cell 0-10 m)\n", - "ocnBgchem: none\n", - "seaIce: Declining1.0-warming (360 x 180 longitude/latitude)" ; - :source_id = "PCMDI-test-1-0" ; - :source_type = "AOGCM ISM AER" ; - :sub_experiment = "none" ; - :sub_experiment_id = "none" ; - :table_id = "Omon" ; - :table_info = "Creation Date:(30 July 2018) MD5:fa9bc503f57fb067bf398cab2c4ba77e" ; - :title = "PCMDI-test-1-0 output prepared for CMIP6" ; - :tracking_id = "hdl:21.14100/631e76b6-64a0-4f24-8c67-e3a9a03a2920" ; - :variable_id = "htovgyre" ; - :variant_label = "r3i1p1f1" ; - :license = "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; - :cmor_version = "3.4.0" ; -data: - - time = 15.5, 45.5 ; - - time_bnds = - 0, 31, - 31, 60 ; - - sector = - "atlantic_arctic_ocean", - "indian_pacific_ocean", - "global_ocean" ; - - lat = 10, 20, 30 ; - - lat_bnds = - 5, 15, - 15, 25, - 25, 35 ; - - htovgyre = - -80, -84, -88, - -100, -104, -76, - -120, -92, -96, - -79, -83, -87, - -99, -103, -75, - -107, -111, -115 ; -} + +
+ +
Click to expand NetCDF dump + +```text +{% include_relative examples/python/example_05_model_levels.cdl %} ```
-### Example 6: Treatment of a 3-D Field on Model Levels (cloud fraction; a function of longitude, latitude, model level, month) +### Example 6: Treatment of Grid Coordinates -* [example6.py]({{site.baseurl}}/mydoc/examples/example6.py) +* [example_06_complex_grid.py]({{site.baseurl}}/mydoc/examples/python/example_06_complex_grid.py){:target="_blank"}
Click to expand Python code ```python -import cmor -import numpy -import os - -data = 10. * numpy.random.random_sample((2, 3, 4)) + 250. -data = numpy.array([ - 72.8, 73.2, 73.6, 74, - 71.6, 72, 72.4, 72.4, - 70.4, 70.8, 70.8, 71.2, - 67.6, 69.2, 69.6, 70, - 66, 66.4, 66.8, 67.2, - 64.8, 65.2, 65.6, 66, - 63.6, 64, 64.4, 64.4, - 60.8, 61.2, 62.8, 63.2, - 59.6, 59.6, 60, 60.4, - 58, 58.4, 58.8, 59.2, - 56.8, 57.2, 57.6, 58, - 54, 54.4, 54.8, 56.4, - 52.8, 53.2, 53.2, 53.6, - 51.6, 51.6, 52, 52.4, - 50, 50.4, 50.8, 51.2, - 72.9, 73.3, 73.7, 74.1, - 71.7, 72.1, 72.5, 72.5, - 70.5, 70.9, 70.9, 71.3, - 67.7, 69.3, 69.7, 70.1, - 66.1, 66.5, 66.9, 67.3, - 64.9, 65.3, 65.7, 66.1, - 63.7, 64.1, 64.5, 64.5, - 60.9, 61.3, 62.9, 63.3, - 59.7, 59.7, 60.1, 60.5, - 58.1, 58.5, 58.9, 59.3, - 56.9, 57.3, 57.7, 58.1, - 54.1, 54.5, 54.9, 56.5, - 52.9, 53.3, 53.3, 53.7, - 51.7, 51.7, 52.1, 52.5, - 50.1, 50.5, 50.9, 51.3]) -data.shape = (2, 5, 3, 4) -lat = numpy.array([10, 20, 30]) -lat_bnds = numpy.array([5, 15, 25, 35]) -lon = numpy.array([0, 90, 180, 270]) -lon_bnds = numpy.array([-45, 45, - 135, - 225, - 315 - ]) -time = numpy.array([15.5, 45]) -time_bnds = numpy.array([0, 31, 60]) -lev = [0.92, 0.72, 0.5, 0.3, 0.1] -lev_bnds = [1, 0.83, - 0.61, - 0.4, - 0.2, - 0 - ] -p0 = 100000 -a = [0.12, 0.22, 0.3, 0.2, 0.1] -b = [0.8, 0.5, 0.2, 0.1, 0] -ps = numpy.array([ - 97000, 97400, 97800, 98200, - 98600, 99000, 99400, 99800, - 100200, 100600, 101000, 101400, - 97100, 97500, 97900, 98300, - 98700, 99100, 99500, 99900, - 100300, 100700, 101100, 101500]) -ps.shape = (2, 3, 4) -a_bnds = [ - 0.06, 0.18, - 0.26, - 0.25, - 0.15, - 0] -b_bnds = [ - 0.94, 0.65, - 0.35, - 0.15, - 0.05, - 0] -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE) -cmor.dataset_json("CMOR_input_example.json") -cmor.load_table("CMIP6_Amon.json") -cmorLat = cmor.axis("latitude", - coord_vals=lat, - cell_bounds=lat_bnds, - units="degrees_north") -cmorLon = cmor.axis("longitude", - coord_vals=lon, - cell_bounds=lon_bnds, - units="degrees_east") -cmorTime = cmor.axis("time", - coord_vals=time, - cell_bounds=time_bnds, - units="days since 2018") -cmorLev = cmor.axis("standard_hybrid_sigma", - units='1', - coord_vals=lev, - cell_bounds=lev_bnds) -axes = [cmorTime, cmorLev, cmorLat, cmorLon] -ierr = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='a', - axis_ids=[cmorLev, ], - zfactor_values=a, - zfactor_bounds=a_bnds) -ierr = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='b', - axis_ids=[cmorLev, ], - zfactor_values=b, - zfactor_bounds=b_bnds) -ierr = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='p0', - units='Pa', - zfactor_values=p0) -ips = cmor.zfactor(zaxis_id=cmorLev, - zfactor_name='ps', - axis_ids=[cmorTime, cmorLat, cmorLon], - units='Pa') -cmorVar = cmor.variable("cl", "%", axes) -cmor.write(cmorVar, data) -cmor.write(ips, ps, store_with=cmorVar) -filename = cmor.close(cmorVar, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) +{% include_relative examples/python/example_06_complex_grid.py %} ```
+
Click to expand NetCDF dump +```text +{% include_relative examples/python/example_06_complex_grid.cdl %} ``` -netcdf cl_Amon_PCMDI-test-1-0_piControl-withism_r3i1p1f1_gn_201801-201802 { -dimensions: - time = UNLIMITED ; // (2 currently) - lev = 5 ; - lat = 3 ; - lon = 4 ; - bnds = 2 ; -variables: - double time(time) ; - time:bounds = "time_bnds" ; - time:units = "days since 2018" ; - time:calendar = "360_day" ; - time:axis = "T" ; - time:long_name = "time" ; - time:standard_name = "time" ; - double time_bnds(time, bnds) ; - double lev(lev) ; - lev:bounds = "lev_bnds" ; - lev:units = "1" ; - lev:axis = "Z" ; - lev:positive = "down" ; - lev:long_name = "hybrid sigma pressure coordinate" ; - lev:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; - lev:formula = "p = a*p0 + b*ps" ; - lev:formula_terms = "p0: p0 a: a b: b ps: ps" ; - double lev_bnds(lev, bnds) ; - lev_bnds:formula = "p = a*p0 + b*ps" ; - lev_bnds:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ; - lev_bnds:units = "1" ; - lev_bnds:formula_terms = "p0: p0 a: a_bnds b: b_bnds ps: ps" ; - double p0 ; - p0:long_name = "vertical coordinate formula term: reference pressure" ; - p0:units = "Pa" ; - double a(lev) ; - a:long_name = "vertical coordinate formula term: a(k)" ; - double b(lev) ; - b:long_name = "vertical coordinate formula term: b(k)" ; - float ps(time, lat, lon) ; - ps:long_name = "Surface Air Pressure" ; - ps:units = "Pa" ; - double a_bnds(lev, bnds) ; - a_bnds:long_name = "vertical coordinate formula term: a(k+1/2)" ; - double b_bnds(lev, bnds) ; - b_bnds:long_name = "vertical coordinate formula term: b(k+1/2)" ; - double lat(lat) ; - lat:bounds = "lat_bnds" ; - lat:units = "degrees_north" ; - lat:axis = "Y" ; - lat:long_name = "latitude" ; - lat:standard_name = "latitude" ; - double lat_bnds(lat, bnds) ; - double lon(lon) ; - lon:bounds = "lon_bnds" ; - lon:units = "degrees_east" ; - lon:axis = "X" ; - lon:long_name = "Longitude" ; - lon:standard_name = "longitude" ; - double lon_bnds(lon, bnds) ; - float cl(time, lev, lat, lon) ; - cl:standard_name = "cloud_area_fraction_in_atmosphere_layer" ; - cl:long_name = "Cloud Area Fraction" ; - cl:comment = "Percentage cloud cover, including both large-scale and convective cloud." ; - cl:units = "%" ; - cl:cell_methods = "area: time: mean" ; - cl:cell_measures = "area: areacella" ; - cl:missing_value = 1.e+20f ; - cl:_FillValue = 1.e+20f ; - cl:history = "2019-01-08T23:49:05Z altered by CMOR: Converted type from \'d\' to \'f\'." ; - -// global attributes: - :Conventions = "CF-1.7 CMIP-6.2" ; - :activity_id = "ISMIP6" ; - :branch_method = "no parent" ; - :branch_time_in_child = 59400. ; - :branch_time_in_parent = 0. ; - :contact = "Python Coder (coder@a.b.c.com)" ; - :creation_date = "2019-01-08T23:49:05Z" ; - :data_specs_version = "01.00.27" ; - :experiment = "preindustrial control with interactive ice sheet" ; - :experiment_id = "piControl-withism" ; - :external_variables = "areacella" ; - :forcing_index = 1 ; - :frequency = "mon" ; - :further_info_url = "https://furtherinfo.es-doc.org/CMIP6.PCMDI.PCMDI-test-1-0.piControl-withism.none.r3i1p1f1" ; - :grid = "native atmosphere regular grid (3x4 latxlon)" ; - :grid_label = "gn" ; - :history = "2019-01-08T23:49:05Z ;rewrote data to be consistent with ISMIP6 for variable cl found in table Amon.;\n", - "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256." ; - :initialization_index = 1 ; - :institution = "Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA" ; - :institution_id = "PCMDI" ; - :mip_era = "CMIP6" ; - :nominal_resolution = "10000 km" ; - :parent_activity_id = "no parent" ; - :parent_experiment_id = "no parent" ; - :parent_mip_era = "no parent" ; - :parent_source_id = "no parent" ; - :parent_time_units = "no parent" ; - :parent_variant_label = "no parent" ; - :physics_index = 1 ; - :product = "model-output" ; - :realization_index = 3 ; - :realm = "atmos" ; - :references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. \'(Clim. Dyn., 2003, 323-357.)\'" ; - :run_variant = "3rd realization" ; - :source = "PCMDI-test 1.0 (1989): \n", - "aerosol: none\n", - "atmos: Earth1.0-gettingHotter (360 x 180 longitude/latitude; 50 levels; top level 0.1 mb)\n", - "atmosChem: none\n", - "land: Earth1.0\n", - "landIce: none\n", - "ocean: BlueMarble1.0-warming (360 x 180 longitude/latitude; 50 levels; top grid cell 0-10 m)\n", - "ocnBgchem: none\n", - "seaIce: Declining1.0-warming (360 x 180 longitude/latitude)" ; - :source_id = "PCMDI-test-1-0" ; - :source_type = "AOGCM ISM AER" ; - :sub_experiment = "none" ; - :sub_experiment_id = "none" ; - :table_id = "Amon" ; - :table_info = "Creation Date:(30 July 2018) MD5:fa9bc503f57fb067bf398cab2c4ba77e" ; - :title = "PCMDI-test-1-0 output prepared for CMIP6" ; - :variable_id = "cl" ; - :variant_label = "r3i1p1f1" ; - :license = "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; - :cmor_version = "3.4.0" ; - :tracking_id = "hdl:21.14100/68486bc9-5ee7-4a03-ba74-ec9cf9c86e3c" ; -data: - - time = 15.5, 45.5 ; - - time_bnds = - 0, 31, - 31, 60 ; - - lev = 0.92, 0.72, 0.5, 0.3, 0.1 ; - - lev_bnds = - 1, 0.83, - 0.83, 0.61, - 0.61, 0.4, - 0.4, 0.2, - 0.2, 0 ; - - p0 = 100000 ; - - a = 0.12, 0.22, 0.3, 0.2, 0.1 ; - - b = 0.8, 0.5, 0.2, 0.1, 0 ; - - ps = - 97000, 97400, 97800, 98200, - 98600, 99000, 99400, 99800, - 100200, 100600, 101000, 101400, - 97100, 97500, 97900, 98300, - 98700, 99100, 99500, 99900, - 100300, 100700, 101100, 101500 ; - - a_bnds = - 0.06, 0.18, - 0.18, 0.26, - 0.26, 0.25, - 0.25, 0.15, - 0.15, 0 ; - - b_bnds = - 0.94, 0.65, - 0.65, 0.35, - 0.35, 0.15, - 0.15, 0.05, - 0.05, 0 ; - - lat = 10, 20, 30 ; - - lat_bnds = - 5, 15, - 15, 25, - 25, 35 ; - - lon = 0, 90, 180, 270 ; - - lon_bnds = - -45, 45, - 45, 135, - 135, 225, - 225, 315 ; - - cl = - 72.8, 73.2, 73.6, 74, - 71.6, 72, 72.4, 72.4, - 70.4, 70.8, 70.8, 71.2, - 67.6, 69.2, 69.6, 70, - 66, 66.4, 66.8, 67.2, - 64.8, 65.2, 65.6, 66, - 63.6, 64, 64.4, 64.4, - 60.8, 61.2, 62.8, 63.2, - 59.6, 59.6, 60, 60.4, - 58, 58.4, 58.8, 59.2, - 56.8, 57.2, 57.6, 58, - 54, 54.4, 54.8, 56.4, - 52.8, 53.2, 53.2, 53.6, - 51.6, 51.6, 52, 52.4, - 50, 50.4, 50.8, 51.2, - 72.9, 73.3, 73.7, 74.1, - 71.7, 72.1, 72.5, 72.5, - 70.5, 70.9, 70.9, 71.3, - 67.7, 69.3, 69.7, 70.1, - 66.1, 66.5, 66.9, 67.3, - 64.9, 65.3, 65.7, 66.1, - 63.7, 64.1, 64.5, 64.5, - 60.9, 61.3, 62.9, 63.3, - 59.7, 59.7, 60.1, 60.5, - 58.1, 58.5, 58.9, 59.3, - 56.9, 57.3, 57.7, 58.1, - 54.1, 54.5, 54.9, 56.5, - 52.9, 53.3, 53.3, 53.7, - 51.7, 51.7, 52.1, 52.5, - 50.1, 50.5, 50.9, 51.3 ; -} -```
-### Example 7: Treatment of Grid Coordinates +### Example 7: Fixed Field -* [example7.py]({{site.baseurl}}/mydoc/examples/example7.py) +* [example_07_fixed_field.py]({{site.baseurl}}/mydoc/examples/python/example_07_fixed_field.py){:target="_blank"}
Click to expand Python code ```python -import cmor -import numpy -import os - - -var_data = numpy.random.random((3, 4, 2)) + 34. - -x = numpy.arange(4, dtype=float) -x_bnds = numpy.array([[x_ - 0.5, x_ + 0.5] for x_ in x]) -y = numpy.arange(3, dtype=float) -y_bnds = numpy.array([[y_ - 0.5, y_ + 0.5] for y_ in y]) - -lat = numpy.array([10, 20, 30]).reshape((3, 1)) -lat = numpy.tile(lat, (1, 4)) -lon = numpy.array([0, 90, 180, 270]) -lon = numpy.tile(lon, (3, 1)) -lon_bnds = numpy.zeros((3, 4, 4)) -lat_bnds = numpy.zeros((3, 4, 4)) - -for j in range(3): - for i in range(4): - lon_bnds[j, i, 0] = (lon[j, i] - 45) % 360 - lon_bnds[j, i, 1] = lon[j, i] - lon_bnds[j, i, 2] = (lon[j, i] + 45) % 360 - lon_bnds[j, i, 3] = lon[j, i] - lat_bnds[j, i, 0] = lat[j, i] - lat_bnds[j, i, 1] = lat[j, i] - 5 - lat_bnds[j, i, 2] = lat[j, i] - lat_bnds[j, i, 3] = lat[j, i] + 5 - -time = numpy.array([0, 1]) -time_bnds = numpy.array([0, 1, 2]) - -ipth = opth = 'Test' -cmor.setup(inpath=ipth, - set_verbosity=cmor.CMOR_NORMAL, - netcdf_file_action=cmor.CMOR_REPLACE, - exit_control=cmor.CMOR_EXIT_ON_MAJOR) -cmor.dataset_json('CMOR_input_example.json') - -# First, load the grids table to set up x and y axes and the lat-long grid -grid_table_id = cmor.load_table('CMIP6_grids.json') -cmor.set_table(grid_table_id) - -y_axis_id = cmor.axis(table_entry='y_deg', - units='degrees', - coord_vals=y, - cell_bounds=y_bnds) -x_axis_id = cmor.axis(table_entry='x_deg', - units='degrees', - coord_vals=x, - cell_bounds=x_bnds) - -grid_id = cmor.grid(axis_ids=[y_axis_id, x_axis_id], - latitude=lat, - longitude=lon, - latitude_vertices=lat_bnds, - longitude_vertices=lon_bnds) - -# Now, load the Omon table to set up the time axis and variable -omon_table_id = cmor.load_table('CMIP6_Omon.json') -cmor.set_table(omon_table_id) - -time_axis_id = cmor.axis(table_entry='time', - units='months since 1980', - coord_vals=time, - cell_bounds=time_bnds) - -var_id = cmor.variable(table_entry='sos', - units='0.001', - axis_ids=[grid_id, time_axis_id]) - -cmor.write(var_id, var_data, 2) - -filename = cmor.close(var_id, file_name=True) -print("Stored in:", filename) -cmor.close() -os.system("ncdump {}".format(filename)) - +{% include_relative examples/python/example_07_fixed_field.py %} ```
+
Click to expand NetCDF dump +```text +{% include_relative examples/python/example_07_fixed_field.cdl %} ``` -netcdf sos_Omon_PCMDI-test-1-0_piControl-withism_r3i1p1f1_gn_198001-198002 { -dimensions: - time = UNLIMITED ; // (2 currently) - y = 3 ; - x = 4 ; - bnds = 2 ; - vertices = 4 ; -variables: - double time(time) ; - time:bounds = "time_bnds" ; - time:units = "days since 1980" ; - time:calendar = "360_day" ; - time:axis = "T" ; - time:long_name = "time" ; - time:standard_name = "time" ; - double time_bnds(time, bnds) ; - double y(y) ; - y:bounds = "y_bnds" ; - y:units = "degrees" ; - y:axis = "Y" ; - y:long_name = "y coordinate of projection" ; - y:standard_name = "projection_y_coordinate" ; - double y_bnds(y, bnds) ; - double x(x) ; - x:bounds = "x_bnds" ; - x:units = "degrees" ; - x:axis = "X" ; - x:long_name = "x coordinate of projection" ; - x:standard_name = "projection_x_coordinate" ; - double x_bnds(x, bnds) ; - double latitude(y, x) ; - latitude:standard_name = "latitude" ; - latitude:long_name = "latitude" ; - latitude:units = "degrees_north" ; - latitude:missing_value = 1.e+20 ; - latitude:_FillValue = 1.e+20 ; - latitude:bounds = "vertices_latitude" ; - double longitude(y, x) ; - longitude:standard_name = "longitude" ; - longitude:long_name = "longitude" ; - longitude:units = "degrees_east" ; - longitude:missing_value = 1.e+20 ; - longitude:_FillValue = 1.e+20 ; - longitude:bounds = "vertices_longitude" ; - double vertices_latitude(y, x, vertices) ; - vertices_latitude:units = "degrees_north" ; - vertices_latitude:missing_value = 1.e+20 ; - vertices_latitude:_FillValue = 1.e+20 ; - double vertices_longitude(y, x, vertices) ; - vertices_longitude:units = "degrees_east" ; - vertices_longitude:missing_value = 1.e+20 ; - vertices_longitude:_FillValue = 1.e+20 ; - float sos(time, y, x) ; - sos:standard_name = "sea_surface_salinity" ; - sos:long_name = "Sea Surface Salinity" ; - sos:comment = "Sea water salinity is the salt content of sea water, often on the Practical Salinity Scale of 1978. However, the unqualified term \'salinity\' is generic and does not necessarily imply any particular method of calculation. The units of salinity are dimensionless and the units attribute should normally be given as 1e-3 or 0.001 i.e. parts per thousand." ; - sos:units = "0.001" ; - sos:cell_methods = "area: mean where sea time: mean" ; - sos:cell_measures = "area: areacello" ; - sos:history = "2025-01-13T20:25:29Z altered by CMOR: Reordered dimensions, original order: y x time. 2025-01-13T20:25:29Z altered by CMOR: Converted type from \'d\' to \'f\'." ; - sos:missing_value = 1.e+20f ; - sos:_FillValue = 1.e+20f ; - sos:coordinates = "latitude longitude" ; - -// global attributes: - :Conventions = "CF-1.7 CMIP-6.2" ; - :activity_id = "ISMIP6" ; - :branch_method = "no parent" ; - :branch_time_in_child = 59400. ; - :branch_time_in_parent = 0. ; - :contact = "Python Coder (coder@a.b.c.com)" ; - :creation_date = "2025-01-13T20:25:29Z" ; - :data_specs_version = "01.00.33" ; - :experiment = "preindustrial control with interactive ice sheet" ; - :experiment_id = "piControl-withism" ; - :external_variables = "areacello" ; - :forcing_index = 1 ; - :frequency = "mon" ; - :further_info_url = "https://furtherinfo.es-doc.org/CMIP6.PCMDI.PCMDI-test-1-0.piControl-withism.none.r3i1p1f1" ; - :grid = "native atmosphere regular grid (3x4 latxlon)" ; - :grid_label = "gn" ; - :history = "2025-01-13T20:25:29Z ;rewrote data to be consistent with ISMIP6 for variable sos found in table Omon.;\n", - "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256." ; - :initialization_index = 1 ; - :institution = "Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA" ; - :institution_id = "PCMDI" ; - :mip_era = "CMIP6" ; - :nominal_resolution = "10000 km" ; - :parent_activity_id = "no parent" ; - :parent_experiment_id = "no parent" ; - :parent_mip_era = "no parent" ; - :parent_source_id = "no parent" ; - :parent_time_units = "no parent" ; - :parent_variant_label = "no parent" ; - :physics_index = 1 ; - :product = "model-output" ; - :realization_index = 3 ; - :realm = "ocean" ; - :references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html. The ssp245 simulation is described in Dorkey et al. \'(Clim. Dyn., 2003, 323-357.)\'" ; - :run_variant = "3rd realization" ; - :source = "PCMDI-test 1.0 (1989): \n", - "aerosol: none\n", - "atmos: Earth1.0-gettingHotter (360 x 180 longitude/latitude; 50 levels; top level 0.1 mb)\n", - "atmosChem: none\n", - "land: Earth1.0\n", - "landIce: none\n", - "ocean: BlueMarble1.0-warming (360 x 180 longitude/latitude; 50 levels; top grid cell 0-10 m)\n", - "ocnBgchem: none\n", - "seaIce: Declining1.0-warming (360 x 180 longitude/latitude)" ; - :source_id = "PCMDI-test-1-0" ; - :source_type = "AOGCM ISM AER" ; - :sub_experiment = "none" ; - :sub_experiment_id = "none" ; - :table_id = "Omon" ; - :table_info = "Creation Date:(18 November 2020) MD5:1a7c21fe7a3ec7429780675800b70460" ; - :title = "PCMDI-test-1-0 output prepared for CMIP6" ; - :tracking_id = "hdl:21.14100/d2dac814-dcd1-4da6-a6f9-e35ebb1d1bcb" ; - :variable_id = "sos" ; - :variant_label = "r3i1p1f1" ; - :license = "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ; - :cmor_version = "3.9.0" ; -data: - - time = 15, 45 ; - - time_bnds = - 0, 30, - 30, 60 ; - - y = 0, 1, 2 ; - - y_bnds = - -0.5, 0.5, - 0.5, 1.5, - 1.5, 2.5 ; - - x = 0, 1, 2, 3 ; - - x_bnds = - -0.5, 0.5, - 0.5, 1.5, - 1.5, 2.5, - 2.5, 3.5 ; - - latitude = - 10, 10, 10, 10, - 20, 20, 20, 20, - 30, 30, 30, 30 ; - - longitude = - 0, 90, 180, 270, - 0, 90, 180, 270, - 0, 90, 180, 270 ; - - vertices_latitude = - 10, 5, 10, 15, - 10, 5, 10, 15, - 10, 5, 10, 15, - 10, 5, 10, 15, - 20, 15, 20, 25, - 20, 15, 20, 25, - 20, 15, 20, 25, - 20, 15, 20, 25, - 30, 25, 30, 35, - 30, 25, 30, 35, - 30, 25, 30, 35, - 30, 25, 30, 35 ; - - vertices_longitude = - 315, 0, 45, 0, - 45, 90, 135, 90, - 135, 180, 225, 180, - 225, 270, 315, 270, - 315, 0, 45, 0, - 45, 90, 135, 90, - 135, 180, 225, 180, - 225, 270, 315, 270, - 315, 0, 45, 0, - 45, 90, 135, 90, - 135, 180, 225, 180, - 225, 270, 315, 270 ; - - sos = - 34.8876, 34.84557, 34.84164, 34.83435, - 34.9416, 34.08398, 34.33438, 34.99736, - 34.23587, 34.22417, 34.60325, 34.67004, - 34.32861, 34.72874, 34.52488, 34.19158, - 34.48695, 34.07372, 34.91237, 34.68412, - 34.53342, 34.16178, 34.93912, 34.50451 ; -} -```
diff --git a/pdf/mydoc.pdf b/pdf/mydoc.pdf index 132cf8e..696fbf3 100644 Binary files a/pdf/mydoc.pdf and b/pdf/mydoc.pdf differ