diff --git a/.github/workflows/mopper-conda-release.yaml b/.github/workflows/mopper-conda-release.yaml index 7e070d2..a523ce7 100644 --- a/.github/workflows/mopper-conda-release.yaml +++ b/.github/workflows/mopper-conda-release.yaml @@ -2,6 +2,8 @@ name: Build of mopper conda package for new release # Controls when the action will run. on: + release: + types: ['released', 'prereleased'] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: diff --git a/ACDD_conf.yaml b/ACDD_conf.yaml index a86f373..1112c81 100755 --- a/ACDD_conf.yaml +++ b/ACDD_conf.yaml @@ -4,7 +4,8 @@ cmor: # If test true it will just run the setup but not launch the job automatically test: false - appdir: /g/data/ua8/Working/packages/ACCESS-MOPPeR + # working directory if default uses current directory + appdir: default # output directory for all generated data (CMORISED files & logs) # if default it is set to /scratch/$project/$user/MOPPER_OUTPUT outpath: default @@ -29,6 +30,11 @@ cmor: access_version: CM2 # reference date for time units (set as 'default' to use start_date) reference_date: 1970-01-01 + # Path and file templates can be changed based on the experiment. + # The example below should be considered a minimum requirement. + # Consider adding 'table_id" if using the "all tables" option to list + # the variables to process as variables can be present at same frequency + # in more than one tables path_template: "{product_version}/{frequency}" # date_range is automatically added at the end of filename file_template: "{variable_id}_{source_id}_{experiment_id}_{frequency}" @@ -41,6 +47,7 @@ cmor: shuffle: 1 # Variables to CMORise: # CMOR table/variable to process; default is 'all'. + # 'all' will use all the tables listed in the mapping file # Or create a yaml file listing variables to process (VAR_SUBSET[_LIST]). # each line: tables: CMIP6_Amon @@ -81,16 +88,21 @@ cmor: _AXIS_ENTRY_FILE: "ACDD_coordinate.json" _FORMULA_VAR_FILE: "ACDD_formula_terms.json" grids: "ACDD_grids.json" - # Additional NCI information: +# Additional NCI information: # NCI project to charge compute; $PROJECT = your default project project: v45 - # additional NCI projects to be included in the storage flags + # additional NCI projects to be included in the storage flags, comma separated list addprojs: [] # queue and memory (GB) per CPU (depends on queue), - # hugemem is reccomended for high reoslution data and/or derived variables + # hugemem is recommended for high reoslution data and/or derived variables # hugemem requires a minimum of 6 cpus this is handled by the code queue: hugemem mem_per_cpu: 32 + max_cpus: 24 + # Mopper uses multiprocessing to produce files in parallel, usually 1 cpu per worker + # is a good compromise, occasionally you might want to pass a higher number + # if running out of memory + cpuxworker: 1 # walltime in "hh:mm:ss" walltime: '8:00:00' mode: custom @@ -99,7 +111,7 @@ cmor: # you can override that by supplying the env to pass to "source" # Ex # conda_env: /bin/activate - # or you can set "test: true" and modify mopper_job.sh manually + # to allow other settings use "test: true" and modify mopper_job.sh manually conda_env: default # @@ -174,4 +186,4 @@ attrs: parent: !!bool false # CMOR will add a tracking_id if you want to define a prefix add here tracking_id_prefix: - comment: "post-processed using ACCESS-MOPPeR v1.0.0 https://doi.org/10.5281/zenodo.10346216" + comment: "post-processed using ACCESS-MOPPeR v1.1.0 https://doi.org/10.5281/zenodo.13841181" diff --git a/CMIP6_conf.yaml b/CMIP6_conf.yaml index c421df0..8235c44 100755 --- a/CMIP6_conf.yaml +++ b/CMIP6_conf.yaml @@ -4,7 +4,8 @@ cmor: # If test true it will just run the setup but not launch the job automatically test: false - appdir: /g/data/ua8/Working/packages/ACCESS-MOPPeR + # working directory if default uses current directory + appdir: default # output directory for all generated data (CMORISED files & logs) # if default it is set to /scratch/$project/$user/MOPPER_OUTPUT outpath: default @@ -38,6 +39,7 @@ cmor: # Variables to CMORise: # CMOR table/variable to process; default is 'all'. + # 'all' will use all the tables listed in the mapping file # Or create a yaml file listing variables to process (VAR_SUBSET[_LIST]). # each line: tables: CMIP6_Amon @@ -79,19 +81,29 @@ cmor: grids: CMIP6_grids.json # Additional NCI information: # NCI project to charge compute; $PROJECT = your default project - # NCI queue to use; hugemem is recommended project: v45 - # additional NCI projects to be included in the storage flags + # additional NCI projects to be included in the storage flags, comma separated list addprojs: [] # queue and memory (GB) per CPU (depends on queue) - # hugemem is reccomended for high reoslution data and/or derived variables + # hugemem is recommended for high resolution data and/or derived variables # hugemem requires a minimum of 6 cpus this is handled by the code queue: hugemem mem_per_cpu: 30 + max_cpus: 24 + # Mopper uses multiprocessing to produce files in parallel, usually 1 cpu per worker + # is a good compromise, occasionally you might want to pass a higher number + # if running out of memory + cpuxworker: 1 # walltime in "hh:mm:ss" walltime: '8:00:00' mode: cmip6 + # if default uses hh5 conda env + # conda_env to use by default hh5 analysis3-unstable + # as this has the code and all dependecies installed + # you can override that by supplying the env to pass to "source" + # Ex # conda_env: /bin/activate + # to allow other settings use "test: true" and modify mopper_job.sh manually conda_env: default # Global attributes: these will be added to each files comment unwanted ones diff --git a/README.md b/README.md index 12b0d94..c057ff9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # [ACCESS Model Output Post-Processor (MOPPeR)](https://access-mopper.readthedocs.io/en/latest) [![Read the docs](https://readthedocs.org/projects/access-mopper/badge/?version=latest)](https://access-mopper.readthedocs.io/en/latest/) -[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.12747219.svg)](https://doi.org/10.5281/zenodo.12747219) +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13841181.svg)](https://doi.org/10.5281/zenodo.13841181) This code is derived from the [APP4](https://doi.org/10.5281/zenodo.7703469), initially created by Peter Uhe for CMIP5, and further developed for CMIP6-era by Chloe Mackallah from CSIRO, O&A Aspendale. @@ -36,6 +36,6 @@ If you want to install an unstable version or a different branch: MOPPeR is pre-installed into a Conda environment at NCI. Load it with:: module use /g/data3/hh5/public/modules - module load conda/analysis3 + module load conda/analysis3-unstable NB. You need to be a member of the hh5 project to load the modules. diff --git a/conda/environment.yaml b/conda/environment.yaml index 62adf87..6b4707a 100644 --- a/conda/environment.yaml +++ b/conda/environment.yaml @@ -2,7 +2,6 @@ name: mopper_env channels: - conda-forge - coecms - - default dependencies: - anaconda-client diff --git a/conda/meta.yaml b/conda/meta.yaml index fff9987..e92248b 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -1,16 +1,17 @@ package: name: mopper - version: "{{ environ.get('GIT_DESCRIBE_TAG', '1.0') }}" - + #version: "{{ environ.get('GIT_DESCRIBE_TAG', '1.0') }}" + version: '1.1.0' #source: -# path: ./ +# path: ./ source: #url: https://github.com/ACCESS-Hive/ACCESS-MOPPeR/archive/refs/tags/{{version}}.tar.gz git_url: https://github.com/ACCESS-Hive/ACCESS-MOPPeR.git - #git_tag: prerelease - git_rev: "{{ version }}" + git_tag: prerelease + #git_rev: "1.1.0" #git_depth: 1 # (Defaults to -1/not shallow) + #path: ../. build: number: 1 diff --git a/conda/testenv.yaml b/conda/testenv.yaml index 7fa8dd5..a66ea8a 100644 --- a/conda/testenv.yaml +++ b/conda/testenv.yaml @@ -5,7 +5,7 @@ channels: dependencies: - cmor - click - - xarray + - conda-forge::xarray - numpy - dask - pyyaml @@ -16,3 +16,5 @@ dependencies: - codecov - pyfakefs - ruff + - metpy + - gsw diff --git a/docs/calculations.rst b/docs/calculations.rst new file mode 100644 index 0000000..1eacea8 --- /dev/null +++ b/docs/calculations.rst @@ -0,0 +1,78 @@ +Calculating derived variables +============================= + +Calculations are used to derive a variable from one or multiple inputs, to resample a variable to a new frequency or generally to modify a variable so it will match fully the corresponding definition in a CMOR table. + +How calculations work +--------------------- +Calculations are defined in the mapping file under the filed by the same name. The `calculation` string gets literally evaluated by the tool using python eval() function. +As an example + simple calculation could be summing avariable across all its vertical levels: + +.. code-block:: bash + + mrso;fld_s08i223;var[0].sum(dim='depth') + +`var` represents the list of input variables, in this case there's only one which var[0] in the calculation string. In this case the calculation is very simple and can be fully defined in the mapping itself. If the calculation is more complex it's easier to use a pre-defined function, for example: + +.. code-block:: bash + + hus24;fld_s00i010 fld_s00i408;plevinterp(var[0], var[1], 24) + +Here plevinterp is called to interpolate specific humidity from model levels to pressure levels, this function takes three input arguments, the variable to interpolate, pressure at model levels and finally the number of pressure levels, which corresponds to a specific definition of the pressure levels coordinate. +Already available functions are listed below. + +.. note:: + + When more than one variable is used as input, if the variables are not all in the same file, more than one file pattern can be specified in the mapping row. + +Resample +^^^^^^^^ +If a variable is available in the raw model output but not at the desired frequency, the tool will try to see if a higher frequency is available to be resampled. For example, if a user is interested in daily surface temperature but this is available only as hourly data, during the `mop setup` phase the tool will add a `resample` attribute with value 'D' to the variable and this will used as argument for the resample function. Which kind of statistics to use for the function is defined based on the `timeshot` attribute, so if a variable is defined as a maximum, minimum or sum these are used in the resample instead of the mean. + +Contributing +------------ +TBA + + +Available functions +------------------- + +Atmosphere and aerosol +^^^^^^^^^^^^^^^^^^^^^^ +.. automodule:: mopper.calc_atmos + :members: + :undoc-members: + :show-inheritance: + + +Ocean +^^^^^ +.. automodule:: mopper.calc_ocean + :members: + :undoc-members: + :show-inheritance: + + +SeaIce +^^^^^^ +.. automodule:: mopper.calc_seaice + :members: + :undoc-members: + :show-inheritance: + + +Land +^^^^ +.. automodule:: mopper.calc_land + :members: + :undoc-members: + :show-inheritance: + + +Other +^^^^^ +.. automodule:: mopper.calc_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/cmor.rst b/docs/cmor.rst index 5761ccf..db693d4 100644 --- a/docs/cmor.rst +++ b/docs/cmor.rst @@ -48,7 +48,7 @@ There are custom tables for CM2 variables not yet included in the CMIP6 tables a Experiment input file --------------------- -This provides user-supplied metadata and configuration directives used by CMOR, in cluding which controlled vocabulary (CV), grids and coordinate definitions to use and values for the attributes describing the model and simulation. +This provides user-supplied metadata and configuration directives used by CMOR, including which controlled vocabulary (CV), grids and coordinate definitions to use and values for the attributes describing the model and simulation. We simplified this process so the user only has to pass one configuration file to control all the necessary inputs. The `mop setup` command will then create an experiment file as expected by CMOR based on this and the selected CV file. This is described in the :ref:`Getting started section `. diff --git a/docs/cmor_conf.yaml b/docs/cmor_conf.yaml index 5c93d65..e7eb507 100755 --- a/docs/cmor_conf.yaml +++ b/docs/cmor_conf.yaml @@ -39,8 +39,9 @@ cmor: # shuffle 0: off 1:on Shuffle reduces size without impacting speed deflate_level: 4 shuffle: 1 - # Variables to CMORise: - # CMOR table/variable to process; default is 'all'. + # Variables to CMORise: + # CMOR table/variable to process; default is 'all'. + # 'all' will use all the tables listed in the mapping file # Or create a yaml file listing variables to process (VAR_SUBSET[_LIST]). # each line: tables: CMIP6_Amon @@ -85,12 +86,25 @@ cmor: # NCI project to charge compute; $PROJECT = your default project # NCI queue to use; hugemem is recommended project: v45 - # additional NCI projects to be included in the storage flags + # additional NCI projects to be included in the storage flags, comma separated list addprojs: [] - # queue and memory (GB) per CPU (depends on queue) + # queue and memory (GB) per CPU (depends on queue), + # hugemem is recommended for high reoslution data and/or derived variables + # hugemem requires a minimum of 6 cpus this is handled by the code queue: hugemem - mem_per_cpu: 32 + mem_per_cpu: 32 + max_cpus: 24 + # Mopper uses multiprocessing to produce files in parallel, usually 1 cpu per worker + # is a good compromise, occasionally you might want to pass a higher number + # if running out of memory + cpuxworker: 1 # walltime in "hh:mm:ss" walltime: '8:00:00' mode: custom - conda_env: /g/data/.../mopper_env/bin/activate + # conda_env to use by default hh5 analysis3-unstable + # as this has the code and all dependecies installed + # you can override that by supplying the env to pass to "source" + # Ex + # conda_env: /bin/activate + # to allow other settings use "test: true" and modify mopper_job.sh manually + conda_env: default diff --git a/docs/conf.py b/docs/conf.py index bd47e1c..44aec70 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # -# clef documentation build configuration file, created by -# sphinx-quickstart on Fri May 13 10:16:43 2016. +# ACCESS-MOPPeR documentation build configuration file. # # This file is execfile()d with the current directory set to its # containing dir. @@ -12,11 +11,15 @@ # All configuration values have a default; values that are commented out # serve to show the default. +import sys +import os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath('../src')) + # -- General configuration ------------------------------------------------ @@ -48,6 +51,10 @@ # The master toctree document. master_doc = 'index' +# adding this to avoid failure of autodoc because of missing packages +autodoc_mock_imports = ['numpy', 'xarray', 'dask', 'logging', 'click', + 'yaml', 'json', 'importlib'] + # General information about the project. project = u'ACCESS-MOPPeR' copyright = u'2023, Paola Petrelli, Sam Green' diff --git a/docs/customising.rst b/docs/customising.rst index 9d6faaa..24f8e11 100644 --- a/docs/customising.rst +++ b/docs/customising.rst @@ -39,10 +39,10 @@ These variables will be listed in a section labelled: # Variables with different frequency: Use with caution! -The frequency listed in the mapping template is taken directly from the file, make sure it matches the one of the listed cmor table. If they differ the `cmor table` should be updated with one that has a definition with the correct frequency. +The frequency listed in the mapping template is taken directly from the file, make sure it matches the one of the listed CMOR table. If they differ the `cmor table` should be updated with one that has a definition with the correct frequency. -.. warning:: - Pay attention if the variable is an instantaneous value or not (i.e. time: point vs mean, sum, max etc in the cell_methods). This should match the frequency in the cmor table definition. +.. warning:: + Pay attention if the variable is an instantaneous value or not (i.e. time: point vs mean, sum, max etc in the cell_methods). This should match the frequency in the CMOR table definition. If it doesn't a new variable with the correct frequency, cell_methods and time _axis should be defined, see below. A similar message precedes all the variables mapped from a different version from the selected (or default) one: @@ -66,7 +66,7 @@ For both steps existing identical records will be overwritten. Once new records While it's possible to modify an existing CMOR table, it's probably better to do so only for a custom table as CMIP6 has strict standards and it's important to keep these tables the same as their official version. Other things to pay attention to are: - * Check that the table to modify doesn't contain a conflicting variable, for example a variable that uses the same output name. In most cases the output name and the variable name used as key for the record are the same. However, the key name is what is used to point to the correct variable definition in the mapping table and can be different from the output name. This allows two variables with the same output name to be part of the same cmor table. + * Check that the table to modify doesn't contain a conflicting variable, for example a variable that uses the same output name. In most cases the output name and the variable name used as key for the record are the same. However, the key name is what is used to point to the correct variable definition in the mapping table and can be different from the output name. This allows two variables with the same output name to be part of the same CMOR table. * When adding a variable, a sub-hourly frequency the frequency in the table should be `subhr` or most often `subhrPt`. This is because of the way CMOR3 is structured it only accept a defined set of frequencies. As mopper uses the frequencies to estimate the file sizes, if working with sub-hourly data you need to then specify what the exact interval is in the configuration file using the `subhr` field and `min` as units. .. warning:: @@ -94,7 +94,7 @@ Here we're showing how the pressure level calculation is defined for air tempera For context this is the function definition: -.. code-block:: ipython3 +.. code-block:: python def plevinterp(ctx, var, pmod, levnum): @@ -102,5 +102,6 @@ where `ctx` is the `context` of the specific file including information on the o .. note:: + All currently available calculations are listed in `Available functions`_. We are planning to provide a simplified way to introduce new calculations and to update the central database with user provided mappings and variable definitions. For the moment open a `new issue on github `_ so we can review the updates and add them to the official version. diff --git a/docs/gettingstarted.rst b/docs/gettingstarted.rst index 62aabd1..ce525a6 100644 --- a/docs/gettingstarted.rst +++ b/docs/gettingstarted.rst @@ -2,18 +2,18 @@ Starting with MOPPeR ==================== A typical workflow to post-process an ACCESS or UM model output requires two steps. -The first step is creating the mapping for a spcific simualtion and it is done only once for an experiment. +The first step is creating the mapping for a specific simulation, and it is done only once for an experiment. The second step is to setup and run the actual post-processing. Step1: create a template for a mapping file ------------------------------------------- - *mopdb template -f -m -v -a * + *mopdb template -f -v -a * .. code-block:: console - $ mopdb template -f /scratch/.../exp1/atmos -m 095101 -v CM2 -a exp1 + $ mopdb template -f /scratch/.../exp1/atmos -v CM2 -a exp1 Opened database /home/581/pxp581/.local/lib/python3.10/site-packages/data/access.db successfully Found more than 1 definition for fld_s16i222: [('psl', 'AUS2200', 'AUS2200_A10min', '10minPt'), ('psl', 'AUS2200', 'AUS2200_A1hr', '1hr')] @@ -30,17 +30,16 @@ Step1: create a template for a mapping file `mopdb template` takes as input: * -f/--fpath : the path to the model output - * -m/--match : used to identify files' patterns. The tool will only add a list of variables for the same pattern once. * -v/--version : the access version to use as preferred mapping. ESM1.5, CM2, OM2 and AUS2200 are currently available. * -a/--alias : an optional alias, if omitted default names will be used for the output files. -Alternatively a list of variables can be created separately using the *varlist* command and this can be passed directly to template using the *fpath* option. +Alternatively, a list of variables can be created separately using the *varlist* command and this can be passed directly to template using the *fpath* option. *mopdb template -f -v -a * -It produces a csv file with a list of all the variables from raw output mapped to cmip style variables. These mappings also take into account the frequency and include variables that can be potentially calculated with the listed fields. The console output lists these, as shown above. +It produces a csv file with a list of all the variables from raw output mapped to CMIP style variables. These mappings also consider the frequency and include variables that can be potentially calculated with the listed fields. The console output lists these, as shown above. -This file should be considered only a template (hence the name) as the possible matches depends on the mappings available in the `access.db` database. This is distributed with the repository or an alternative custom database can be passed with the `--dbname` option. +This file should be considered only a template (hence the name) as the possible matches depends on the mappings available in the `access.db` database. This is distributed with the repository, or an alternative custom database can be passed with the `--dbname` option. The mappings can be different between different version and/or configurations of the model. And the database doesn't necessarily contain all the possible combinations. Starting with version 0.6 the list includes matches based on the standard_name, as these rows often list more than one option per field, it's important to either edit or remove these rows before using the mapping file. @@ -49,7 +48,6 @@ It also provides an intermediate varlist_.csv file that shows the informa .. warning:: Always check that the resulting template is mapping the variables correctly. This is particularly true for derived variables. Comment lines are inserted to give some information on what assumptions were done for each group of mappings. - The se Step2: Set up the working environment @@ -95,18 +93,22 @@ The `mop setup` command takes as input a yaml configuration file which contains cmor ^^^^ -This part contains all the file paths information for input files, mapping file, custom cmor tables if they exists and where the output should be saved. It's also how a user can control the queue jobs settings and which variables will be processed. +This part contains all the file paths information for input files, mapping file, custom CMOR tables if they exists and where the output should be saved. It's also how a user can control the queue jobs settings, and which variables will be processed. +A user can select to process one variable at the time, a specific or `all` CMOR tables, or a specific list of variables passed as a yaml file. Whichever way, only tables and variables included in the mapping file are considered. If they are not available `mop` will skip them. If they are available at a higher frequency it will setup resample to calculate them. .. dropdown:: Example .. literalinclude:: cmor_conf.yaml :language: yaml +.. note:: + From version 1.1 we introduced more keys to control the PBS directives, but also how CPUs are handled by the multiprocessing Pool used in the code. The number of CPUs used by the project is derived by default based on the number of files to process, the queue and a `max_cpus` value that can be now controlled. `mop run` uses Pool to work on each file separately and by default will allocate 1 CPU per worker and launch a maximum number of workers equal to the number of CPUs. This can now be controlled by setting a `cpuxworker` number. This can be useful to allocate more memory to each worker. + attributes ^^^^^^^^^^ -The second part is used to define the global attributes to add to every file. CMOR uses a controlled vocabulary file to list required attributes (see ..). We provide the official CMIP6 and a custom made controlled vocabulary as part of the repository data. Hence, we created two templates one for `CMIP6 compliant files `_, the other for `ACDD compliant files `_. -The ACDD conventions help producing reasonably well-documented files when a specific standard is not required, they are also the convetions requested by NCI to publish data as part of their collection. -While the CMIP6 file should be followed exactly, the ACDD template is just including a minimum number of required attributes, any other attribute deem necessary can always be added. +The second part is used to define the global attributes to add to every file. CMOR uses a controlled vocabulary file to list required attributes. We provide the official CMIP6 and a custom-made controlled vocabulary as part of the repository data. Hence, we created two templates one for `CMIP6 compliant files `_, the other for `ACDD compliant files `_. +The ACDD conventions help producing reasonably well-documented files when a specific standard is not required, they are also the conventions requested by NCI to publish data as part of their collection. +While the CMIP6 file should be followed exactly, the ACDD template is just including a minimum number of required attributes, any other attribute deemed necessary can always be added. .. dropdown:: Example diff --git a/docs/index.rst b/docs/index.rst index 2ce66f5..5b76dfe 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -28,6 +28,7 @@ Respect to the APP4 tool, MOPPeR is: customising.rst Mapping cmip.rst + calculations.rst Indices and tables ================== diff --git a/docs/map_exp1.csv b/docs/map_exp1.csv new file mode 100644 index 0000000..bf3aa13 --- /dev/null +++ b/docs/map_exp1.csv @@ -0,0 +1,27 @@ +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +amdry;fld_s30i403;;kg m-2;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;720;umnsa_spec_;TOTAL COLUMN DRY MASS RHO GRID; +cl;fld_s00i265;level_to_height(var[0],levs=(0,66));%;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;120;umnsa_cldrad_;AREA CLOUD FRACTION IN EACH LAYER;cloud_area_fraction_in_atmosphere_layer +cli;fld_s00i012;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;120;umnsa_cldrad_;QCF AFTER TIMESTEP;mass_fraction_of_cloud_ice_in_air +eow;fld_s03i232;;kg m-2 s-1;time_0 lat lon;longitude latitude time;1hr;land;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;120;umnsa_slv_;Evaporation flux from open sea; +rsds;fld_s01i235;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;120;umnsa_slv_;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +... +# Derived variables with matching version and frequency: Use with caution!;;;;;;;;;;;;;;;;; +hus24;fld_s00i010 fld_s00i408;plevinterp(var[0], var[1], 24);1;time model_theta_level_number lat lon_0;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;120;umnsa_mdl_;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity +prw;fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406;var[0]-sum_vars(var[1:]);kg m-2;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;720;umnsa_spec_;TOTAL COLUMN DRY MASS RHO GRID; +... +# Variables definitions coming from different version;;;;;;;;;;;;;;;;; +ps;fld_s00i409;;Pa;time_1 lat lon;longitude latitude time1;3hrPt;atmos;area: time: point;;CMIP6_E3hrPt;CM2;float32;22048000;40;umnsaa_pvera;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +# Variables with different frequency: Use with caution!;;;;;;;;;;;;;;;;; +ps;fld_s00i409;;Pa;time_1 lat lon;longitude latitude time1;3hrPt;atmos;area: time: point;;CMIP6_E3hrPt;CM2;float32;22048000;40;umnsaa_pvera;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +... +# Variables matched using standard_name: complete mapping or discard!;;;;;;;;;;;;;;;;; +['rsut-AUS2200_A1hr', 'rsutaf-CMIP6_AERmon', 'rsut-CMIP6_Amon', 'rsut-CMIP6_CF3hr', 'rsut-CMIP6_CFday', 'rsut4co2-CMIP6_CFmon', 'rsut-CMIP6_CFsubhr', 'rsut-CMIP6_E1hrClimMon', 'rsut-CMIP6_E3hr', 'rsut-CMIP6_Esubhr'];fld_s01i208;;W m-2;time_4 lat lon;time_4 lat lon;1hrPt;atmos;area: time: point;;;;float32;22048000;120;umnsaa_pvera;OUTGOING SW RAD FLUX (TOA);toa_outgoing_shortwave_flux +... +# Derived variables: Use with caution!;;;;;;;;;;;;;;;;; +prw;fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406;var[0]-(var[1]+var[2]+var[3]);kg m-2;time lat lon;longitude latitude time;10minPt;atmos;area: time: point;;CMIP6_Amon;CM2;float32;22048000;720;umnsa_spec_;TOTAL COLUMN DRY MASS RHO GRID; +zg24;fld_s15i101 fld_s00i408;height_gpheight(var[0], pmod=var[1], levnum=24);m;time model_theta_level_number lat lon_0;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A6hr;AUS2200;float32;1543360000;120;umnsa_mdl_;PRESSURE AT THETA LEVELS AFTER TS;air_pressure +... +# Variables without mapping;;;;;;;;;;;;;;;;; +fld_s03i051;fld_s03i051;;;time pseudo_level lat lon;time pseudo_level lat lon;10minPt;atmos;area: time: point;;;;float32;110240000;720;umnsa_spec_;COMBINED RESIST. TO EVAP ON TILES; +fld_s03i052;fld_s03i052;;;time pseudo_level lat lon;time pseudo_level lat lon;10minPt;atmos;area: time: point;;;;float32;110240000;720;umnsa_spec_;COEFFS RATIO FOR 1.5M T ON TILES; +... diff --git a/docs/mop_workflow.rst b/docs/mop_workflow.rst index e58c1b4..6d5f9f9 100644 --- a/docs/mop_workflow.rst +++ b/docs/mop_workflow.rst @@ -9,6 +9,7 @@ setup * Defines and creates output paths * Updates CV json file if necessary * Selects variables and corresponding mappings based on table and constraints passed in config file +* Produces mop_var_selection.yaml file with variables matched for each table * Creates/updates database filelist table to list files to create * Finalises configuration and save in new yaml file * Writes job executable file and submits (optional) to queue diff --git a/docs/mopdb_command.rst b/docs/mopdb_command.rst index f60d958..d97f80a 100644 --- a/docs/mopdb_command.rst +++ b/docs/mopdb_command.rst @@ -2,7 +2,7 @@ Variable mappings: mopdb ======================== The `mopdb` command allows to create all the configuration files necessary to customise MOPPeR starting from the actual model output and the mapping information already available in the access.db database. -As mopdb can only match predefined variables and the named variables in the model output can be defined differently for different model configuration, it is ultimately the user responsibility to make sure that the proposed mappings are correct. +As `mopdb` can only match predefined variables and the named variables in the model output can be defined differently for different model configuration, it is ultimately the user responsibility to make sure that the proposed mappings are correct. Overview -------- @@ -43,7 +43,7 @@ Populate/update database mapping table If initialising the database for the first time, start by adding existing mappings files as shown above. The mappings files we used for our database are available in the repository `mappings` folder. -The `-a/--alias` argument in the second example "app4" indicates that these tables were originated for the APP4 tool and they use a different style of mapping file. +The `-a/--alias` argument in the second example "app4" indicates that these tables were originated for the APP4 tool, and they use a different style of mapping file. To add the current style of mapping files you can omit the `alias`, as in the first example, or pass a different `alias`. If omitted the tool will use the file name as alias. The `alias` value is saved in the table and can then later be used to identify the preferred mappings to use. @@ -58,13 +58,13 @@ A user that wants to create a mapping table for another AUS2200 simulation can u Create a mapping file --------------------- -This can be done by providing the model output path and a pattern to match or directly a varlist file +This can be done by providing the model output path or directly a varlist file From output path: .. code-block:: - mopdb template -f -m -v + mopdb template -f -v From varlist file: @@ -75,52 +75,28 @@ From varlist file: This will create a map_.csv file using, if available, information from the mapping table. As the command name highlights the resulting file is just a template of a working mapping file. The results are divided in sections depending on how reliable the mappings are considered. -The first group of mappings are usually ready to use as they are perfect matches of `version`, `frequency` and `input-variables`. These records are ready for the post-processing. The second group also matches the three fields above, but they are all derived variables. For these mopdb will check that all the necessary input-variables are present. These records should be also ready to be used but be mindful of potential changes to calculation functions. +The first group of mappings are usually ready to use as they are perfect matches of `version`, `frequency` and `input-variables`. These records are ready for the post-processing. The second group also matches the three fields above, but they are all derived variables. For these `mopdb` will check that all the necessary input-variables are present. These records should be also ready to be used but be mindful of potential changes to calculation functions. The other groups of records require checking, as either the version or the frequency do not match those of the model output, or more than one possible match is listed if records are matched using their standard_name. Finally, the last group is records for which wasn't possible to find a mapping. .. _template example: .. dropdown:: Example output of template - cmor_var;input_vars;calculation;units;dimensions;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;filename;long_name;standard_name - agesno;fld_s03i832;;day;time pseudo_level_1 lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;1880064;12;cw323a.pm;CABLE SNOW AGE ON TILES;age_of_surface_snow - amdry;fld_s30i403;;kg m-2;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN DRY MASS RHO GRID; - amwet;fld_s30i404;;kg m-2;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN WET MASS RHO GRID;atmosphere_mass_per_unit_area - ci;fld_s05i269;;1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;deep convection indicator; - ... - # Derived variables with matching version and frequency: Use with caution!;;;;;;;;;;;;;;;; - baresoilFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],14,landfrac=var[1]);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; - c3PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1]);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; - # Variables definitions coming from different version;;;;;;;;;;;;;;;; - rlntds;fld_s02i203;;W m-2;time lat lon;mon;ocean;area: time: mean; time: mean;;CMIP6_Omon;float32;110592;12;cw323a.pm;NET DN LW RAD FLUX:OPEN SEA:SEA MEAN;surface_net_downward_longwave_flux - rssntds;fld_s01i203;;W m-2;time lat lon;mon;ocean;area: time: mean; time: mean;;CM2_mon;float32;110592;12;cw323a.pm;NET DN SW RAD FLUX:OPEN SEA:SEA MEAN;surface_net_downward_shortwave_flux - # Variables with different frequency: Use with caution!;;;;;;;;;;;;;;;; - rlntds;fld_s02i203;;W m-2;time lat lon;mon;ocean;area: time: mean; time: mean;;CMIP6_Omon;float32;110592;12;cw323a.pm;NET DN LW RAD FLUX:OPEN SEA:SEA MEAN;surface_net_downward_longwave_flux - rssntds;fld_s01i203;;W m-2;time lat lon;mon;ocean;area: time: mean; time: mean;;CM2_mon;float32;110592;12;cw323a.pm;NET DN SW RAD FLUX:OPEN SEA:SEA MEAN;surface_net_downward_shortwave_flux - # Variables matched using standard_name: Use with caution!;;;;;;;;;;;;;;;; - ['huss-CMIP6_3hr', 'hus-CMIP6_6hrLev', 'hus4-CMIP6_6hrPlev', 'hus27-CMIP6_6hrPlevPt', 'hus7h-CMIP6_6hrPlevPt', 'huss-CMIP6_6hrPlevPt', 'hus-CMIP6_Amon', 'huss-CMIP6_Amon', 'hus-CMIP6_CFday', 'hus-CMIP6_CFmon', 'hus-CMIP6_CFsubhr', 'huss-CMIP6_CFsubhr', 'hus-CMIP6_day', 'huss-CMIP6_day', 'hus-CMIP6_E3hrPt', 'hus7h-CMIP6_E3hrPt', 'hus-CMIP6_Eday', 'hus850-CMIP6_Eday', 'hus-CMIP6_EdayZ', 'hus-CMIP6_Emon', 'hus27-CMIP6_Emon', 'hussLut-CMIP6_Emon', 'hus-CMIP6_Esubhr', 'huss-CMIP6_Esubhr', 'huss-AUS2200_A10min', 'hus-AUS2200_A1hr', 'huss-AUS2200_A1hr', 'hus24-AUS2200_A1hrPlev', 'hus3-AUS2200_A1hrPlev'];;;1;time model_theta_level_number lat lon;mon;;area: time: mean;;CMIP6_Amon;;float32;9400320;12;cw323a.pm;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity - ... - # Derived variables: Use with caution!;;;;;;;;;;;;;;;; - hus24;fld_s00i010 fld_s00i408;plevinterp(var[0], var[1], 24);1;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;AUS2200_A1hrPlev;AUS2200;float32;9400320;12;cw323a.pm;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity - sifllatstop;fld_s03i234 fld_s00i031;maskSeaIce(var[0],var[1]);1;time lat lon;mon;seaIce;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;110592;12;cw323a.pm;FRAC OF SEA ICE IN SEA AFTER TSTEP;sea_ice_area_fraction - theta24;fld_s00i004 fld_s00i408;plevinterp(var[0], var[1], 24);K;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;AUS2200_A1hrPlev;AUS2200;float32;9400320;12;cw323a.pm;THETA AFTER TIMESTEP;air_potential_temperature - # Variables without mapping;;;;;;;;;;;;;;;; - fld_s00i211;;;1;time model_theta_level_number lat lon;mon;;area: time: mean;;;;float32;9400320;12;cw323a.pm;Convective cloud amount with anvil; - fld_s00i253;;;;time model_rho_level_number lat lon;mon;;area: time: mean;;;;float32;9400320;12;cw323a.pm;DENSITY*R*R AFTER TIMESTEP; - fld_s00i413;;;1;time pseudo_level lat lon;mon;;area: time: mean;;;;float32;552960;12;cw323a.pm;Sea ice concentration by categories; - ... + .. literalinclude:: map_ex1.csv + :language: csv + Create an intake catalogue -------------------------- -This represents an extra step on top of the mapping, so it can be start directly from an existing mapping or from scratch by providing the model ouptut path and a match. +This represents an extra step on top of the mapping, so it can be start directly from an existing mapping or from scratch by providing the model output path. From output path: .. code-block:: - mopdb intake -f -m -v { -a } + mopdb intake -f -v { -a } From varlist file: @@ -141,7 +117,7 @@ NB the model output path is still needed even when passing an existing mapping o * intake_.json - the intake-esm catalogue; * catalogue.csv.xz - a csv file containing a list of the assets. -The esm-catalogue is a multi-variable catalogue, which means that each file can have more than one variable as it is usual for raw model output. While each file contains a lot of variables, a user can select just one or few and only these will be loaded as an xarray dataset. This is helpful with the UM output where variables with different dimensions can co-exist in a file. In such case, it's necessary to use preprocess to select variables with consitent dimensions to avoid concatenation issues. As this is the standard behaviour for multi-variable intake-esm catalogues, the user don't need to worry about it. +The esm-catalogue is a multi-variable catalogue, which means that each file can have more than one variable as it is usual for raw model output. While each file contains a lot of variables, a user can select just one or few and only these will be loaded as an xarray dataset. This is helpful with the UM output where variables with different dimensions can co-exist in a file. In such case, it's necessary to use preprocess to select variables with consistent dimensions to avoid concatenation issues. As this is the standard behaviour for multi-variable intake-esm catalogues, the user doesn't need to worry about it. The esm-intake catalogue also lists separately each variable that can be mapped to a cmor name and/or standard_name. This allows to use the cmor names and/or the standard_names more effectively to query the data. @@ -149,7 +125,7 @@ Get a list of variables from the model output --------------------------------------------- .. code-block:: - mopdb varlist -f -m + mopdb varlist -f this will create a list of variables with useful attributes @@ -190,7 +166,7 @@ Adding new variable definitions to cmor table If the cmor variable table doesn't include a field you want to post-process, you can add a new definition to an existing custom table or build a new CMIP style table from scratch. -Then you can load the new table as shown below. If you have modified an existing table new records will be added and existing ones will be updated. This helps keeping the content of cmovar database table consistent with the cmor tables. +Then you can load the new table as shown below. If you have modified an existing table new records will be added, and existing ones will be updated. This helps keeping the content of cmovar database table consistent with the cmor tables. .. code-block:: console @@ -235,7 +211,7 @@ Selecting a database By default, if using the package installed in the hh5 conda environment, mopdb will use the `access.db` database which comes with the package. If a user wants to modify the database, they will need to get a copy of the official database or define a new one from scratch as shown above. -Then the `--dbname ` option ican be used to select the custom database. +Then the `--dbname ` option can be used to select the custom database. .. warning:: Any command that writes or updates the database will fail with the default database. This is true regardless of the user having writing access to the file. The tool will abort the sub-commands `del`, `cmor` and `map` if the default option or the actual path to the default database is passed. diff --git a/docs/output.rst b/docs/output.rst index c4b371d..48404e8 100644 --- a/docs/output.rst +++ b/docs/output.rst @@ -9,6 +9,12 @@ The directory path is determined by the `output` field. This can be a path or if where `exp` is also defined in the configuration file. +.. note:: + + `mop setup` also produces the `map_var_selection.yaml` file which includes lists of matched variables for each table. + This can be used as a list of variables to select by passing it in a configuration files as the `varlist` field. + It can be useful to run first `mop setup` with `tables: all` to see which variables can be matched across all available tables and then rerun it using mop_var_selection.yaml as a varlist after refining the selection. + This folder will contain the following files: @@ -27,6 +33,7 @@ This folder will contain the following files: * frequency - output variable frequency * realm - output variable realm * timeshot - cell_methods value for time: point, mean, sum, max, min + * axes - The cmor names of the axes used in variable definition * tstart - datetime stamp for time range start * tend - datetime stamp for time range end * sel_start - datetime stamp to use for input file selection (start) @@ -66,10 +73,11 @@ This folder will contain the following files: | # for a list of packages | | module use /g/data/hh5/public/modules - | module load conda/analysis3-23.04 + | module load conda/analysis3 + | source mopper_env/bin/activate # if using conda option | | cd /g/data/ua8/Working/packages/ACCESS-MOPPeR - | mopper.py -i ashwed1980_config.yaml run + | mop run -c ashwed1980_config.yaml # --debug (uncomment to run in debug mode) | echo 'APP completed for exp ashwed1980.' * **experiment-id.json** diff --git a/docs/overview.rst b/docs/overview.rst index f074224..1cd6511 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -1,16 +1,19 @@ Install ======= -We are planning to release ACCESS-MOPPeR in conda soon and then it will be available at NCI on our conda environments. -In the meantime, you can icreate a custom conda environment and install mopper following these steps: +ACCESS-MOPPeR is available at NCI on the hh5 conda environments. +To access a more recent version, you can create a custom conda environment and install mopper following these steps: 1. module load conda/analysis3 -2. python -m venv mopper_env --system-site-packages -3. source /mopper_env/bin/activate -4. pip install git+https://github.com/ACCESS-Community-Hub/ACCESS-MOPPeR@main +2. export PYTHONNOUSERSITE=1 +3. python -m venv mopper_env --system-site-packages +4. source /mopper_env/bin/activate +5. pip install git+https://github.com/ACCESS-Community-Hub/ACCESS-MOPPeR@main The source command will activate the conda env you just created. Any time you want to use the tool in a new session repeat the first and third steps. -The `pip` command above will install from the main branch, you can also indicate a different branch. +The `pip` command above will install from the main branch, you can also install from a different branch. +.. warning:: + If copying and pasting be careful to re-type the hyphens before 'system-site-packages' diff --git a/mappings/map_AUS2200.csv b/mappings/map_AUS2200.csv index 7f7aec5..bb2ca4e 100644 --- a/mappings/map_AUS2200.csv +++ b/mappings/map_AUS2200.csv @@ -1,105 +1,103 @@ -#cmor_var;input_vars;calculation;units;dimensions;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name -amdry;fld_s30i403;;kg m-2;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;;float32;22048000;2304;umnsa_spec;TOTAL COLUMN DRY MASS RHO GRID; -amwet;fld_s30i404;;kg m-2;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;;float32;22048000;2304;umnsa_spec;TOTAL COLUMN WET MASS RHO GRID;atmosphere_mass_per_unit_area -cl;fld_s00i265;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;AREA CLOUD FRACTION IN EACH LAYER;cloud_area_fraction_in_atmosphere_layer -clhigh;fld_s09i205;;1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;HIGH CLOUD AMOUNT;high_type_cloud_area_fraction -cli;fld_s00i012;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;QCF AFTER TIMESTEP;mass_fraction_of_cloud_ice_in_air -clivi;fld_s30i406;;kg m-2;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TOTAL COLUMN QCF RHO GRID;atmosphere_cloud_ice_content -clivol;fld_s00i268;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;ice_cloud_volume_fraction_in_atmosphere_layer; -cllow;fld_s09i203;;1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;LOW CLOUD AMOUNT;low_type_cloud_area_fraction -clmed;fld_s09i204;;1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;MEDIUM CLOUD AMOUNT;medium_type_cloud_area_fraction -clmxro;fld_s09i217;;1;time_0 lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2022;umnsa_slv_;cloud_area_fraction_assuming_maximum_random_overlap;cloud_area_fraction; -clmxro;fld_s09i217;;1;time_0 lat lon;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;cloud_area_fraction_assuming_maximum_random_overlap;cloud_area_fraction; -clw;fld_s00i254;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;QCL AFTER TIMESTEP;mass_fraction_of_cloud_liquid_water_in_air -clwvol;fld_s00i267;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;liquid_cloud_volume_fraction_in_atmosphere_layer; -cw;fld_s08i209;;kg m-2;time lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;CANOPY WATER CONTENT;canopy_water_amount -eow;fld_s03i232;;kg m-2 s-1;time_0 lat lon;1hr;land;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;Evaporation flux from open sea; -estot;fld_s03i229;;kg m-2;time_0 lat lon;1hr;land;area: time: sum;;AUS2200_A1hr;AUS2200;;float32;22048000;384;umnsa_slv;EVAP FROM SOIL SURF -AMOUNT KG/M2/TS; -evspsbl;fld_s03i223_0;;kg m-2 s-1;time lat lon;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;;float32;22048000;384;umnsa_slv;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux -evspsblpot;fld_s03i335;;kg m-2 s-1;time pseudo_level lat lon;10minPt;atmos;area: time: point;;;AUS2200;;float32;110240000;2304;umnsa_spec;POTENTIAL EVAPORATION ON TILES;water_potential_evaporation_flux -evspsbl_Pt;fld_s03i223;;kg m-2 s-1;time lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;;float32;22048000;384;umnsa_slv;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux -flashrate;fld_s21i100;;s-1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;lightning_flash_rate; -grplmxrat;fld_s00i273;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;GRAUPEL AFTER TIMESTEP;mass_fraction_of_graupel_in_air -hfls;fld_s03i234_0;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux -hfls_Pt;fld_s03i234;;W m-2;time lat lon;1hrPt;atmos;area: time: point;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux -hfss;fld_s03i217_0;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux -hfss_Pt;fld_s03i217;;W m-2;time lat lon;1hrPt;atmos;area: time: point;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux -hus24;fld_s00i010 fld_s00i408;plevinterp(var[0], var[1], 24);1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: mean;;AUS2200_A1hrPlev;AUS2200;float32;9400320;2081;umnsa_mdl;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity -hus;fld_s00i010;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity -huslev1;fld_s00i010;;1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SPECIFIC HUMIDITY AFTER TIMESTEP;surface_specific_humidity -huss;fld_s03i237;;1;time_0 lat lon;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SPECIFIC HUMIDITY AT 1.5M;specific_humidity -huss;fld_s03i237;;1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SPECIFIC HUMIDITY AT 1.5M;specific_humidity -lmask;fld_s00i030;var[0].isel(time=0).astype(int);1;time_1 lat lon;1hrPt;land;area: time: point;;AUS2200_fx;AUS2200;;float64;44096000;384;umnsa_slv;LAND MASK (No halo) (LAND=TRUE);land_binary_mask -lwp;fld_s30i405;;kg m-2;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TOTAL COLUMN QCL RHO GRID;atmosphere_cloud_liquid_water_content -mrso;fld_s08i223;var[0].sum(dim='depth');kg m-2;time depth lat lon;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;; -mrsol;fld_s08i223;;kg m-2;time depth lat lon;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;88192000;384;umnsa_slv;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer -mrsos;fld_s08i223;calc_top_soil(var[0]);kg m-2;time depth lat lon;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;; -nflash;fld_s21i104;;1;time_0 lat lon;10min;atmos;area: time: sum;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;Number_of_lightning_flashes; -orog;fld_s00i033;var[0].isel(time=0);m;time_1 lat lon;1hrPt;land;area: time: point;;CMIP6_fx;AUS2200;float32;22048000;384;umnsa_slv;OROGRAPHY (/STRAT LOWER BC);surface_altitude -pfull;fld_s00i408;level_to_height(var[0],levs=(0,66));Pa;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;PRESSURE AT THETA LEVELS AFTER TS;air_pressure -phalf;fld_s00i407;level_to_height(var[0],levs=(0,66));Pa;time model_rho_level_number_0 lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1565408000;384;umnsa_mdl;PRESSURE AT RHO LEVELS AFTER TS;air_pressure -pralsns;fld_s04i202;;kg m-2;time_0 lat lon;10min;atmos;area: time: sum;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;LARGE SCALE SNOW AMOUNT KG/M2/TS;stratiform_snowfall_amount -pralsprof;fld_s04i201;;kg m-2;time_0 lat lon;10min;atmos;area: time: sum;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;LARGE SCALE RAIN AMOUNT KG/M2/TS;stratiform_rainfall_amount -prw;fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406;var[0]-sum_vars(var[1:]);kg m-2;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;; -ps;fld_s00i409;;Pa;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure -pslev1;fld_s00i408;;Pa;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;PRESSURE AT THETA LEVEL 1 AFTER TS;air_pressure -psl;fld_s16i222;;Pa;time_0 lat lon;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level -psl;fld_s16i222;;Pa;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level -rainmxrat;fld_s00i272;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;RAIN AFTER TIMESTEP;mass_fraction_of_rain_in_air -refl24;fld_s04i118 fld_s00i408;plevinterp(var[0], var[1], 24);dBZ;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_cldrad;radar_reflectivity_due_to_all_hydrometeor_species; -refl;fld_s04i118;level_to_height(var[0],levs=(0,66));dBZ;time model_theta_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;radar_reflectivity_due_to_all_hydrometeor_species; -reflmax;fld_s04i111;;dBZ;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;maximum_radar_reflectivity_in_the_grid_column_due_to_all_hydrometeors; -rho;fld_s15i102;level_to_height(var[0],levs=(0,66));m;time_0 model_rho_level_number lat lon_0;1hrPt;atmos;area: time: point;;;AUS2200;float32;1543360000;384;umnsa_mdl;H OF RHO MODEL LEVS FROM SEA LEVEL;height_above_reference_ellipsoid -rinum;fld_s03i468;level_to_height(var[0]);1;time model_theta_level_number_0 lat lon_0;1hrPt;atmos;area: time: point;;;AUS2200;float32;992160000;384;umnsa_mdl;GRADIENT RICHARDSON NUMBER; -rldscs;fld_s02i208;;W m-2;time_1 lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky -rlds;fld_s02i207;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air -rls;fld_s02i201;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux -rlut;fld_s02i205;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux -rsdscs;fld_s01i210;;W m-2;time_1 lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_spec;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -rsdsdiff;fld_s01i216;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DIFFUSE SURFACE SW FLUX : CORRECTED;surface_diffuse_downwelling_shortwave_flux_in_air -rsdsdir;fld_s01i215;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;DIRECT SURFACE SW FLUX : CORRECTED;surface_direct_along_beam_shortwave_flux_in_air -rsds;fld_s01i235;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air -rsdt;fld_s01i207;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;INCOMING SW RAD FLUX (TOA): ALL TSS;toa_incoming_shortwave_flux -rss;fld_s01i202;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;NET DOWN SURFACE SW FLUX: CORRECTED;surface_net_downward_shortwave_flux -rsut;fld_s01i205;;W m-2;time_0 lat lon;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;OUTGOING SW RAD FLUX (TOA):CORRECTED;toa_outgoing_shortwave_flux -siconca;fld_s00i031;;1;time lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;FRAC OF SEA ICE IN SEA AFTER TSTEP;sea_ice_area_fraction -sifllatstop;fld_s03i234 fld_s00i031;maskSeaIce(var[0],var[1]);W m-2;time lat lon;1hrPt;seaIce;area: time: point;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;; -snw;fld_s00i023;;kg m-2;time lat lon;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SNOW AMOUNT OVER LAND AFT TSTP KG/M2;surface_snow_amount -storm;fld_s21i101;;1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float64;44096000;2304;umnsa_spec;flag_for_location_of_storms; -ta24;fld_s16i004 fld_s00i408;plevinterp(var[0], var[1], 24);K;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_mdl;TEMPERATURE ON THETA LEVELS; air_temperature -ta;fld_s16i004;level_to_height(var[0],levs=(0,66));K;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;TEMPERATURE ON THETA LEVELS;air_temperature -tas;fld_s03i236;;K;time_0 lat lon;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TEMPERATURE AT 1.5M;air_temperature -tas;fld_s03i236;;K;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TEMPERATURE AT 1.5M;air_temperature -tasmax;fld_s03i236_max;;K;time_0 lat lon;1hr;atmos;area: time: maximum;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TEMPERATURE AT 1.5M;air_temperature -tasmin;fld_s03i236_min;;K;time_0 lat lon;1hr;atmos;area: time: minimum;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TEMPERATURE AT 1.5M;air_temperature -tauu;fld_s03i460_0;;Pa;time_0 lat lon_0;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress -tauu;fld_s03i460;;Pa;time lat lon_0;1hrPt;atmos;area: time: point;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress -tauv;fld_s03i461_0;;Pa;time_0 lat_0 lon;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22058400;384;umnsa_slv;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress -tauv_Pt;fld_s03i461;;Pa;time lat_0 lon;1hrPt;atmos;area: time: point;down;AUS2200_A1hr;AUS2200;float32;22058400;384;umnsa_slv;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress -tdps;fld_s03i250;;K;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;DEWPOINT AT 1.5M (K);dew_point_temperature -tdps;fld_s03i250;;K;time lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DEWPOINT AT 1.5M (K);dew_point_temperature -# these are variables that can be potentially calculated. Use with caution!;;;;;;;;;;;;;;; -theta24;fld_s00i004 fld_s00i408;plevinterp(var[0], var[1], 24);K;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;337;umnsa_mdl_;THETA AFTER TIMESTEP;air_potential_temperature -theta;fld_s00i004;level_to_height(var[0],levs=(0,66));K;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;THETA AFTER TIMESTEP;air_potential_temperature -# this should be first 10cm which is true only for AUS2200 -tke;fld_s03i473;level_to_height(var[0]);J m-2;time model_theta_level_number_0 lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;992160000;384;umnsa_mdl;TURBULENT KINETIC ENERGY; -ts;fld_s00i024;;K;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SURFACE TEMPERATURE AFTER TIMESTEP;surface_temperature -tsl;fld_s08i225;topsoil_tsl(var[0]);K;time depth lat lon;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DEEP SOIL TEMP. AFTER HYDROLOGY DEGK;soil_temperature -ua24;fld_s00i002 fld_s00i407;plevinterp(var[0], var[1], 24);m s-1;time model_rho_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_mdl;U COMPNT OF WIND AFTER TIMESTEP;eastward_wind -ua;fld_s00i002;level_to_height(var[0],levs=(0,66));m s-1;time model_rho_level_number lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;U COMPNT OF WIND AFTER TIMESTEP;eastward_wind -uas;fld_s03i209;;m s-1;time_0 lat lon_0;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;10 METRE WIND U-COMP;eastward_wind -uas;fld_s03i209;;m s-1;time lat lon_0;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;10 METRE WIND U-COMP;eastward_wind -va24;fld_s00i003 fld_s00i407;plevinterp(var[0], var[1], 24);m s-1;time model_rho_level_number lat_0 lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1544088000;384;umnsa_mdl;V COMPNT OF WIND AFTER TIMESTEP;northward_wind -va;fld_s00i003;level_to_height(var[0],levs=(0,66));m s-1;time model_rho_level_number lat_0 lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1544088000;384;umnsa_mdl;V COMPNT OF WIND AFTER TIMESTEP;northward_wind -vas;fld_s03i210;;m s-1;time_0 lat_0 lon;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22058400;384;umnsa_slv;10 METRE WIND V-COMP;northward_wind -vas;fld_s03i210;;m s-1;time lat_0 lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22058400;2304;umnsa_spec;10 METRE WIND V-COMP;northward_wind -wa24;fld_s00i150 fld_s00i408;plevinterp(var[0], var[1], 24);m s-1;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_mdl;W COMPNT OF WIND AFTER TIMESTEP;upward_air_velocity -wa;fld_s00i150;level_to_height(var[0],levs=(0,66));m s-1;time model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;W COMPNT OF WIND AFTER TIMESTEP;upward_air_velocity -wsgmax10m;fld_s03i463;;m s-1;time_0 lat lon;1hr;atmos;area: time: maximum;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;WIND GUST;wind_speed_of_gust -wsgmax10m;fld_s03i463;;m s-1;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;WIND GUST;wind_speed_of_gust -wsgmax10m_max;fld_s03i463_max;;m s-1;time_0 lat lon;10min;atmos;area: time: maximum;;AUS2200_A10min;AUS2200;;float32;22048000;2304;umnsa_spec;WIND GUST;wind_speed_of_gust -z0;fld_s00i026;;m;time lat lon;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;;float32;22048000;384;umnsa_slv;ROUGHNESS LENGTH AFTER TIMESTEP;surface_roughness_length -zfull;fld_s15i101;level_to_height(var[0],levs=(0,66));m;time_0 model_theta_level_number lat lon_0;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;H OF THETA MODEL LEVS FROM SEA LEVEL;height_above_reference_ellipsoid -zg16;fld_s16i202;;m;time pressure lat lon;3hrPt;atmos;area: time: point;;AUS2200_A3hr;AUS2200;float32;352768000;114;flreduced_;GEOPOTENTIAL HEIGHT ON P LEV/P GRID;geopotential_height -zmla;fld_s00i025;;m;time_0 lat lon;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;BOUNDARY LAYER DEPTH AFTER TIMESTEP;atmosphere_boundary_layer_thickness -zmla;fld_s00i025;;m;time lat lon;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;BOUNDARY LAYER DEPTH AFTER TIMESTEP;atmosphere_boundary_layer_thickness +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +amdry;fld_s30i403;;kg m-2;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TOTAL COLUMN DRY MASS RHO GRID;atmosphere_mass_per_unit_area +amwet;fld_s30i404;;kg m-2;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TOTAL COLUMN WET MASS RHO GRID;atmosphere_mass_per_unit_area +cl;fld_s00i265;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;AREA CLOUD FRACTION IN EACH LAYER;cloud_area_fraction_in_atmosphere_layer +clhigh;fld_s09i205;;1;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;HIGH CLOUD AMOUNT;high_type_cloud_area_fraction +cli;fld_s00i012;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;QCF AFTER TIMESTEP;mass_fraction_of_cloud_ice_in_air +clivi;fld_s30i406;;kg m-2;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TOTAL COLUMN QCF RHO GRID;atmosphere_cloud_ice_content +clivol;fld_s00i268;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;ice_cloud_volume_fraction_in_atmosphere_layer; +cllow;fld_s09i203;;1;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;LOW CLOUD AMOUNT;low_type_cloud_area_fraction +clmed;fld_s09i204;;1;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;MEDIUM CLOUD AMOUNT;medium_type_cloud_area_fraction +clmxro;fld_s09i217;;1;time_0 lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2022;umnsa_slv_;cloud_area_fraction_assuming_maximum_random_overlap;cloud_area_fraction +clmxro;fld_s09i217;;1;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;cloud_area_fraction_assuming_maximum_random_overlap;cloud_area_fraction +clw;fld_s00i254;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;QCL AFTER TIMESTEP;mass_fraction_of_cloud_liquid_water_in_air +clwvol;fld_s00i267;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;liquid_cloud_volume_fraction_in_atmosphere_layer; +cw;fld_s08i209;;kg m-2;time lat lon;longitude latitude time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;CANOPY WATER CONTENT;canopy_water_amount +eow;fld_s03i232;;kg m-2 s-1;time_0 lat lon;longitude latitude time;1hr;land;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;Evaporation flux from open sea; +estot;fld_s03i229;;kg m-2;time_0 lat lon;longitude latitude time;1hr;land;area: time: sum;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;EVAP FROM SOIL SURF -AMOUNT KG/M2/TS; +evspsbl;fld_s03i223_0;;kg m-2 s-1;time lat lon;longitude latitude time;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux +evspsblpot;fld_s03i335;;kg m-2 s-1;time pseudo_level lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;110240000;2304;umnsa_spec;POTENTIAL EVAPORATION ON TILES;water_potential_evaporation_flux +evspsbl_Pt;fld_s03i223;;kg m-2 s-1;time lat lon;longitude latitude time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux +flashrate;fld_s21i100;;s-1;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;lightning_flash_rate; +grplmxrat;fld_s00i273;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;GRAUPEL AFTER TIMESTEP;mass_fraction_of_graupel_in_air +hfls;fld_s03i234_0;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfls_Pt;fld_s03i234;;W m-2;time lat lon;longitude latitude time1;1hrPt;atmos;area: time: point;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfss;fld_s03i217_0;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hfss_Pt;fld_s03i217;;W m-2;time lat lon;longitude latitude time1;1hrPt;atmos;area: time: point;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hus24;fld_s00i010 fld_s00i408;plevinterp(var[0], var[1], 24);1;time model_theta_level_number lat lon;longitude latitude plev24 time1;1hrPt;atmos;area: time: mean;;AUS2200_A1hrPlev;AUS2200;float32;9400320;2081;umnsa_mdl;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity +hus;fld_s00i010;level_to_height(var[0],levs=(0,66));1;time model_theta_level_number lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity +huslev1;fld_s00i010;;1;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SPECIFIC HUMIDITY AFTER TIMESTEP;surface_specific_humidity +huss;fld_s03i237;;1;time_0 lat lon;longitude latitude time height1.5m;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time1 height1.5m;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +lmask;fld_s00i030;var[0].isel(time=0).astype(int);1;time_1 lat lon;longitude latitude;1hrPt;land;area: time: point;;AUS2200_fx;AUS2200;float64;44096000;384;umnsa_slv;LAND MASK (No halo) (LAND=TRUE);land_binary_mask +lwp;fld_s30i405;;kg m-2;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TOTAL COLUMN QCL RHO GRID;atmosphere_cloud_liquid_water_content +mrso;fld_s08i223;var[0].sum(dim='depth');kg m-2;time depth lat lon;longitude latitude time1;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;; +mrsol;fld_s08i223;;kg m-2;time depth lat lon;longitude latitude sdepth time1;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;88192000;384;umnsa_slv;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer +mrsos;fld_s08i223;calc_top_soil(var[0]);kg m-2;time depth lat lon;longitude latitude time1 sdepth1;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;; +nflash;fld_s21i104;;1;time_0 lat lon;longitude latitude time;10min;atmos;area: time: sum;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;Number_of_lightning_flashes; +orog;fld_s00i033;var[0].isel(time=0);m;time_1 lat lon;longitude latitude;1hrPt;land;area: time: point;;CMIP6_fx;AUS2200;float32;22048000;384;umnsa_slv;OROGRAPHY (/STRAT LOWER BC);surface_altitude +pfull;fld_s00i408;level_to_height(var[0],levs=(0,66));Pa;time model_theta_level_number lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;PRESSURE AT THETA LEVELS AFTER TS;air_pressure +phalf;fld_s00i407;level_to_height(var[0],levs=(0,66));Pa;time model_rho_level_number_0 lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1565408000;384;umnsa_mdl;PRESSURE AT RHO LEVELS AFTER TS;air_pressure +pralsns;fld_s04i202;;kg m-2;time_0 lat lon;longitude latitude time;10min;atmos;area: time: sum;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;LARGE SCALE SNOW AMOUNT KG/M2/TS;stratiform_snowfall_amount +pralsprof;fld_s04i201;;kg m-2;time_0 lat lon;longitude latitude time;10min;atmos;area: time: sum;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;LARGE SCALE RAIN AMOUNT KG/M2/TS;stratiform_rainfall_amount +prw;fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406;var[0]-sum_vars(var[1:]);kg m-2;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;; +ps;fld_s00i409;;Pa;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +pslev1;fld_s00i408;;Pa;time lat lon;longitude latitude alevel1 time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;PRESSURE AT THETA LEVEL 1 AFTER TS;air_pressure +psl;fld_s16i222;;Pa;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +psl;fld_s16i222;;Pa;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +rainmxrat;fld_s00i272;level_to_height(var[0],levs=(0,66));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;RAIN AFTER TIMESTEP;mass_fraction_of_rain_in_air +refl24;fld_s04i118 fld_s00i408;plevinterp(var[0], var[1], 24);dBZ;time model_theta_level_number lat lon;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_cldrad;radar_reflectivity_due_to_all_hydrometeor_species; +refl;fld_s04i118;level_to_height(var[0],levs=(0,66));dBZ;time model_theta_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_cldrad;radar_reflectivity_due_to_all_hydrometeor_species; +reflmax;fld_s04i111;;dBZ;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;maximum_radar_reflectivity_in_the_grid_column_due_to_all_hydrometeors; +rldscs;fld_s02i208;;W m-2;time_1 lat lon;longitude latitude time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky +rlds;fld_s02i207;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rls;fld_s02i201;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rlut;fld_s02i205;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rsdscs;fld_s01i210;;W m-2;time_1 lat lon;longitude latitude time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_spec;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky +rsdsdiff;fld_s01i216;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DIFFUSE SURFACE SW FLUX : CORRECTED;surface_diffuse_downwelling_shortwave_flux_in_air +rsdsdir;fld_s01i215;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;337;umnsa_slv_;DIRECT SURFACE SW FLUX : CORRECTED;surface_direct_along_beam_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsdt;fld_s01i207;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;INCOMING SW RAD FLUX (TOA): ALL TSS;toa_incoming_shortwave_flux +rss;fld_s01i202;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;NET DOWN SURFACE SW FLUX: CORRECTED;surface_net_downward_shortwave_flux +rsut;fld_s01i205;;W m-2;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;OUTGOING SW RAD FLUX (TOA):CORRECTED;toa_outgoing_shortwave_flux +siconca;fld_s00i031;;1;time lat lon;longitude latitude time1 typesi;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;FRAC OF SEA ICE IN SEA AFTER TSTEP;sea_ice_area_fraction +sifllatstop;fld_s03i234 fld_s00i031;maskSeaIce(var[0],var[1]);W m-2;time lat lon;longitude latitude time1;1hrPt;seaIce;area: time: point;up;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;; +snw;fld_s00i023;;kg m-2;time lat lon;longitude latitude time1;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;SNOW AMOUNT OVER LAND AFT TSTP KG/M2;surface_snow_amount +storm;fld_s21i101;;1;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float64;44096000;2304;umnsa_spec;flag_for_location_of_storms; +ta24;fld_s16i004 fld_s00i408;plevinterp(var[0], var[1], 24);K;time model_theta_level_number lat lon_0;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_mdl;TEMPERATURE ON THETA LEVELS; air_temperature +ta;fld_s16i004;level_to_height(var[0],levs=(0,66));K;time model_theta_level_number lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;TEMPERATURE ON THETA LEVELS;air_temperature +tas;fld_s03i236;;K;time_0 lat lon;longitude latitude time height1.5m;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TEMPERATURE AT 1.5M;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time1 height1.5m;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;TEMPERATURE AT 1.5M;air_temperature +tasmax;fld_s03i236_max;;K;time_0 lat lon;longitude latitude time height1.5m;1hr;atmos;area: time: maximum;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TEMPERATURE AT 1.5M;air_temperature +tasmin;fld_s03i236_min;;K;time_0 lat lon;longitude latitude time height1.5m;1hr;atmos;area: time: minimum;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;TEMPERATURE AT 1.5M;air_temperature +tauu;fld_s03i460_0;;Pa;time_0 lat lon_0;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress +tauu;fld_s03i460;;Pa;time lat lon_0;longitude latitude time;1hrPt;atmos;area: time: point;down;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress +tauv;fld_s03i461_0;;Pa;time_0 lat_0 lon;longitude latitude time;1hr;atmos;area: time: mean;down;AUS2200_A1hr;AUS2200;float32;22058400;384;umnsa_slv;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress +tauv_Pt;fld_s03i461;;Pa;time lat_0 lon;longitude latitude time1;1hrPt;atmos;area: time: point;down;AUS2200_A1hr;AUS2200;float32;22058400;384;umnsa_slv;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress +tdps;fld_s03i250;;K;time lat lon;longitude latitude height1.5m time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;DEWPOINT AT 1.5M (K);dew_point_temperature +tdps;fld_s03i250;;K;time lat lon;longitude latitude time;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DEWPOINT AT 1.5M (K);dew_point_temperature +theta24;fld_s00i004 fld_s00i408;plevinterp(var[0], var[1], 24);K;time model_theta_level_number lat lon_0;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;337;umnsa_mdl_;THETA AFTER TIMESTEP;air_potential_temperature +theta;fld_s00i004;level_to_height(var[0],levs=(0,66));K;time model_theta_level_number lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;THETA AFTER TIMESTEP;air_potential_temperature +tke;fld_s03i473;level_to_height(var[0]);J m-2;time model_theta_level_number_0 lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;992160000;384;umnsa_mdl;TURBULENT KINETIC ENERGY; +ts;fld_s00i024;;K;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;SURFACE TEMPERATURE AFTER TIMESTEP;surface_temperature +tsl;fld_s08i225;topsoil_tsl(var[0]);K;time depth lat lon;longitude latitude time1 sdepth1;1hrPt;land;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;DEEP SOIL TEMP. AFTER HYDROLOGY DEGK;soil_temperature +ua24;fld_s00i002 fld_s00i407;plevinterp(var[0], var[1], 24);m s-1;time model_rho_level_number lat lon;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_mdl;U COMPNT OF WIND AFTER TIMESTEP;eastward_wind +ua;fld_s00i002;level_to_height(var[0],levs=(0,66));m s-1;time model_rho_level_number lat lon;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;U COMPNT OF WIND AFTER TIMESTEP;eastward_wind +uas;fld_s03i209;;m s-1;time_0 lat lon_0;longitude latitude time height10m;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;10 METRE WIND U-COMP;eastward_wind +uas;fld_s03i209;;m s-1;time lat lon_0;longitude latitude time1 height10m;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;10 METRE WIND U-COMP;eastward_wind +va24;fld_s00i003 fld_s00i407;plevinterp(var[0], var[1], 24);m s-1;time model_rho_level_number lat_0 lon_0;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1544088000;384;umnsa_mdl;V COMPNT OF WIND AFTER TIMESTEP;northward_wind +va;fld_s00i003;level_to_height(var[0],levs=(0,66));m s-1;time model_rho_level_number lat_0 lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1544088000;384;umnsa_mdl;V COMPNT OF WIND AFTER TIMESTEP;northward_wind +vas;fld_s03i210;;m s-1;time_0 lat_0 lon;longitude latitude time height10m;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22058400;384;umnsa_slv;10 METRE WIND V-COMP;northward_wind +vas;fld_s03i210;;m s-1;time lat_0 lon;longitude latitude time1 height10m;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22058400;2304;umnsa_spec;10 METRE WIND V-COMP;northward_wind +wa24;fld_s00i150 fld_s00i408;plevinterp(var[0], var[1], 24);m s-1;time model_theta_level_number lat lon_0;longitude latitude plev24 time1;1hrPt;atmos;area: time: point;;AUS2200_A1hrPlev;AUS2200;float32;1543360000;384;umnsa_mdl;W COMPNT OF WIND AFTER TIMESTEP;upward_air_velocity +wa;fld_s00i150;level_to_height(var[0],levs=(0,66));m s-1;time model_theta_level_number lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;W COMPNT OF WIND AFTER TIMESTEP;upward_air_velocity +wsgmax10m;fld_s03i463;;m s-1;time_0 lat lon;longitude latitude time height10m;1hr;atmos;area: time: maximum;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;WIND GUST;wind_speed_of_gust +wsgmax10m;fld_s03i463;;m s-1;time lat lon;longitude latitude time1 height10m;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;WIND GUST;wind_speed_of_gust +wsgmax10m_max;fld_s03i463_max;;m s-1;time_0 lat lon;longitude latitude time height10m;10min;atmos;area: time: maximum;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;WIND GUST;wind_speed_of_gust +z0;fld_s00i026;;m;time lat lon;longitude latitude time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;ROUGHNESS LENGTH AFTER TIMESTEP;surface_roughness_length +zfull;fld_s15i101;level_to_height(var[0],levs=(0,66));m;time_0 model_theta_level_number lat lon_0;longitude latitude alevel time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;H OF THETA MODEL LEVS FROM SEA LEVEL;height_above_reference_ellipsoid +zhalf;fld_s15i102;level_to_height(var[0],levs=(0,66));m;time_0 model_rho_level_number lat lon_0;longitude latitude alevhalf time1;1hrPt;atmos;area: time: point;;AUS2200_A1hr;AUS2200;float32;1543360000;384;umnsa_mdl;H OF RHO MODEL LEVS FROM SEA LEVEL;height_above_reference_ellipsoid +zg16;fld_s16i202;;m;time pressure lat lon;longitude latitude plev16 time1;3hrPt;atmos;area: time: point;;AUS2200_A3hr;AUS2200;float32;352768000;114;flreduced_;GEOPOTENTIAL HEIGHT ON P LEV/P GRID;geopotential_height +zg24;fld_s15i101 fld_s00i408;height_gpheight(var[0], pmod=var[1], levnum=24);m;time_0 model_theta_level_number lat lon_0;longitude latitude plev24 time1;6hrPt;atmos;area: time: point;;AUS2200_A6hr;AUS2200;float32;1543360000;116;umnsa_mdl_;H OF THETA MODEL LEVS FROM SEA LEVEL;geopotential_height +zmla;fld_s00i025;;m;time_0 lat lon;longitude latitude time;1hr;atmos;area: time: mean;;AUS2200_A1hr;AUS2200;float32;22048000;384;umnsa_slv;BOUNDARY LAYER DEPTH AFTER TIMESTEP;atmosphere_boundary_layer_thickness +zmla;fld_s00i025;;m;time lat lon;longitude latitude time1;10minPt;atmos;area: time: point;;AUS2200_A10min;AUS2200;float32;22048000;2304;umnsa_spec;BOUNDARY LAYER DEPTH AFTER TIMESTEP;atmosphere_boundary_layer_thickness diff --git a/mappings/map_aerosol_AM3.csv b/mappings/map_aerosol_AM3.csv new file mode 100644 index 0000000..2ba6cf3 --- /dev/null +++ b/mappings/map_aerosol_AM3.csv @@ -0,0 +1,11 @@ +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +lwp;fld_s30i405;;kg m-2;time lat lon;longitude latitude time;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;110592;12;cw323a.pm;TOTAL COLUMN QCL RHO GRID;atmosphere_cloud_liquid_water_content +mmrbc;fld_s34i105 fld_s34i109 fld_s34i115 fld_s34i120;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;9400320;12;cw323a.pm;Elemental Carbon Mass Mixing Ratio;mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air +mmrdust;fld_s00i431 fld_s00i432 fld_s00i433 fld_s00i434 fld_s00i435 fld_s00i436;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;9400320;12;cw323a.pm;Dust Aerosol Mass Mixing Ratio;mass_fraction_of_dust_dry_aerosol_particles_in_air +mmroa;fld_s34i106 fld_s34i110 fld_s34i116 fld_s34i121 fld_s34i126;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;9400320;12;cw323a.pm;Total Organic Aerosol Mass Mixing Ratio;mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air +mmrso4;fld_s34i102 fld_s34i104 fld_s34i108 fld_s34i114;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;9400320;12;cw323a.pm;Aerosol Sulfate Mass Mixing Ratio;mass_fraction_of_sulfate_dry_aerosol_particles_in_air +mmrss;fld_s34i111 fld_s34i117;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;9400320;12;cw323a.pm;Sea-Salt Aerosol Mass Mixing Ratio;mass_fraction_of_sea_salt_dry_aerosol_particles_in_air +od440aer;fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303;optical_depth(var,2);1;time pseudo_level_0 lat lon;longitude latitude time;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;663552;12;cw323a.pm;Ambient Aerosol Optical Thickness at 440nm;atmosphere_optical_thickness_due_to_ambient_aerosol_particles +od550aer;fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303;optical_depth(var,3);1;time pseudo_level_0 lat lon;longitude latitude time lambda550nm;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;663552;12;cw323a.pm;Ambient Aerosol Optical Thickness at 550nm;atmosphere_optical_thickness_due_to_ambient_aerosol_particles +od550lt1aer;fld_s02i300 fld_s02i301 fld_s02i303;optical_depth(var,3);1;time pseudo_level_0 lat lon;longitude latitude time lambda550nm;mon;aerosol;area: time: mean;;CMIP6_AERmon;AM3;float32;663552;12;cw323a.pm;Ambient Fine Aerosol Optical Depth at 550nm;atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles +zg500;fld_s30i297;var[0].sel(pressure=500);m;time pressure lat lon;longitude latitude time p500;day;aerosol;area: time: mean;;CMIP6_AERday;AM3;float32;2101248;12;cw323a.pd;Geopotential Height at 500hPa;geopotential_height diff --git a/mappings/map_aerosol_CM2.csv b/mappings/map_aerosol_CM2.csv index 18d671a..954ff54 100644 --- a/mappings/map_aerosol_CM2.csv +++ b/mappings/map_aerosol_CM2.csv @@ -1,15 +1,15 @@ -#cmor_var;input_vars;calculation;units;dimensions;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name -abs550aer;fld_s02i240 fld_s02i241 fld_s02i242 fld_s02i243 fld_s02i585;optical_depth(var,3);1;time pseudo_level_0 lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Aerosol Absorption Optical Thickness at 550nm;atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles -dryss;fld_s38i218 fld_s38i219;calc_depositions(var);kg m-2 s-1;time model_theta_level_number lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Dry Deposition Rate of Sea-Salt Aerosol;minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_dry_deposition -lwp;fld_s30i405;;kg m-2;time lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN QCL RHO GRID;atmosphere_cloud_liquid_water_content -mmrbc;fld_s34i105 fld_s34i109 fld_s34i115 fld_s34i120;sum_vars(var);kg kg-1;time model_theta_level_number lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Elemental Carbon Mass Mixing Ratio;mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air -mmrdust;fld_s00i431 fld_s00i432 fld_s00i433 fld_s00i434 fld_s00i435 fld_s00i436;sum_vars(var);kg kg-1;time model_theta_level_number lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Dust Aerosol Mass Mixing Ratio;mass_fraction_of_dust_dry_aerosol_particles_in_air -mmroa;fld_s34i106 fld_s34i110 fld_s34i116 fld_s34i121 fld_s34i126;sum_vars(var);kg kg-1;time model_theta_level_number lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Total Organic Aerosol Mass Mixing Ratio;mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air -mmrso4;fld_s34i102 fld_s34i104 fld_s34i108 fld_s34i114;sum_vars(var);kg kg-1;time model_theta_level_number lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Aerosol Sulfate Mass Mixing Ratio;mass_fraction_of_sulfate_dry_aerosol_particles_in_air -mmrss;fld_s34i111 fld_s34i117;sum_vars(var);kg kg-1;time model_theta_level_number lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Sea-Salt Aerosol Mass Mixing Ratio;mass_fraction_of_sea_salt_dry_aerosol_particles_in_air -od440aer;fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303;optical_depth(var,2);1;time pseudo_level_0 lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Aerosol Optical Thickness at 440nm;atmosphere_optical_thickness_due_to_ambient_aerosol_particles -od550aer;fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303;optical_depth(var,3);1;time pseudo_level_0 lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Aerosol Optical Thickness at 550nm;atmosphere_optical_thickness_due_to_ambient_aerosol_particles -od550lt1aer;fld_s02i300 fld_s02i301 fld_s02i303;optical_depth(var,3);1;time pseudo_level_0 lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Fine Aerosol Optical Depth at 550nm;atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles -wetss;fld_s38i241 fld_s38i242 fld_s38i265 fld_s38i266;calc_depositions(var);kg m-2 s-1;time model_theta_level_number lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Wet Deposition Rate of Sea-Salt Aerosol;minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition -zg500;fld_s30i297;var[0].sel(pressure=500);m;time pressure lat lon;day;aerosol;area: time: mean;;CMIP6_AERday;CM2;float32;2101248;12;cw323a.pd;Geopotential Height at 500hPa;geopotential_height -ztp;fld_s30i453;;m;time lat lon;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;110592;12;cw323a.pm;Height at Tropopause Level;tropopause_altitude +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +abs550aer;fld_s02i240 fld_s02i241 fld_s02i242 fld_s02i243 fld_s02i585;optical_depth(var,3);1;time pseudo_level_0 lat lon;longitude latitude time lambda550nm;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Aerosol Absorption Optical Thickness at 550nm;atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles +dryss;fld_s38i218 fld_s38i219;calc_depositions(var);kg m-2 s-1;time model_theta_level_number lat lon;longitude latitude time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Dry Deposition Rate of Sea-Salt Aerosol;minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_dry_deposition +lwp;fld_s30i405;;kg m-2;time lat lon;longitude latitude time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN QCL RHO GRID;atmosphere_cloud_liquid_water_content +mmrbc;fld_s34i105 fld_s34i109 fld_s34i115 fld_s34i120;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Elemental Carbon Mass Mixing Ratio;mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air +mmrdust;fld_s00i431 fld_s00i432 fld_s00i433 fld_s00i434 fld_s00i435 fld_s00i436;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Dust Aerosol Mass Mixing Ratio;mass_fraction_of_dust_dry_aerosol_particles_in_air +mmroa;fld_s34i106 fld_s34i110 fld_s34i116 fld_s34i121 fld_s34i126;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Total Organic Aerosol Mass Mixing Ratio;mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air +mmrso4;fld_s34i102 fld_s34i104 fld_s34i108 fld_s34i114;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Aerosol Sulfate Mass Mixing Ratio;mass_fraction_of_sulfate_dry_aerosol_particles_in_air +mmrss;fld_s34i111 fld_s34i117;level_to_height(sum_vars(var));kg kg-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Sea-Salt Aerosol Mass Mixing Ratio;mass_fraction_of_sea_salt_dry_aerosol_particles_in_air +od440aer;fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303;optical_depth(var,2);1;time pseudo_level_0 lat lon;longitude latitude time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Aerosol Optical Thickness at 440nm;atmosphere_optical_thickness_due_to_ambient_aerosol_particles +od550aer;fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303;optical_depth(var,3);1;time pseudo_level_0 lat lon;longitude latitude time lambda550nm;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Aerosol Optical Thickness at 550nm;atmosphere_optical_thickness_due_to_ambient_aerosol_particles +od550lt1aer;fld_s02i300 fld_s02i301 fld_s02i303;optical_depth(var,3);1;time pseudo_level_0 lat lon;longitude latitude time lambda550nm;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;663552;12;cw323a.pm;Ambient Fine Aerosol Optical Depth at 550nm;atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles +wetss;fld_s38i241 fld_s38i242 fld_s38i265 fld_s38i266;calc_depositions(var);kg m-2 s-1;time model_theta_level_number lat lon;longitude latitude time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;9400320;12;cw323a.pm;Wet Deposition Rate of Sea-Salt Aerosol;minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition +zg500;fld_s30i297;var[0].sel(pressure=500);m;time pressure lat lon;longitude latitude time p500;day;aerosol;area: time: mean;;CMIP6_AERday;CM2;float32;2101248;12;cw323a.pd;Geopotential Height at 500hPa;geopotential_height +ztp;fld_s30i453;;m;time lat lon;longitude latitude time;mon;aerosol;area: time: mean;;CMIP6_AERmon;CM2;float32;110592;12;cw323a.pm;Height at Tropopause Level;tropopause_altitude diff --git a/mappings/map_atmos_AM3.csv b/mappings/map_atmos_AM3.csv new file mode 100644 index 0000000..0e941ca --- /dev/null +++ b/mappings/map_atmos_AM3.csv @@ -0,0 +1,73 @@ +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +amdry;fld_s30i403;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;TOTAL COLUMN DRY MASS RHO GRID; +amwet;fld_s30i404;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;TOTAL COLUMN WET MASS RHO GRID;atmosphere_mass_per_unit_area +ci;fld_s05i269;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;deep convection indicator; +cl;fld_s02i261;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;9400320;480;di787a.pa;TOTAL CLOUD AMOUNT ON LEVELS;cloud_area_fraction_in_atmosphere_layer +clivi;fld_s30i406;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;TOTAL COLUMN QCF RHO GRID;atmosphere_cloud_ice_content +clt;fld_s02i204;;%;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;AM3;float32;110592;14400;di787a.pd;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +clt;fld_s02i204;;%;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +evspsbl;fld_s03i223;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux +hfls;fld_s03i234;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;AM3;float32;110592;14400;di787a.pd;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfls;fld_s03i234;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfss;fld_s03i217;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;AM3;float32;110592;14400;di787a.pd;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hfss;fld_s03i217;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hur17;fld_s30i296;;%;time pressure lat lon;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1880064;480;di787a.pa;RELATIVE HUMIDITY ON P LEV/T GRID;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;AM3;float32;110592;14400;di787a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hur17uvgrid;fld_s30i206;;%;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;RELATIVE HUMIDITY ON P LEV/UV GRID;relative_humidity +hus;fld_s00i010;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_CFmon;AM3;float32;9400320;480;di787a.pa;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity +hus17;fld_s30i295;;1;time pressure lat lon;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1880064;480;di787a.pa;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;AM3;float32;110592;14400;di787a.pd;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +hus17uvgrid;fld_s30i205;;1;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;SPECIFIC HUMIDITY ON P LEV/UV GRID;specific_humidity +intuaw;fld_s30i428;;kg m-1 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Emon;AM3;float32;110592;480;di787a.pm;dry mass col int u*q per unit area; +intvaw;fld_s30i429;;kg m-1 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Emon;AM3;float32;110592;480;di787a.pm;dry mass col int v*q per unit area; +pfull;fld_s00i408;level_to_height(var[0]);Pa;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;9400320;480;di787a.pa;PRESSURE AT THETA LEVELS AFTER TS;air_pressure +phalf;fld_s00i407;level_to_height(var[0]);Pa;time model_rho_level_number lat lon;longitude latitude alevhalf time2;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;9400320;480;di787a.pa;PRESSURE AT RHO LEVELS AFTER TS;air_pressure +pr;fld_s05i216;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;AM3;float32;110592;14400;di787a.pd;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +pr;fld_s05i216;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +prlsns;fld_s04i204;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;LARGE SCALE SNOWFALL RATE KG/M2/S;stratiform_snowfall_flux +prlsprof;fld_s04i203;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;LARGE SCALE RAINFALL RATE KG/M2/S;stratiform_rainfall_flux +prra;fld_s05i214;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;TOTAL RAINFALL RATE: LS+CONV KG/M2/S;rainfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;AM3;float32;110592;14400;di787a.pd;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prw;fld_s30i461;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;TOTAL COLUMN Q (WATER VAPOUR PATH); +ps;fld_s00i409;;Pa;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +rlds;fld_s02i207;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;AM3;float32;110592;14400;di787a.pd;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rlds;fld_s02i207;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rldscs;fld_s02i208;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky +rls;fld_s02i201;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;AM3;float32;110592;14400;di787a.pd;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rls;fld_s02i201;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Emon;AM3;float32;110592;480;di787a.pm;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rlut;fld_s03i332;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;AM3;float32;110592;14400;di787a.pd;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rlut;fld_s02i205;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rlut;fld_s03i332;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rlutcs;fld_s02i206;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;CLEAR-SKY (II) UPWARD LW FLUX (TOA);toa_outgoing_longwave_flux_assuming_clear_sky +rsds;fld_s01i235;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;AM3;float32;110592;14400;di787a.pd;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsdscs;fld_s01i210;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky +rsdt;fld_s01i207;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;INCOMING SW RAD FLUX (TOA): ALL TSS;toa_incoming_shortwave_flux +rss;fld_s01i201;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;AM3;float32;110592;14400;di787a.pd;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rss;fld_s01i201;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Emon;AM3;float32;110592;480;di787a.pm;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rsuscs;fld_s01i211;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;CLEAR-SKY (II) UP SURFACE SW FLUX;surface_upwelling_shortwave_flux_in_air_assuming_clear_sky +rsut;fld_s01i208;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;OUTGOING SW RAD FLUX (TOA);toa_outgoing_shortwave_flux +rsutcs;fld_s01i209;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;CLEAR-SKY (II) UPWARD SW FLUX (TOA);toa_outgoing_shortwave_flux_assuming_clear_sky +sci;fld_s05i270;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;shallow convection indicator; +ta17;fld_s30i294;;K;time pressure lat lon;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1880064;480;di787a.pa;TEMPERATURE ON P LEV/T GRID;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;AM3;float32;110592;14400;di787a.pd;TEMPERATURE AT 1.5M;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;TEMPERATURE AT 1.5M;air_temperature +tasmax;fld_s03i236_max;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: maximum;;CM2_day;AM3;float32;110592;14400;di787a.pd;TEMPERATURE AT 1.5M;air_temperature +tasmin;fld_s03i236_min;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: minimum;;CM2_day;AM3;float32;110592;14400;di787a.pd;TEMPERATURE AT 1.5M;air_temperature +tauu;fld_s03i460;;Pa;time lat lon_u;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress +tauv;fld_s03i461;;Pa;time lat_v lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;AM3;float32;111360;480;di787a.pm;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress +ta17uvgrid;fld_s30i204;;K;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;TEMPERATURE ON P LEV/UV GRID;air_temperature +theta;fld_s00i004;level_to_height(var[0]);K;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CM2_mon;AM3;float32;9400320;480;di787a.pa;THETA AFTER TIMESTEP;air_potential_temperature +ts;fld_s00i024;;K;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;AM3;float32;110592;480;di787a.pm;SURFACE TEMPERATURE AFTER TIMESTEP;surface_temperature +ua17;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind +ua17uvgrid;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind +va17;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind +va17uvgrid;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind +wa17uvgrid;fld_s30i203;;m s-1;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;W COMPNT OF WIND ON P LEV/UV GRID;upward_air_velocity +wap17;fld_s30i298;;Pa s-1;time pressure lat lon;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1880064;480;di787a.pa;OMEGA ON P LEV/T GRID;lagrangian_tendency_of_air_pressure +wap17uvgrid;fld_s30i208;;Pa s-1;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;OMEGA ON P LEV/UV GRID;lagrangian_tendency_of_air_pressure +zg17;fld_s30i297;;m;time pressure lat lon;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1880064;480;di787a.pa;GEOPOTENTIAL HEIGHT ON P LEV/T GRID;geopotential_height +zg17uvgrid;fld_s30i207;;m;time pressure lat_v lon_u;longitude latitude plev17 time;mon;atmos;area: time: mean;;AM3_Amon;AM3;float32;1893120;480;di787a.pa;GEOPOTENTIAL HEIGHT ON P LEV/UV GRID;geopotential_height diff --git a/mappings/map_atmos_CM2.csv b/mappings/map_atmos_CM2.csv index b2cc1c3..ac46956 100644 --- a/mappings/map_atmos_CM2.csv +++ b/mappings/map_atmos_CM2.csv @@ -1,153 +1,153 @@ -#cmor_var;input_vars;calculation;units;dimensions;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name -amdry;fld_s30i403;;kg m-2;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN DRY MASS RHO GRID;atmosphere_mass_per_unit_area -amwet;fld_s30i404;;kg m-2;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN WET MASS RHO GRID;atmosphere_mass_per_unit_area -ci;fld_s05i269;;1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;deep convection indicator; -cl;fld_s02i261;;1;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;TOTAL CLOUD AMOUNT ON LEVELS;cloud_area_fraction_in_atmosphere_layer -cli;fld_s02i309;;1;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;GRIDBOX LSC Qcf IN RADIATION KG/KG;mass_fraction_of_stratiform_cloud_ice_in_air -clivi;fld_s30i406;;kg m-2;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN QCF RHO GRID;atmosphere_cloud_ice_content -clt;fld_s02i204;;1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction -clt;fld_s02i204;;1;time_0 lat lon;3hr;atmos;area: time: mean;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction -clt;fld_s02i204;;1;time lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction -clw;fld_s02i308;;1;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;GRIDBOX LSC Qcl IN RADIATION KG/KG;mass_fraction_of_stratiform_cloud_liquid_water_in_air -evspsbl;fld_s03i223;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux -hfls;fld_s03i234;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux -hfls;fld_s03i234;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux -hfls;fld_s03i234;;W m-2;time lat lon;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux -hfss;fld_s03i217;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux -hfss;fld_s03i217;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux -hfss;fld_s03i217;;W m-2;time lat lon;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux -hur;fld_s30i296;;%;time pressure lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;RELATIVE HUMIDITY ON P LEV/T GRID;relative_humidity -hur;fld_s30i296;;%;time pressure lat lon;day;atmos;area: time: mean;;CM2_day;CM2;float32;884736;74772;cm000a.pd;RELATIVE HUMIDITY ON P LEV/T GRID;relative_humidity -hurs;fld_s03i245;;%;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;RELATIVE HUMIDITY AT 1.5M;relative_humidity -hurs;fld_s03i245;;%;time lat lon;3hrPt;atmos;area: time: point;;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;RELATIVE HUMIDITY AT 1.5M;relative_humidity -hurs;fld_s03i245;;%;time lat lon;day;atmos;area: time: mean;;CM2_day;CM2;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity -hursmax;fld_s03i245_max;;%;time lat lon;day;atmos;area: time: maximum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity -hursmin;fld_s03i245_min;;%;time lat lon;day;atmos;area: time: minimum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity -huruvgrid;fld_s30i206;;%;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;RELATIVE HUMIDITY ON P LEV/UV GRID;relative_humidity -hus;fld_s00i010;level_to_height(var[0]);1;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CMIP6_CFmon;CM2;float32;9400320;12;cw323a.pm;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity -hus;fld_s00i010;;1;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CMIP6_CFmon;CM2;float32;9400320;2081;cm000a.pm;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity -hus;fld_s30i295;;1;time pressure lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity -hus;fld_s30i295;;1;time pressure lat lon;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity -huss;fld_s03i237;;1;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;SPECIFIC HUMIDITY AT 1.5M;specific_humidity -huss;fld_s03i237;;1;time lat lon;3hrPt;atmos;area: time: point;;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;SPECIFIC HUMIDITY AT 1.5M;specific_humidity -huss;fld_s03i237;;1;time lat lon;day;atmos;area: time: mean;;CM2_day;CM2;float32;110592;74772;cm000a.pd;SPECIFIC HUMIDITY AT 1.5M;specific_humidity -husuvgrid;fld_s30i205;;1;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;SPECIFIC HUMIDITY ON P LEV/UV GRID;specific_humidity -intuaw;fld_s30i428;;kg m-1 s-1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;dry mass col int u*q per unit area;eastward_atmosphere_water_transport_across_unit_distance -intvaw;fld_s30i429;;kg m-1 s-1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;dry mass col int v*q per unit area;northward_atmosphere_water_transport_across_unit_distance -mc;fld_s05i250 fld_s05i251;((var[0]-var[1])/9.80665);kg m-2 s-1;time model_theta_level_number lat lon;mon;atmos;;up;CM2_mon;CM2;float32;9400320;2081;cm000a.pm;Convective Mass Flux;atmosphere_net_upward_convective_mass_flux -pfull;fld_s00i408;;Pa;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;9400320;12;cw323a.pm;PRESSURE AT THETA LEVELS AFTER TS;air_pressure -phalf;fld_s00i407;;Pa;time model_rho_level_number lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;PRESSURE AT RHO LEVELS AFTER TS;air_pressure -prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Convective precipitation at surface; includes both liquid and solid phases;convective_precipitation_flux -prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time_0 lat lon;3hr;atmos;;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;Convective precipitation at surface; includes both liquid and solid phases;convective_precipitation_flux -prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time lat lon;day;atmos;;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;Convective precipitation at surface; includes both liquid and solid phases;convective_precipitation_flux -pr;fld_s05i216;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux -pr;fld_s05i216;;kg m-2 s-1;time_0 lat lon;3hr;atmos;area: time: mean;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux -pr;fld_s05i216;;kg m-2 s-1;time lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux -prlsns;fld_s04i204;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;LARGE SCALE SNOWFALL RATE KG/M2/S;stratiform_snowfall_flux -prlsprof;fld_s04i203;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;LARGE SCALE RAINFALL RATE KG/M2/S;stratiform_rainfall_flux -prra;fld_s05i214;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL RAINFALL RATE: LS+CONV KG/M2/S;rainfall_flux -prra;fld_s05i214;;kg m-2 s-1;time_0 lat lon;3hr;atmos;area: time: mean;;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL RAINFALL RATE: LS+CONV KG/M2/S;rainfall_flux -prrc;fld_s05i205;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux -prrc;fld_s05i205;;kg m-2 s-1;time_0 lat lon;3hr;atmos;area: time: mean;;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux -prrc;fld_s05i205;;kg m-2 s-1;time lat lon;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;110592;74772;cm000a.pd;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux -prsnc;fld_s05i206;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux -prsnc;fld_s05i206;;kg m-2 s-1;time_0 lat lon;3hr;atmos;area: time: mean;;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux -prsnc;fld_s05i206;;kg m-2 s-1;time lat lon;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;110592;74772;cm000a.pd;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux -prsn;fld_s05i215;;kg m-2 s-1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux -prsn;fld_s05i215;;kg m-2 s-1;time_0 lat lon;3hr;atmos;area: time: mean;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux -prsn;fld_s05i215;;kg m-2 s-1;time lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux -prw;fld_s30i461;;kg m-2;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN Q (WATER VAPOUR PATH); -prw;fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406;var[0]-(var[1]+var[2]+var[3]);kg m-2;time lat lon;mon;atmos;area: time: point;;CMIP6_Amon;CM2;float32;110592;2081;cm000a.pm;; -ps;fld_s00i409;;Pa;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure -ps;fld_s00i409;;Pa;time lat lon;3hrPt;atmos;area: time: point;;CMIP6_E3hrPt;CM2;float32;110592;578880;cm000a.p8;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure -psl;fld_s16i222;;Pa;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level -psl;fld_s16i222;;Pa;time lat lon;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;110592;270144;cm000a.p7;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level -psl;fld_s16i222;;Pa;time lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level -rldscs;fld_s02i208;;W m-2;time lat lon;day;atmos;area: time: mean;down;CMIP6_CFday;CM2;float32;110592;74772;cm000a.pd;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky -rldscs;fld_s02i208;;W m-2;time lat lon;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;2081;cm000a.pm;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky -rlds;fld_s02i207;;W m-2;time lat lon;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air -rlds;fld_s02i207;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air -rlds;fld_s02i207;;W m-2;time lat lon;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air -rls;fld_s02i201;;W m-2;time lat lon;mon;atmos;area: time: mean;down;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux -rls;fld_s02i201;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;down;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux -rls;fld_s02i201;;W m-2;time lat lon;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux -rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air -rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time lat lon;day;atmos;;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air -rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time_0 lat lon;3hr;atmos;;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air -rlutcs;fld_s02i206;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UPWARD LW FLUX (TOA);toa_outgoing_longwave_flux_assuming_clear_sky -rlutcs;fld_s02i206;;W m-2;time lat lon;day;atmos;area: time: mean;up;CMIP6_CFday;CM2;float32;110592;74772;cm000a.pd;CLEAR-SKY (II) UPWARD LW FLUX (TOA);toa_outgoing_longwave_flux_assuming_clear_sky -rlut;fld_s02i205;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux -rlut;fld_s02i205;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;up;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux -rlut;fld_s02i205;;W m-2;time lat lon;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux -rlut;fld_s03i332;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux -rlut;fld_s03i332;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;up;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux -rlut;fld_s03i332;;W m-2;time lat lon;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux -rsdscs;fld_s01i210;;W m-2;time lat lon;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -rsdscs;fld_s01i210;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky -rsdsdiff;fld_s01i216;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;DIFFUSE SURFACE SW FLUX : CORRECTED;surface_diffuse_downwelling_shortwave_flux_in_air -rsds;fld_s01i235;;W m-2;time lat lon;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air -rsds;fld_s01i235;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air -rsds;fld_s01i235;;W m-2;time lat lon;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air -rsdt;fld_s01i207;;W m-2;time lat lon;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;INCOMING SW RAD FLUX (TOA): ALL TSS;toa_incoming_shortwave_flux -rss;fld_s01i201;;W m-2;time lat lon;mon;atmos;area: time: mean;down;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux -rss;fld_s01i201;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;down;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux -rss;fld_s01i201;;W m-2;time lat lon;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux -rsuscs;fld_s01i211;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UP SURFACE SW FLUX;surface_upwelling_shortwave_flux_in_air_assuming_clear_sky -rsuscs;fld_s01i211;;W m-2;time_0 lat lon;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;CLEAR-SKY (II) UP SURFACE SW FLUX;surface_upwelling_shortwave_flux_in_air_assuming_clear_sky -rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air -rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time_0 lat lon;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air -rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time lat lon;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air -rsutcs;fld_s01i209;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UPWARD SW FLUX (TOA);toa_outgoing_shortwave_flux_assuming_clear_sky -rsut;fld_s01i208;;W m-2;time lat lon;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;OUTGOING SW RAD FLUX (TOA);toa_outgoing_shortwave_flux -rtmt;fld_s01i207 fld_s01i208 fld_s03i332;var[0]-var[1]-var[2];W m-2;time lat lon;mon;atmos;area: time:mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Net Downward Radiative Flux at Top of Model;net_downward_radiative_flux_at_top_of_atmosphere_model -rv850;fld_s30i455;;s-1;time lat_v lon_u;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;111360;289440;cm000a.p7;Relative Vorticity at 850hPa;atmosphere_relative_vorticity -sci;fld_s05i270;;1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;shallow convection indicator; -sfcWind;fld_s03i230;;m s-1;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;10 METRE WIND SPEED ON C GRID;wind_speed -sfcWind;fld_s03i230;;m s-1;time lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;10 METRE WIND SPEED ON C GRID;wind_speed -sfcWindmax;fld_s03i230_max;;m s-1;time lat lon;day;atmos;area: time: maximum;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;10 METRE WIND SPEED ON C GRID;wind_speed -sftlf;fld_s03i395;;1;time lat lon;mon;atmos;area: time: mean;;CMIP6_fx;CM2;float32;110592;12;cw323a.pm;FRACTION OF LAND;land_area_fraction -ta;fld_s30i294;;K;time pressure lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;TEMPERATURE ON P LEV/T GRID;air_temperature -ta;fld_s30i204;;K;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2115840;2081;cm000a.pm;TEMPERATURE ON P LEV/UV GRID;air_temperature -ta;fld_s30i294;;K;time pressure lat lon;6hrPt;atmos;area: time: point;;CM2_6hr;CM2;float32;331776;289440;cm000a.p7;TEMPERATURE ON 19 P LEV/T GRID;air_temperature -ta;fld_s30i294;;K;time pressure lat lon;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;331776;289440;cm000a.p7;TEMPERATURE ON 3 P LEV/T GRID;air_temperature -ta;fld_s30i294;;K;time pressure lat lon;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;TEMPERATURE ON 19 P LEV/T GRID;air_temperature -ta;fld_s30i294;;K;time pressure lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;884736;74772;cm000a.pd;TEMPERATURE ON 8 P LEV/T GRID;air_temperature -tas;fld_s03i236;;K;time lat lon;mon;atmos;area: time: mean;;CM2_Amon;CM2;float32;110592;12;cw323a.pm;TEMPERATURE AT 1.5M;air_temperature -tas;fld_s03i236;;K;time lat lon;3hrPt;atmos;area: time: point;;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;TEMPERATURE AT 1.5M;air_temperature -tas;fld_s03i236;;K;time lat lon;day;atmos;area: time: mean;;CM2_day;CM2;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature -tasmax;fld_s03i236_max;;K;time lat lon;day;atmos;area: time: maximum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature -tasmin;fld_s03i236_min;;K;time lat lon;day;atmos;area: time: minimum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature -tauu;fld_s03i460;;Pa;time lat lon_u;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress -tauv;fld_s03i461;;Pa;time lat_v lon;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;111360;12;cw323a.pm;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress -tauvgrid;fld_s30i204;;K;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;TEMPERATURE ON P LEV/UV GRID;air_temperature -theta;fld_s00i004;;K;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;9400320;12;cw323a.pm;THETA AFTER TIMESTEP;air_potential_temperature -ts;fld_s00i024;;K;time lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE TEMPERATURE AFTER TIMESTEP;surface_temperature -ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;6hrPt;atmos;area: time: point;;CM2_6hr;CM2;float32;334080;289440;cm000a.p7;U COMPNT OF WIND ON 19 P LEV/UV GRID;eastward_wind -ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;334080;289440;cm000a.p7;U COMPNT OF WIND ON 3 P LEV/UV GRID;eastward_wind -ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;890880;74772;cm000a.pd;U COMPNT OF WIND ON 19 P LEV/UV GRID;eastward_wind -ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;890880;74772;cm000a.pd;U COMPNT OF WIND ON 8 P LEV/UV GRID;eastward_wind -ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2115840;2081;cm000a.pm;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind -uas;fld_s03i209;;m s-1;time lat lon_u;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;10 METRE WIND U-COMP;eastward_wind -uas;fld_s03i209;;m s-1;time lat lon_u;3hrPt;atmos;area: time: point;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;10 METRE WIND U-COMP;eastward_wind -uas;fld_s03i209;;m s-1;time lat lon_u;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;10 METRE WIND U-COMP;eastward_wind -uauvgrid;fld_s30i201;;m s-1;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind -va;fld_s30i202;;m s-1;time pressure lat_v lon_u;6hrPt;atmos;area: time: point;;CM2_6hr;CM2;float32;334080;289440;cm000a.p7;V COMPNT OF WIND ON 19 P LEV/UV GRID;northward_wind -va;fld_s30i202;;m s-1;time pressure lat_v lon_u;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;334080;289440;cm000a.p7;V COMPNT OF WIND ON 3 P LEV/UV GRID;northward_wind -va;fld_s30i202;;m s-1;time pressure lat_v lon_u;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;890880;74772;cm000a.pd;V COMPNT OF WIND ON 19 P LEV/UV GRID;northward_wind -va;fld_s30i202;;m s-1;time pressure lat_v lon_u;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;890880;74772;cm000a.pd;V COMPNT OF WIND ON 8 P LEV/UV GRID;northward_wind -va;fld_s30i202;;m s-1;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2115840;2081;cm000a.pm;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind -vas;fld_s03i210;;m s-1;time lat_v lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;111360;12;cw323a.pm;10 METRE WIND V-COMP;northward_wind -vas;fld_s03i210;;m s-1;time lat_v lon;3hrPt;atmos;area: time: point;;CMIP6_3hr;CM2;float32;111360;578880;cm000a.p8;10 METRE WIND V-COMP;northward_wind -vas;fld_s03i210;;m s-1;time lat_v lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;111360;74772;cm000a.pd;10 METRE WIND V-COMP;northward_wind -vauvgrid;fld_s30i202;;m s-1;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind -wa19uvgrid;fld_s30i203;;m s-1;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;W COMPNT OF WIND ON P LEV/UV GRID;upward_air_velocity -wap;fld_s30i298;;Pa s-1;time pressure lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;OMEGA ON P LEV/T GRID;lagrangian_tendency_of_air_pressure -wap;fld_s30i298;;Pa s-1;time pressure lat lon;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;OMEGA ON 19 P LEV/T GRID;lagrangian_tendency_of_air_pressure -wap;fld_s30i298;;Pa s-1;time pressure lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;884736;74772;cm000a.pd;OMEGA ON 8 P LEV/T GRID;lagrangian_tendency_of_air_pressure -wapuvgrid;fld_s30i208;;Pa s-1;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;OMEGA ON P LEV/UV GRID;lagrangian_tendency_of_air_pressure -zfull;fld_s15i101;;m;time model_theta_level_number lat lon;mon;atmos;area: time: mean;;CMIP6_fx;CM2;float32;9400320;12;cw323a.pm;H OF THETA MODEL LEVS FROM SEA LEVEL;height_above_reference_ellipsoid -zg;fld_s30i297;;m;time pressure lat lon;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;GEOPOTENTIAL HEIGHT ON P LEV/T GRID;geopotential_height -zg;fld_s30i297;;m;time pressure lat lon;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;GEOPOTENTIAL HEIGHT ON 19 P LEV/T GRID;geopotential_height -zg;fld_s30i297;;m;time pressure lat lon;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;884736;74772;cm000a.pd;GEOPOTENTIAL HEIGHT ON 8 P LEV/T GRID;geopotential_height -zg500;fld_s30i297;;m;time pressure lat lon;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;2101248;2081;cm000a.pm;Geopotential Height at 500hPa;geopotential_height -zguvgrid;fld_s30i207;;m;time pressure lat_v lon_u;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;GEOPOTENTIAL HEIGHT ON P LEV/UV GRID;geopotential_height +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +amdry;fld_s30i403;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN DRY MASS RHO GRID;atmosphere_mass_per_unit_area +amwet;fld_s30i404;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN WET MASS RHO GRID;atmosphere_mass_per_unit_area +ci;fld_s05i269;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;deep convection indicator; +cl;fld_s02i261;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;TOTAL CLOUD AMOUNT ON LEVELS;cloud_area_fraction_in_atmosphere_layer +cli;fld_s02i309;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;GRIDBOX LSC Qcf IN RADIATION KG/KG;mass_fraction_of_stratiform_cloud_ice_in_air +clivi;fld_s30i406;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN QCF RHO GRID;atmosphere_cloud_ice_content +clt;fld_s02i204;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +clt;fld_s02i204;;1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +clt;fld_s02i204;;1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +clw;fld_s02i308;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;GRIDBOX LSC Qcl IN RADIATION KG/KG;mass_fraction_of_stratiform_cloud_liquid_water_in_air +evspsbl;fld_s03i223;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux +hfls;fld_s03i234;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfls;fld_s03i234;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfls;fld_s03i234;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfss;fld_s03i217;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hfss;fld_s03i217;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hfss;fld_s03i217;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hur;fld_s30i296;;%;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;RELATIVE HUMIDITY ON P LEV/T GRID;relative_humidity +hur19;fld_s30i296;;%;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CM2_day;CM2;float32;884736;74772;cm000a.pd;RELATIVE HUMIDITY ON P LEV/T GRID;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time1 height1.5m;3hrPt;atmos;area: time: point;;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;CM2;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hursmax;fld_s03i245_max;;%;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: maximum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hursmin;fld_s03i245_min;;%;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: minimum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hur19uvgrid;fld_s30i206;;%;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;RELATIVE HUMIDITY ON P LEV/UV GRID;relative_humidity +hus;fld_s00i010;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_CFmon;CM2;float32;9400320;12;cw323a.pm;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity +hus;fld_s30i295;;1;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity +hus;fld_s30i295;;1;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity +hus;fld_s30i295;;1;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;884736;74772;cm000a.pd;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;3hrPt;atmos;area: time: point;;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;CM2;float32;110592;74772;cm000a.pd;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +hus19uvgrid;fld_s30i205;;1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;SPECIFIC HUMIDITY ON P LEV/UV GRID;specific_humidity +intuaw;fld_s30i428;;kg m-1 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;dry mass col int u*q per unit area;eastward_atmosphere_water_transport_across_unit_distance +intvaw;fld_s30i429;;kg m-1 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;dry mass col int v*q per unit area;northward_atmosphere_water_transport_across_unit_distance +mc;fld_s05i250 fld_s05i251;level_to_height((var[0]-var[1])/9.80665);kg m-2 s-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;;up;CM2_mon;CM2;float32;9400320;2081;cm000a.pm;Convective Mass Flux;atmosphere_net_upward_convective_mass_flux +pfull;fld_s00i408;level_to_height(var[0]);Pa;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;9400320;12;cw323a.pm;PRESSURE AT THETA LEVELS AFTER TS;air_pressure +phalf;fld_s00i407;level_to_height(var[0]);Pa;time model_rho_level_number lat lon;longitude latitude alevhalf time2;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;9400320;12;cw323a.pm;PRESSURE AT RHO LEVELS AFTER TS;air_pressure +prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Convective precipitation at surface, includes both liquid and solid phases;convective_precipitation_flux +prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;Convective precipitation at surface, includes both liquid and solid phases;convective_precipitation_flux +prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;Convective precipitation at surface, includes both liquid and solid phases;convective_precipitation_flux +pr;fld_s05i216;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +pr;fld_s05i216;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +pr;fld_s05i216;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +prlsns;fld_s04i204;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;LARGE SCALE SNOWFALL RATE KG/M2/S;stratiform_snowfall_flux +prlsprof;fld_s04i203;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;LARGE SCALE RAINFALL RATE KG/M2/S;stratiform_rainfall_flux +prra;fld_s05i214;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TOTAL RAINFALL RATE: LS+CONV KG/M2/S;rainfall_flux +prra;fld_s05i214;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL RAINFALL RATE: LS+CONV KG/M2/S;rainfall_flux +prrc;fld_s05i205;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux +prrc;fld_s05i205;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux +prrc;fld_s05i205;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;110592;74772;cm000a.pd;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux +prsnc;fld_s05i206;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux +prsnc;fld_s05i206;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux +prsnc;fld_s05i206;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;110592;74772;cm000a.pd;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prw;fld_s30i461;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL COLUMN Q (WATER VAPOUR PATH); +prw;fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406;var[0]-(var[1]+var[2]+var[3]);kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: point;;CMIP6_Amon;CM2;float32;110592;2081;cm000a.pm;; +ps;fld_s00i409;;Pa;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +ps;fld_s00i409;;Pa;time lat lon;longitude latitude time1;3hrPt;atmos;area: time: point;;CMIP6_E3hrPt;CM2;float32;110592;578880;cm000a.p8;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +psl;fld_s16i222;;Pa;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +psl;fld_s16i222;;Pa;time lat lon;longitude latitude time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;110592;270144;cm000a.p7;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +psl;fld_s16i222;;Pa;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +rldscs;fld_s02i208;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_CFday;CM2;float32;110592;74772;cm000a.pd;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky +rldscs;fld_s02i208;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;2081;cm000a.pm;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky +rlds;fld_s02i207;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rlds;fld_s02i207;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rlds;fld_s02i207;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rls;fld_s02i201;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rls;fld_s02i201;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rls;fld_s02i201;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time lat lon;longitude latitude time;day;atmos;;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rlutcs;fld_s02i206;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UPWARD LW FLUX (TOA);toa_outgoing_longwave_flux_assuming_clear_sky +rlutcs;fld_s02i206;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_CFday;CM2;float32;110592;74772;cm000a.pd;CLEAR-SKY (II) UPWARD LW FLUX (TOA);toa_outgoing_longwave_flux_assuming_clear_sky +rlut;fld_s02i205;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rlut;fld_s02i205;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rlut;fld_s02i205;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rlut;fld_s03i332;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rlut;fld_s03i332;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_E3hr;CM2;float32;110592;578880;cm000a.p8;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rlut;fld_s03i332;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rsdscs;fld_s01i210;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky +rsdscs;fld_s01i210;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky +rsdsdiff;fld_s01i216;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;DIFFUSE SURFACE SW FLUX : CORRECTED;surface_diffuse_downwelling_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsdt;fld_s01i207;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;INCOMING SW RAD FLUX (TOA): ALL TSS;toa_incoming_shortwave_flux +rss;fld_s01i201;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rss;fld_s01i201;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rss;fld_s01i201;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rsuscs;fld_s01i211;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UP SURFACE SW FLUX;surface_upwelling_shortwave_flux_in_air_assuming_clear_sky +rsuscs;fld_s01i211;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;CLEAR-SKY (II) UP SURFACE SW FLUX;surface_upwelling_shortwave_flux_in_air_assuming_clear_sky +rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rsutcs;fld_s01i209;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UPWARD SW FLUX (TOA);toa_outgoing_shortwave_flux_assuming_clear_sky +rsut;fld_s01i208;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;OUTGOING SW RAD FLUX (TOA);toa_outgoing_shortwave_flux +rtmt;fld_s01i207 fld_s01i208 fld_s03i332;var[0]-var[1]-var[2];W m-2;time lat lon;longitude latitude time;mon;atmos;area: time:mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;Net Downward Radiative Flux at Top of Model;net_downward_radiative_flux_at_top_of_atmosphere_model +rv850;fld_s30i455;;s-1;time lat_v lon_u;longitude latitude time1 p850;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;111360;289440;cm000a.p7;Relative Vorticity at 850hPa;atmosphere_relative_vorticity +sci;fld_s05i270;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;shallow convection indicator; +sfcWind;fld_s03i230;;m s-1;time lat lon;longitude latitude time height10m;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;10 METRE WIND SPEED ON C GRID;wind_speed +sfcWind;fld_s03i230;;m s-1;time lat lon;longitude latitude time height10m;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;10 METRE WIND SPEED ON C GRID;wind_speed +sfcWindmax;fld_s03i230_max;;m s-1;time lat lon;longitude latitude time height10m;day;atmos;area: time: maximum;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;10 METRE WIND SPEED ON C GRID;wind_speed +sftlf;fld_s03i395;;1;time lat lon;longitude latitude;mon;atmos;area: time: mean;;CMIP6_fx;CM2;float32;110592;12;cw323a.pm;FRACTION OF LAND;land_area_fraction +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;TEMPERATURE ON P LEV/T GRID;air_temperature +ta;fld_s30i204;;K;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2115840;2081;cm000a.pm;TEMPERATURE ON P LEV/UV GRID;air_temperature +ta19;fld_s30i294;;K;time pressure lat lon;longitude latitude plev19 time1;6hrPt;atmos;area: time: point;;CM2_6hr;CM2;float32;331776;289440;cm000a.p7;TEMPERATURE ON 19 P LEV/T GRID;air_temperature +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev3 time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;331776;289440;cm000a.p7;TEMPERATURE ON 3 P LEV/T GRID;air_temperature +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;TEMPERATURE ON 19 P LEV/T GRID;air_temperature +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;884736;74772;cm000a.pd;TEMPERATURE ON 8 P LEV/T GRID;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;TEMPERATURE AT 1.5M;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;3hrPt;atmos;area: time: point;;CM2_3hr;CM2;float32;110592;578880;cm000a.p8;TEMPERATURE AT 1.5M;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;CM2;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature +tasmax;fld_s03i236_max;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: maximum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature +tasmin;fld_s03i236_min;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: minimum;;CM2_day;CM2;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature +tauu;fld_s03i460;;Pa;time lat lon_u;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress +tauv;fld_s03i461;;Pa;time lat_v lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;CM2;float32;111360;12;cw323a.pm;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress +ta19uvgrid;fld_s30i204;;K;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;TEMPERATURE ON P LEV/UV GRID;air_temperature +theta;fld_s00i004;level_to_height(var[0]);K;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;9400320;12;cw323a.pm;THETA AFTER TIMESTEP;air_potential_temperature +ts;fld_s00i024;;K;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;SURFACE TEMPERATURE AFTER TIMESTEP;surface_temperature +ua19;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time1;6hrPt;atmos;area: time: point;;CM2_6hr;CM2;float32;334080;289440;cm000a.p7;U COMPNT OF WIND ON 19 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev3 time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;334080;289440;cm000a.p7;U COMPNT OF WIND ON 3 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;890880;74772;cm000a.pd;U COMPNT OF WIND ON 19 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;890880;74772;cm000a.pd;U COMPNT OF WIND ON 8 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2115840;2081;cm000a.pm;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind +uas;fld_s03i209;;m s-1;time lat lon_u;longitude latitude time height10m;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;110592;12;cw323a.pm;10 METRE WIND U-COMP;eastward_wind +uas;fld_s03i209;;m s-1;time lat lon_u;longitude latitude time1 height10m;3hrPt;atmos;area: time: point;;CMIP6_3hr;CM2;float32;110592;578880;cm000a.p8;10 METRE WIND U-COMP;eastward_wind +uas;fld_s03i209;;m s-1;time lat lon_u;longitude latitude time height10m;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;110592;74772;cm000a.pd;10 METRE WIND U-COMP;eastward_wind +ua19uvgrid;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind +va19;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;6hrPt;atmos;area: time: point;;CM2_6hr;CM2;float32;334080;289440;cm000a.p7;V COMPNT OF WIND ON 19 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev3 time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;334080;289440;cm000a.p7;V COMPNT OF WIND ON 3 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;890880;74772;cm000a.pd;V COMPNT OF WIND ON 19 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;890880;74772;cm000a.pd;V COMPNT OF WIND ON 8 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2115840;2081;cm000a.pm;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind +vas;fld_s03i210;;m s-1;time lat_v lon;longitude latitude time height10m;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;111360;12;cw323a.pm;10 METRE WIND V-COMP;northward_wind +vas;fld_s03i210;;m s-1;time lat_v lon;longitude latitude time1 height10m;3hrPt;atmos;area: time: point;;CMIP6_3hr;CM2;float32;111360;578880;cm000a.p8;10 METRE WIND V-COMP;northward_wind +vas;fld_s03i210;;m s-1;time lat_v lon;longitude latitude time height10m;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;111360;74772;cm000a.pd;10 METRE WIND V-COMP;northward_wind +va19uvgrid;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind +wa19uvgrid;fld_s30i203;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;W COMPNT OF WIND ON P LEV/UV GRID;upward_air_velocity +wap;fld_s30i298;;Pa s-1;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;OMEGA ON P LEV/T GRID;lagrangian_tendency_of_air_pressure +wap;fld_s30i298;;Pa s-1;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;OMEGA ON 19 P LEV/T GRID;lagrangian_tendency_of_air_pressure +wap;fld_s30i298;;Pa s-1;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;884736;74772;cm000a.pd;OMEGA ON 8 P LEV/T GRID;lagrangian_tendency_of_air_pressure +wap19uvgrid;fld_s30i208;;Pa s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;OMEGA ON P LEV/UV GRID;lagrangian_tendency_of_air_pressure +zfull;fld_s15i101;level_to_height(var[0]);m;time model_theta_level_number lat lon;longitude latitude alevel;mon;atmos;area: time: mean;;CMIP6_fx;CM2;float32;9400320;12;cw323a.pm;H OF THETA MODEL LEVS FROM SEA LEVEL;height_above_reference_ellipsoid +zg;fld_s30i297;;m;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;CM2;float32;2101248;12;cw323a.pm;GEOPOTENTIAL HEIGHT ON P LEV/T GRID;geopotential_height +zg;fld_s30i297;;m;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;CM2;float32;884736;74772;cm000a.pd;GEOPOTENTIAL HEIGHT ON 19 P LEV/T GRID;geopotential_height +zg;fld_s30i297;;m;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;CM2;float32;884736;74772;cm000a.pd;GEOPOTENTIAL HEIGHT ON 8 P LEV/T GRID;geopotential_height +zg500;fld_s30i297;;m;time pressure lat lon;longitude latitude time1 p500;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;CM2;float32;2101248;2081;cm000a.pm;Geopotential Height at 500hPa;geopotential_height +zg19uvgrid;fld_s30i207;;m;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;CM2;float32;2115840;12;cw323a.pm;GEOPOTENTIAL HEIGHT ON P LEV/UV GRID;geopotential_height diff --git a/mappings/map_atmos_ESM1.5.csv b/mappings/map_atmos_ESM1.5.csv new file mode 100644 index 0000000..4fc2d1b --- /dev/null +++ b/mappings/map_atmos_ESM1.5.csv @@ -0,0 +1,153 @@ +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +amdry;fld_s30i403;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL COLUMN DRY MASS RHO GRID;atmosphere_mass_per_unit_area +amwet;fld_s30i404;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL COLUMN WET MASS RHO GRID;atmosphere_mass_per_unit_area +ci;fld_s05i269;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;deep convection indicator; +cl;fld_s02i261;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;9400320;12;cw323a.pm;TOTAL CLOUD AMOUNT ON LEVELS;cloud_area_fraction_in_atmosphere_layer +cli;fld_s02i309;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;9400320;12;cw323a.pm;GRIDBOX LSC Qcf IN RADIATION KG/KG;mass_fraction_of_stratiform_cloud_ice_in_air +clivi;fld_s30i406;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL COLUMN QCF RHO GRID;atmosphere_cloud_ice_content +clt;fld_s02i204;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +clt;fld_s02i204;;1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +clt;fld_s02i204;;1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;TOTAL CLOUD AMOUNT IN LW RADIATION;cloud_area_fraction +clw;fld_s02i308;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;9400320;12;cw323a.pm;GRIDBOX LSC Qcl IN RADIATION KG/KG;mass_fraction_of_stratiform_cloud_liquid_water_in_air +evspsbl;fld_s03i223;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;SURFACE TOTAL MOISTURE FLUX KG/M2/S;water_evaporation_flux +hfls;fld_s03i234;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfls;fld_s03i234;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfls;fld_s03i234;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;SURFACE LATENT HEAT FLUX W/M2;surface_upward_latent_heat_flux +hfss;fld_s03i217;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hfss;fld_s03i217;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hfss;fld_s03i217;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;SURFACE SENSIBLE HEAT FLUX W/M2;surface_upward_sensible_heat_flux +hur;fld_s30i296;;%;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2101248;12;cw323a.pm;RELATIVE HUMIDITY ON P LEV/T GRID;relative_humidity +hur19;fld_s30i296;;%;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CM2_day;ESM1.5;float32;884736;74772;cm000a.pd;RELATIVE HUMIDITY ON P LEV/T GRID;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time1 height1.5m;3hrPt;atmos;area: time: point;;CM2_3hr;ESM1.5;float32;110592;578880;cm000a.p8;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hurs;fld_s03i245;;%;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;ESM1.5;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hursmax;fld_s03i245_max;;%;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: maximum;;CM2_day;ESM1.5;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hursmin;fld_s03i245_min;;%;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: minimum;;CM2_day;ESM1.5;float32;110592;74772;cm000a.pd;RELATIVE HUMIDITY AT 1.5M;relative_humidity +hur19uvgrid;fld_s30i206;;%;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;RELATIVE HUMIDITY ON P LEV/UV GRID;relative_humidity +hus;fld_s00i010;level_to_height(var[0]);1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CMIP6_CFmon;ESM1.5;float32;9400320;12;cw323a.pm;SPECIFIC HUMIDITY AFTER TIMESTEP;specific_humidity +hus;fld_s30i295;;1;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2101248;12;cw323a.pm;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity +hus;fld_s30i295;;1;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;884736;74772;cm000a.pd;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity +hus;fld_s30i295;;1;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;884736;74772;cm000a.pd;SPECIFIC HUMIDITY ON P LEV/T GRID;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;3hrPt;atmos;area: time: point;;CM2_3hr;ESM1.5;float32;110592;578880;cm000a.p8;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +huss;fld_s03i237;;1;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;ESM1.5;float32;110592;74772;cm000a.pd;SPECIFIC HUMIDITY AT 1.5M;specific_humidity +hus19uvgrid;fld_s30i205;;1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;SPECIFIC HUMIDITY ON P LEV/UV GRID;specific_humidity +intuaw;fld_s30i428;;kg m-1 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;dry mass col int u*q per unit area;eastward_atmosphere_water_transport_across_unit_distance +intvaw;fld_s30i429;;kg m-1 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;dry mass col int v*q per unit area;northward_atmosphere_water_transport_across_unit_distance +mc;fld_s05i250 fld_s05i251;level_to_height((var[0]-var[1])/9.80665);kg m-2 s-1;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;;up;CM2_mon;ESM1.5;float32;9400320;2081;cm000a.pm;Convective Mass Flux;atmosphere_net_upward_convective_mass_flux +pfull;fld_s00i408;level_to_height(var[0]);Pa;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;9400320;12;cw323a.pm;PRESSURE AT THETA LEVELS AFTER TS;air_pressure +phalf;fld_s00i407;level_to_height(var[0]);Pa;time model_rho_level_number lat lon;longitude latitude alevhalf time2;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;9400320;12;cw323a.pm;PRESSURE AT RHO LEVELS AFTER TS;air_pressure +prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;Convective precipitation at surface, includes both liquid and solid phases;convective_precipitation_flux +prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;;;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;Convective precipitation at surface, includes both liquid and solid phases;convective_precipitation_flux +prc;fld_s05i205 fld_s05i206;var[0]+var[1];kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;Convective precipitation at surface, includes both liquid and solid phases;convective_precipitation_flux +pr;fld_s05i216;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +pr;fld_s05i216;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +pr;fld_s05i216;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;TOTAL PRECIPITATION RATE KG/M2/S;precipitation_flux +prlsns;fld_s04i204;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;LARGE SCALE SNOWFALL RATE KG/M2/S;stratiform_snowfall_flux +prlsprof;fld_s04i203;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;LARGE SCALE RAINFALL RATE KG/M2/S;stratiform_rainfall_flux +prra;fld_s05i214;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL RAINFALL RATE: LS+CONV KG/M2/S;rainfall_flux +prra;fld_s05i214;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_E3hr;ESM1.5;float32;110592;578880;cm000a.p8;TOTAL RAINFALL RATE: LS+CONV KG/M2/S;rainfall_flux +prrc;fld_s05i205;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux +prrc;fld_s05i205;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_E3hr;ESM1.5;float32;110592;578880;cm000a.p8;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux +prrc;fld_s05i205;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;110592;74772;cm000a.pd;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux +prsnc;fld_s05i206;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux +prsnc;fld_s05i206;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_E3hr;ESM1.5;float32;110592;578880;cm000a.p8;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux +prsnc;fld_s05i206;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;110592;74772;cm000a.pd;CONVECTIVE SNOWFALL RATE KG/M2/S;convective_snowfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prsn;fld_s05i215;;kg m-2 s-1;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;TOTAL SNOWFALL RATE: LS+CONV KG/M2/S;snowfall_flux +prw;fld_s30i461;;kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL COLUMN Q (WATER VAPOUR PATH); +prw;fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406;var[0]-(var[1]+var[2]+var[3]);kg m-2;time lat lon;longitude latitude time;mon;atmos;area: time: point;;CMIP6_Amon;ESM1.5;float32;110592;2081;cm000a.pm;; +ps;fld_s00i409;;Pa;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +ps;fld_s00i409;;Pa;time lat lon;longitude latitude time1;3hrPt;atmos;area: time: point;;CMIP6_E3hrPt;ESM1.5;float32;110592;578880;cm000a.p8;SURFACE PRESSURE AFTER TIMESTEP;surface_air_pressure +psl;fld_s16i222;;Pa;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +psl;fld_s16i222;;Pa;time lat lon;longitude latitude time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;ESM1.5;float32;110592;270144;cm000a.p7;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +psl;fld_s16i222;;Pa;time lat lon;longitude latitude time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;PRESSURE AT MEAN SEA LEVEL;air_pressure_at_sea_level +rldscs;fld_s02i208;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_CFday;ESM1.5;float32;110592;74772;cm000a.pd;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky +rldscs;fld_s02i208;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;ESM1.5;float32;110592;2081;cm000a.pm;CLEAR-SKY (II) DOWN SURFACE LW FLUX;surface_downwelling_longwave_flux_in_air_assuming_clear_sky +rlds;fld_s02i207;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rlds;fld_s02i207;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rlds;fld_s02i207;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;DOWNWARD LW RAD FLUX: SURFACE;surface_downwelling_longwave_flux_in_air +rls;fld_s02i201;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rls;fld_s02i201;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CM2_3hr;ESM1.5;float32;110592;578880;cm000a.p8;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rls;fld_s02i201;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;NET DOWN SURFACE LW RAD FLUX;surface_net_downward_longwave_flux +rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time lat lon;longitude latitude time;day;atmos;;up;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rlus;fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205;var[0]-var[1]+var[2]-var[3];W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;;up;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rlutcs;fld_s02i206;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UPWARD LW FLUX (TOA);toa_outgoing_longwave_flux_assuming_clear_sky +rlutcs;fld_s02i206;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_CFday;ESM1.5;float32;110592;74772;cm000a.pd;CLEAR-SKY (II) UPWARD LW FLUX (TOA);toa_outgoing_longwave_flux_assuming_clear_sky +rlut;fld_s02i205;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rlut;fld_s02i205;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_E3hr;ESM1.5;float32;110592;578880;cm000a.p8;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rlut;fld_s02i205;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;OUTGOING LW RAD FLUX (TOA);toa_outgoing_longwave_flux +rlut;fld_s03i332;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rlut;fld_s03i332;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_E3hr;ESM1.5;float32;110592;578880;cm000a.p8;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rlut;fld_s03i332;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;TOA OUTGOING LW RAD AFTER B.LAYER;toa_outgoing_longwave_flux +rsdscs;fld_s01i210;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky +rsdscs;fld_s01i210;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;CLEAR-SKY (II) DOWN SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air_assuming_clear_sky +rsdsdiff;fld_s01i216;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;DIFFUSE SURFACE SW FLUX : CORRECTED;surface_diffuse_downwelling_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsds;fld_s01i235;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;TOTAL DOWNWARD SURFACE SW FLUX;surface_downwelling_shortwave_flux_in_air +rsdt;fld_s01i207;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;INCOMING SW RAD FLUX (TOA): ALL TSS;toa_incoming_shortwave_flux +rss;fld_s01i201;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rss;fld_s01i201;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;down;CM2_3hr;ESM1.5;float32;110592;578880;cm000a.p8;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rss;fld_s01i201;;W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;down;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;NET DOWN SURFACE SW FLUX: SW TS ONLY;surface_net_downward_shortwave_flux +rsuscs;fld_s01i211;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UP SURFACE SW FLUX;surface_upwelling_shortwave_flux_in_air_assuming_clear_sky +rsuscs;fld_s01i211;;W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;CLEAR-SKY (II) UP SURFACE SW FLUX;surface_upwelling_shortwave_flux_in_air_assuming_clear_sky +rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time_0 lat lon;longitude latitude time;3hr;atmos;area: time: mean;up;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rsus;fld_s01i235 fld_s01i201;var[0]-var[1];W m-2;time lat lon;longitude latitude time;day;atmos;area: time: mean;up;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;Surface Upwelling Shortwave Radiation;surface_upwelling_shortwave_flux_in_air +rsutcs;fld_s01i209;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;CLEAR-SKY (II) UPWARD SW FLUX (TOA);toa_outgoing_shortwave_flux_assuming_clear_sky +rsut;fld_s01i208;;W m-2;time lat lon;longitude latitude time;mon;atmos;area: time: mean;up;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;OUTGOING SW RAD FLUX (TOA);toa_outgoing_shortwave_flux +rtmt;fld_s01i207 fld_s01i208 fld_s03i332;var[0]-var[1]-var[2];W m-2;time lat lon;longitude latitude time;mon;atmos;area: time:mean;down;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;Net Downward Radiative Flux at Top of Model;net_downward_radiative_flux_at_top_of_atmosphere_model +rv850;fld_s30i455;;s-1;time lat_v lon_u;longitude latitude time1 p850;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;ESM1.5;float32;111360;289440;cm000a.p7;Relative Vorticity at 850hPa;atmosphere_relative_vorticity +sci;fld_s05i270;;1;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;shallow convection indicator; +sfcWind;fld_s03i230;;m s-1;time lat lon;longitude latitude time height10m;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;10 METRE WIND SPEED ON C GRID;wind_speed +sfcWind;fld_s03i230;;m s-1;time lat lon;longitude latitude time height10m;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;10 METRE WIND SPEED ON C GRID;wind_speed +sfcWindmax;fld_s03i230_max;;m s-1;time lat lon;longitude latitude time height10m;day;atmos;area: time: maximum;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;10 METRE WIND SPEED ON C GRID;wind_speed +sftlf;fld_s03i395;;1;time lat lon;longitude latitude;mon;atmos;area: time: mean;;CMIP6_fx;ESM1.5;float32;110592;12;cw323a.pm;FRACTION OF LAND;land_area_fraction +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2101248;12;cw323a.pm;TEMPERATURE ON P LEV/T GRID;air_temperature +ta;fld_s30i204;;K;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2115840;2081;cm000a.pm;TEMPERATURE ON P LEV/UV GRID;air_temperature +ta19;fld_s30i294;;K;time pressure lat lon;longitude latitude plev19 time1;6hrPt;atmos;area: time: point;;CM2_6hr;ESM1.5;float32;331776;289440;cm000a.p7;TEMPERATURE ON 19 P LEV/T GRID;air_temperature +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev3 time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;ESM1.5;float32;331776;289440;cm000a.p7;TEMPERATURE ON 3 P LEV/T GRID;air_temperature +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;884736;74772;cm000a.pd;TEMPERATURE ON 19 P LEV/T GRID;air_temperature +ta;fld_s30i294;;K;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;884736;74772;cm000a.pd;TEMPERATURE ON 8 P LEV/T GRID;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;TEMPERATURE AT 1.5M;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;3hrPt;atmos;area: time: point;;CM2_3hr;ESM1.5;float32;110592;578880;cm000a.p8;TEMPERATURE AT 1.5M;air_temperature +tas;fld_s03i236;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: mean;;CM2_day;ESM1.5;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature +tasmax;fld_s03i236_max;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: maximum;;CM2_day;ESM1.5;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature +tasmin;fld_s03i236_min;;K;time lat lon;longitude latitude time height1.5m;day;atmos;area: time: minimum;;CM2_day;ESM1.5;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature +tauu;fld_s03i460;;Pa;time lat lon_u;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;X-COMP SURFACE BL STRESS;surface_downward_eastward_stress +tauv;fld_s03i461;;Pa;time lat_v lon;longitude latitude time;mon;atmos;area: time: mean;down;CMIP6_Amon;ESM1.5;float32;111360;12;cw323a.pm;Y-COMP SURFACE BL STRESS;surface_downward_northward_stress +ta19uvgrid;fld_s30i204;;K;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;TEMPERATURE ON P LEV/UV GRID;air_temperature +theta;fld_s00i004;level_to_height(var[0]);K;time model_theta_level_number lat lon;longitude latitude alevel time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;9400320;12;cw323a.pm;THETA AFTER TIMESTEP;air_potential_temperature +ts;fld_s00i024;;K;time lat lon;longitude latitude time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;SURFACE TEMPERATURE AFTER TIMESTEP;surface_temperature +ua19;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time1;6hrPt;atmos;area: time: point;;CM2_6hr;ESM1.5;float32;334080;289440;cm000a.p7;U COMPNT OF WIND ON 19 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev3 time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;ESM1.5;float32;334080;289440;cm000a.p7;U COMPNT OF WIND ON 3 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;890880;74772;cm000a.pd;U COMPNT OF WIND ON 19 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;890880;74772;cm000a.pd;U COMPNT OF WIND ON 8 P LEV/UV GRID;eastward_wind +ua;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2115840;2081;cm000a.pm;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind +uas;fld_s03i209;;m s-1;time lat lon_u;longitude latitude time height10m;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;110592;12;cw323a.pm;10 METRE WIND U-COMP;eastward_wind +uas;fld_s03i209;;m s-1;time lat lon_u;longitude latitude time1 height10m;3hrPt;atmos;area: time: point;;CMIP6_3hr;ESM1.5;float32;110592;578880;cm000a.p8;10 METRE WIND U-COMP;eastward_wind +uas;fld_s03i209;;m s-1;time lat lon_u;longitude latitude time height10m;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;110592;74772;cm000a.pd;10 METRE WIND U-COMP;eastward_wind +ua19uvgrid;fld_s30i201;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;U COMPNT OF WIND ON P LEV/UV GRID;eastward_wind +va19;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;6hrPt;atmos;area: time: point;;CM2_6hr;ESM1.5;float32;334080;289440;cm000a.p7;V COMPNT OF WIND ON 19 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev3 time1;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;ESM1.5;float32;334080;289440;cm000a.p7;V COMPNT OF WIND ON 3 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;890880;74772;cm000a.pd;V COMPNT OF WIND ON 19 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;890880;74772;cm000a.pd;V COMPNT OF WIND ON 8 P LEV/UV GRID;northward_wind +va;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2115840;2081;cm000a.pm;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind +vas;fld_s03i210;;m s-1;time lat_v lon;longitude latitude time height10m;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;111360;12;cw323a.pm;10 METRE WIND V-COMP;northward_wind +vas;fld_s03i210;;m s-1;time lat_v lon;longitude latitude time1 height10m;3hrPt;atmos;area: time: point;;CMIP6_3hr;ESM1.5;float32;111360;578880;cm000a.p8;10 METRE WIND V-COMP;northward_wind +vas;fld_s03i210;;m s-1;time lat_v lon;longitude latitude time height10m;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;111360;74772;cm000a.pd;10 METRE WIND V-COMP;northward_wind +va19uvgrid;fld_s30i202;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;V COMPNT OF WIND ON P LEV/UV GRID;northward_wind +wa19uvgrid;fld_s30i203;;m s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;W COMPNT OF WIND ON P LEV/UV GRID;upward_air_velocity +wap;fld_s30i298;;Pa s-1;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2101248;12;cw323a.pm;OMEGA ON P LEV/T GRID;lagrangian_tendency_of_air_pressure +wap;fld_s30i298;;Pa s-1;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;884736;74772;cm000a.pd;OMEGA ON 19 P LEV/T GRID;lagrangian_tendency_of_air_pressure +wap;fld_s30i298;;Pa s-1;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;884736;74772;cm000a.pd;OMEGA ON 8 P LEV/T GRID;lagrangian_tendency_of_air_pressure +wap19uvgrid;fld_s30i208;;Pa s-1;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;OMEGA ON P LEV/UV GRID;lagrangian_tendency_of_air_pressure +zfull;fld_s15i101;level_to_height(var[0]);m;time model_theta_level_number lat lon;longitude latitude alevel;mon;atmos;area: time: mean;;CMIP6_fx;ESM1.5;float32;9400320;12;cw323a.pm;H OF THETA MODEL LEVS FROM SEA LEVEL;height_above_reference_ellipsoid +zg;fld_s30i297;;m;time pressure lat lon;longitude latitude plev19 time;mon;atmos;area: time: mean;;CMIP6_Amon;ESM1.5;float32;2101248;12;cw323a.pm;GEOPOTENTIAL HEIGHT ON P LEV/T GRID;geopotential_height +zg;fld_s30i297;;m;time pressure lat lon;longitude latitude plev19 time;day;atmos;area: time: mean;;CMIP6_Eday;ESM1.5;float32;884736;74772;cm000a.pd;GEOPOTENTIAL HEIGHT ON 19 P LEV/T GRID;geopotential_height +zg;fld_s30i297;;m;time pressure lat lon;longitude latitude plev8 time;day;atmos;area: time: mean;;CMIP6_day;ESM1.5;float32;884736;74772;cm000a.pd;GEOPOTENTIAL HEIGHT ON 8 P LEV/T GRID;geopotential_height +zg500;fld_s30i297;;m;time pressure lat lon;longitude latitude time1 p500;6hrPt;atmos;area: time: point;;CMIP6_6hrPlevPt;ESM1.5;float32;2101248;2081;cm000a.pm;Geopotential Height at 500hPa;geopotential_height +zg19uvgrid;fld_s30i207;;m;time pressure lat_v lon_u;longitude latitude plev19 time;mon;atmos;area: time: mean;;CM2_mon;ESM1.5;float32;2115840;12;cw323a.pm;GEOPOTENTIAL HEIGHT ON P LEV/UV GRID;geopotential_height diff --git a/mappings/map_land_AM3.csv b/mappings/map_land_AM3.csv new file mode 100644 index 0000000..3e5efdb --- /dev/null +++ b/mappings/map_land_AM3.csv @@ -0,0 +1,20 @@ +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +cw;fld_s08i209;;kg m-2;time lat lon;longitude latitude time;mon;land;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;CANOPY WATER CONTENT;canopy_water_amount +eow;fld_s03i232;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CM2_mon;AM3;float32;110592;480;di787a.pm;Evaporation flux from open sea; +evspsblveg;fld_s03i297;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;AM3;float32;110592;480;di787a.pm;Evaporation from canopy;water_evaporation_flux_from_canopy +gpp;fld_s03i261;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;down;CMIP6_Lmon;AM3;float32;110592;480;di787a.pm;GROSS PRIMARY PRODUCTIVITY KG C/M2/S;gross_primary_productivity_of_biomass_expressed_as_carbon +lmask;fld_s00i030;var[0].isel(time=0).astype(int);%;time lat lon;longitude latitude;mon;land;area: time: mean;;AUS2200_fx;AM3;float64;221184;480;di787a.pm;LAND MASK (No halo) (LAND=TRUE);land_binary_mask +mrfsofr;fld_s08i230;;1;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CM2_mon;AM3;float32;663552;480;di787a.pm;FROZEN SOIL MOISTURE FRACTION;mass_fraction_of_frozen_water_in_soil_moisture +mrlqso;fld_s08i229;;1;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;AM3_Amon;AM3;float32;663552;480;di787a.pm;UNFROZEN SOIL MOISTURE FRACTION;mass_fraction_of_unfrozen_water_in_soil_moisture +mrrob;fld_s08i235;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;AM3_Amon;AM3;float32;110592;480;di787a.pm;SUB-SURFACE RUNOFF RATE KG/M2/S;subsurface_runoff_flux +mrros;fld_s08i234;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;AM3;float32;110592;480;di787a.pm;SURFACE RUNOFF RATE KG/M2/S;surface_runoff_flux +mrso;fld_s08i223;var[0].sum(dim='depth');kg m-2;time depth lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;AM3;float32;663552;480;di787a.pm;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer +mrsol;fld_s08i223;;kg m-2;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CMIP6_Emon;AM3;float32;663552;480;di787a.pm;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer +mrsos;fld_s08i223;calc_topsoil(var[0]);kg m-2;time depth lat lon;longitude latitude time sdepth1;mon;land;area: time: mean;;CMIP6_Lmon;AM3;float32;663552;480;di787a.pm;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer +orog;fld_s00i033;var[0].isel(time=0);m;time lat lon;longitude latitude;mon;land;area: time: mean;;CMIP6_fx;AM3;float32;110592;480;di787a.pm;OROGRAPHY (/STRAT LOWER BC);surface_altitude +rh;fld_s03i293;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;up;CMIP6_Lmon;AM3;float32;110592;480;di787a.pm;SOIL RESPIRATION KG C/M2/S;soil_respiration_carbon_flux +sbl;fld_s03i298;;kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce;area: time: mean;;CMIP6_LImon;AM3;float32;110592;480;di787a.pm;SUBLIM. SURFACE (GBM) : RATE KG/M2/S;surface_snow_and_ice_sublimation_flux +snm;fld_s08i231;;kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;AM3;float32;110592;480;di787a.pm;surface_snow_melt_flux_where_land; +snw;fld_s08i023;;kg m-2;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;AM3;float32;110592;480;di787a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount +treeFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev='typetree');%;time pseudo_level_0 lat lon;longitude latitude time typetree;mon;land;area: time: mean;;CMIP6_Lmon;AM3;float32;1880064;480;di787a.pm;SURFACE TILE FRACTIONS; +tsl;fld_s08i225;;K;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CMIP6_Lmon;AM3;float32;663552;480;di787a.pm;DEEP SOIL TEMP. AFTER HYDROLOGY DEGK;soil_temperature diff --git a/mappings/map_land_CM2.csv b/mappings/map_land_CM2.csv index af1f539..c57ed32 100644 --- a/mappings/map_land_CM2.csv +++ b/mappings/map_land_CM2.csv @@ -1,57 +1,57 @@ -#cmor_var;input_vars;calculation;units;dimensions;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name -agesno;fld_s03i832 fld_s03i317;average_tile(var[0],tilefrac=var[1]);mon;time pseudo_level_1 lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;1880064;12;cw323a.pm;CABLE SNOW AGE ON TILES;age_of_surface_snow -baresoilFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],14,landfrac=var[1],lev='typebare');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Bare Soil Percentage Area Coverage;area_fraction -c3PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev='typec3pft');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Plant Functional Type;area_fraction -c4PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1],lev='typec4pft');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Percentage Cover by C4 Plant Functional Type;area_fraction -cropFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typec3crop');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Crops;area_fraction -cropFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typecrop');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Percentage Crop Cover;area_fraction -cw;fld_s08i209;;kg m-2;time lat lon;mon;land;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;CANOPY WATER CONTENT;canopy_water_amount -eow;fld_s03i232;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;Evaporation flux from open sea; -evspsblsoi;fld_s03i296 fld_s03i331 fld_s03i317;var[0] + average_tile(var[1],tilefrac=var[2],lfrac=0);kg m-2 s-1;time lat lon;mon;land;area: time: mean;up;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Evaporation from soil surface;water_evaporation_flux_from_soil -evspsblveg;fld_s03i297;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Evaporation from canopy;water_evaporation_flux_from_canopy -fracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1]);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; -gpp;fld_s03i261;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;down;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;GROSS PRIMARY PRODUCTIVITY KG C/M2/S;gross_primary_productivity_of_biomass_expressed_as_carbon -grassFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],6,landfrac=var[1],lev='typec3natg');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;C3 Natural Grass Area Percentage;area_fraction -grassFracC4;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1]i,lev='typec4natg');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;C4 Natural Grass Area Percentage;area_fraction -grassFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[6,7],landfrac=var[1],lev='typenatgr');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Natural Grass Area Percentage;area_fraction -hfdsn;fld_s08i202;;W m-2;time lat lon;mon;landIce;area: mean where land time: mean;down;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;Downward Heat Flux into Snow Where Land over Land;surface_downward_heat_flux_in_snow -landCoverFrac;fld_s03i317 fld_s03i395;(var[0]*var[1]).filled(0);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; -lmask;fld_s00i030;var[0].isel(time=0).astype(int);1;time lat lon;mon;land;area: time: point;;AUS2200_fx;CM2;float32;110592;12;cw323a.pm;LAND MASK (No halo) (LAND=TRUE);land_binary_mask -mrfso;fld_s08i223 fld_s08i230;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;Soil Frozen Water Content;soil_frozen_water_content -mrfsofr;fld_s08i230;;1;time depth lat lon;mon;land;area: time: mean;;CM2_mon;CM2;float32;663552;12;cw323a.pm;FROZEN SOIL MOISTURE FRACTION;mass_fraction_of_frozen_water_in_soil_moisture -mrlqso;fld_s08i229;;1;time depth lat lon;mon;land;area: mean where land time: mean;;CM2_mon;CM2;float32;663552;12;cw323a.pm;UNFROZEN SOIL MOISTURE FRACTION;mass_fraction_of_unfrozen_water_in_soil_moisture -mrlso;fld_s08i223 fld_s08i229;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;Soil Liquid Water Content;liquid_water_content_of_soil_layer -mrrob;fld_s08i235;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CM2_mon;CM2;;float32;110592;12;cw323a.pm;SUB-SURFACE RUNOFF RATE KG/M2/S; subsurface_runoff_flux -mrro;fld_s08i234 fld_s08i235;sum_vars(var);kg m-2 s-1;time lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Total Runoff;runoff_flux -mrros;fld_s08i234;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SURFACE RUNOFF RATE KG/M2/S;surface_runoff_flux -mrsfl;fld_s08i223 fld_s08i230;var[0]*var[1];kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;Frozen Water Content of Soil Layer;frozen_water_content_of_soil_layer -mrsll;fld_s08i223 fld_s08i229;var[0]*var[1];kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;Liquid Water Content of Soil Layer;liquid_water_content_of_soil_layer -mrso;fld_s08i208;;kg m-2;time lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SOIL MOISTURE CONTENT;mass_content_of_water_in_soil -mrso;fld_s08i223;var[0].sum(dim='depth');kg m-2;time lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SOIL MOISTURE CONTENT;mass_content_of_water_in_soil -mrsol;fld_s08i223;;kg m-2;time depth lat lon;mon;land;area: time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer -mrsos;fld_s08i223;calc_topsoil(var[0]);kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;Moisture in Upper Portion of Soil Column;mass_content_of_water_in_soil_layer -nep;fld_s03i262 fld_s03i293;var[0]-var[1];kg m-2 s-1;time lat lon;mon;land;area: mean where land time: mean;down;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;Net Carbon Mass Flux out of Atmosphere Due to Net Ecosystem Productivity on Land [kgC m-2 s-1];surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change -npp;fld_s03i262;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;down;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;NET PRIMARY PRODUCTIVITY KG C/M2/S;net_primary_productivity_of_biomass_expressed_as_carbon -nwdFracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1],nwd=1);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; -orog;fld_s00i033;var[0].isel(time=0);m;time lat lon;mon;land;area: mean;;CMIP6_fx;CM2;float32;110592;12;cw323a.pm;Surface Altitude;surface_altitude -orog;surface_altitude;;m;time lat lon;mon;land;area: time: mean;;CMIP6_fx;CM2;float32;110592;12;cw323a.pm;OROGRAPHY (/STRAT LOWER BC);surface_altitude -ra;fld_s03i263;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;up;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;PLANT RESPIRATION KG/M2/S;plant_respiration_carbon_flux -residualFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev='typeresidual');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Percentage of Grid Cell That Is Land but neither Vegetation Covered nor Bare Soil;area_fraction -rh;fld_s03i293;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;up;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SOIL RESPIRATION KG C/M2/S;soil_respiration_carbon_flux -sbl;fld_s03i298;;kg m-2 s-1;time lat lon;mon;landIce;area: mean where land time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;SUBLIM. SURFACE (GBM) : RATE KG/M2/S;surface_snow_and_ice_sublimation_flux -sbl;fld_s03i331 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2 s-1;time pseudo_level_1 lat lon;mon;landIce;area: mean where land time: mean;;CMIP6_LImon;CM2;float32;1880064;12;cw323a.pm;Surface Snow and Ice Sublimation Flux;surface_snow_and_ice_sublimation_flux -sftgif;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],17,landfrac=var[1]);1;time pseudo_level_1 lat lon;mon;land;area: mean;;CMIP6_LImon;CM2;float32;1880064;12;cw323a.pm;Land Ice Area Percentage;land_ice_area_fraction -shrubFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[5,8],landfrac=var[1],lev='typeshrub');1;time lat lon;mon;land;;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Percentage Cover by Shrub;area_fraction -snm;fld_s08i231;;kg m-2 s-1;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; -snm;fld_s08i237 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2 s-1;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; -snw;fld_s08i023;;kg m-2;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount -snw;fld_s08i236 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount -treeFracBdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],4,landfrac=var[1],lev='typetreebd');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Broadleaf Deciduous Tree Area Percentage;area_fraction -treeFracBdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],2,landfrac=var[1],lev='typetreebe');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Broadleaf Evergreen Tree Area Percentage;area_fraction -treeFrac;fld_s03i317;extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev='typetree');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Tree Cover Percentage;area_fraction -treeFracNdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],3,landfrac=var[1],lev='typetreend');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Needleleaf Deciduous Tree Area Percentage;area_fraction -treeFracNdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],1,landfrac=var[1],lev='typetreene');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;Needleleaf Evergreen Tree Area Percentage;area_fraction -tsl;fld_s08i225;;K;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;Temperature of Soil;soil_temperature -tsl;fld_s08i225;;K;time depth lat lon;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;DEEP SOIL TEMP. AFTER HYDROLOGY DEGK;soil_temperature -vegFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev='typeveg');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;Total Vegetated Percentage Cover;area_fraction -wetlandFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],11,landfrac=var[1],lev='typewetla');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Wetland Percentage Cover;area_fraction +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +agesno;fld_s03i832 fld_s03i317;average_tile(var[0],tilefrac=var[1]);mon;time pseudo_level_1 lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;1880064;12;cw323a.pm;CABLE SNOW AGE ON TILES;age_of_surface_snow +baresoilFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],14,landfrac=var[1],lev='typebare');1;time lat lon;longitude latitude time typebare;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Bare Soil Percentage Area Coverage;area_fraction +c3PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev='typec3pft');1;time pseudo_level_1 lat lon;longitude latitude time typec3pft;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Plant Functional Type;area_fraction +c4PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1],lev='typec4pft');1;time pseudo_level_1 lat lon;longitude latitude time typec4pft;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Percentage Cover by C4 Plant Functional Type;area_fraction +cropFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typec3crop');1;time pseudo_level_1 lat lon;longitude latitude time typec3crop;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Crops;area_fraction +cropFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typecrop');1;time lat lon;longitude latitude time typecrop;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Percentage Crop Cover;area_fraction +cw;fld_s08i209;;kg m-2;time lat lon;longitude latitude time;mon;land;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;CANOPY WATER CONTENT;canopy_water_amount +eow;fld_s03i232;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CM2_mon;CM2;float32;110592;12;cw323a.pm;Evaporation flux from open sea; +evspsblsoi;fld_s03i296 fld_s03i331 fld_s03i317;var[0] + average_tile(var[1],tilefrac=var[2],lfrac=0);kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;up;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Evaporation from soil surface;water_evaporation_flux_from_soil +evspsblveg;fld_s03i297;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Evaporation from canopy;water_evaporation_flux_from_canopy +fracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1]);1;time pseudo_level_1 lat lon;longitude latitude landUse time;mon;land;area: time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; +gpp;fld_s03i261;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;down;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;GROSS PRIMARY PRODUCTIVITY KG C/M2/S;gross_primary_productivity_of_biomass_expressed_as_carbon +grassFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],6,landfrac=var[1],lev='typec3natg');1;time lat lon;longitude latitude time typec3natg;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;C3 Natural Grass Area Percentage;area_fraction +grassFracC4;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1],lev='typec4natg');1;time pseudo_level_1 lat lon;longitude latitude time typec4natg;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;C4 Natural Grass Area Percentage;area_fraction +grassFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[6,7],landfrac=var[1],lev='typenatgr');1;time pseudo_level_1 lat lon;longitude latitude time typenatgr;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Natural Grass Area Percentage;area_fraction +hfdsn;fld_s08i202;;W m-2;time lat lon;longitude latitude time;mon;landIce;area: mean where land time: mean;down;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;Downward Heat Flux into Snow Where Land over Land;surface_downward_heat_flux_in_snow +landCoverFrac;fld_s03i317 fld_s03i395;calc_landcover(var, 'cable');1;time pseudo_level_1 lat lon;longitude latitude vegtype time;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; +lmask;fld_s00i030;var[0].isel(time=0).astype(int);1;time lat lon;longitude latitude;mon;land;area: time: point;;AUS2200_fx;CM2;float32;110592;12;cw323a.pm;LAND MASK (No halo) (LAND=TRUE);land_binary_mask +mrfso;fld_s08i223 fld_s08i230;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;longitude latitude time;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;Soil Frozen Water Content;soil_frozen_water_content +mrfsofr;fld_s08i230;;1;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CM2_mon;CM2;float32;663552;12;cw323a.pm;FROZEN SOIL MOISTURE FRACTION;mass_fraction_of_frozen_water_in_soil_moisture +mrlqso;fld_s08i229;;1;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;AM3_Amon;CM2;float32;663552;12;cw323a.pm;UNFROZEN SOIL MOISTURE FRACTION;mass_fraction_of_unfrozen_water_in_soil_moisture +mrlso;fld_s08i223 fld_s08i229;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;longitude latitude time;mon;land;area: mean where land time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;Soil Liquid Water Content;liquid_water_content_of_soil_layer +mrrob;fld_s08i235;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;AM3_Amon;CM2;float32;110592;12;cw323a.pm;SUB-SURFACE RUNOFF RATE KG/M2/S; subsurface_runoff_flux +mrro;fld_s08i234 fld_s08i235;sum_vars(var);kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Total Runoff;runoff_flux +mrros;fld_s08i234;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SURFACE RUNOFF RATE KG/M2/S;surface_runoff_flux +mrsfl;fld_s08i223 fld_s08i230;var[0]*var[1];kg m-2;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;Frozen Water Content of Soil Layer;frozen_water_content_of_soil_layer +mrsll;fld_s08i223 fld_s08i229;var[0]*var[1];kg m-2;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;Liquid Water Content of Soil Layer;liquid_water_content_of_soil_layer +mrso;fld_s08i208;;kg m-2;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SOIL MOISTURE CONTENT;mass_content_of_water_in_soil +mrso;fld_s08i223;var[0].sum(dim='depth');kg m-2;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SOIL MOISTURE CONTENT;mass_content_of_water_in_soil +mrsol;fld_s08i223;;kg m-2;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CMIP6_Emon;CM2;float32;663552;12;cw323a.pm;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer +mrsos;fld_s08i223;calc_topsoil(var[0]);kg m-2;time depth lat lon;longitude latitude time sdepth1;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;Moisture in Upper Portion of Soil Column;mass_content_of_water_in_soil_layer +nep;fld_s03i262 fld_s03i293;var[0]-var[1];kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: mean where land time: mean;down;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;Net Carbon Mass Flux out of Atmosphere Due to Net Ecosystem Productivity on Land [kgC m-2 s-1];surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change +npp;fld_s03i262;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;down;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;NET PRIMARY PRODUCTIVITY KG C/M2/S;net_primary_productivity_of_biomass_expressed_as_carbon +nwdFracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1],nwd=1);1;time pseudo_level_1 lat lon;longitude latitude landUse time typenwd;mon;land;area: time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; +orog;fld_s00i033;var[0].isel(time=0);m;time lat lon;longitude latitude;mon;land;area: mean;;CMIP6_fx;CM2;float32;110592;12;cw323a.pm;Surface Altitude;surface_altitude +orog;surface_altitude;;m;time lat lon;longitude latitude;mon;land;area: time: mean;;CMIP6_fx;CM2;float32;110592;12;cw323a.pm;OROGRAPHY (/STRAT LOWER BC);surface_altitude +ra;fld_s03i263;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;up;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;PLANT RESPIRATION KG/M2/S;plant_respiration_carbon_flux +residualFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev='typeresidual');1;time pseudo_level_1 lat lon;longitude latitude time typeresidual;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Percentage of Grid Cell That Is Land but neither Vegetation Covered nor Bare Soil;area_fraction +rh;fld_s03i293;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;up;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;SOIL RESPIRATION KG C/M2/S;soil_respiration_carbon_flux +sbl;fld_s03i298;;kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce;area: mean where land time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;SUBLIM. SURFACE (GBM) : RATE KG/M2/S;surface_snow_and_ice_sublimation_flux +sbl;fld_s03i331 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2 s-1;time pseudo_level_1 lat lon;longitude latitude time;mon;landIce;area: mean where land time: mean;;CMIP6_LImon;CM2;float32;1880064;12;cw323a.pm;Surface Snow and Ice Sublimation Flux;surface_snow_and_ice_sublimation_flux +sftgif;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],17,landfrac=var[1]);1;time pseudo_level_1 lat lon;longitude latitude time;mon;land;area: mean;;CMIP6_LImon;CM2;float32;1880064;12;cw323a.pm;Land Ice Area Percentage;land_ice_area_fraction +shrubFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[5,8],landfrac=var[1],lev='typeshrub');1;time lat lon;longitude latitude time typeshrub;mon;land;;;CMIP6_Lmon;CM2;float32;110592;12;cw323a.pm;Percentage Cover by Shrub;area_fraction +snm;fld_s08i231;;kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; +snm;fld_s08i237 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; +snw;fld_s08i023;;kg m-2;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount +snw;fld_s08i236 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;CM2;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount +treeFracBdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],4,landfrac=var[1],lev='typetreebd');1;time pseudo_level_1 lat lon;longitude latitude time typetreebd;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Broadleaf Deciduous Tree Area Percentage;area_fraction +treeFracBdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],2,landfrac=var[1],lev='typetreebe');1;time pseudo_level_1 lat lon;longitude latitude time typetreebe;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Broadleaf Evergreen Tree Area Percentage;area_fraction +treeFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev='typetree');1;time pseudo_level_1 lat lon;longitude latitude time typetree;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;CM2;float32;1880064;12;cw323a.pm;Tree Cover Percentage;area_fraction +treeFracNdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],3,landfrac=var[1],lev='typetreend');1;time pseudo_level_1 lat lon;longitude latitude time typetreend;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Needleleaf Deciduous Tree Area Percentage;area_fraction +treeFracNdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],1,landfrac=var[1],lev='typetreene');1;time lat lon;longitude latitude time typetreene;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;Needleleaf Evergreen Tree Area Percentage;area_fraction +tsl;fld_s08i225;;K;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;Temperature of Soil;soil_temperature +tsl;fld_s08i225;;K;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CMIP6_Lmon;CM2;float32;663552;12;cw323a.pm;DEEP SOIL TEMP. AFTER HYDROLOGY DEGK;soil_temperature +vegFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev='typeveg');1;time lat lon;longitude latitude time typeveg;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;110592;12;cw323a.pm;Total Vegetated Percentage Cover;area_fraction +wetlandFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],11,landfrac=var[1],lev='typewetla');1;time pseudo_level_1 lat lon;longitude latitude time typewetla;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;CM2;float32;1880064;12;cw323a.pm;Wetland Percentage Cover;area_fraction diff --git a/mappings/map_land_ESM1.5.csv b/mappings/map_land_ESM1.5.csv index 56b59dd..d091cd0 100644 --- a/mappings/map_land_ESM1.5.csv +++ b/mappings/map_land_ESM1.5.csv @@ -1,54 +1,54 @@ -#cmor_var;input_vars;calculation;units;dimensions;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name -agesno;fld_s03i832 fld_s03i317;average_tile(var[0],tilefrac=var[1]);mon;time pseudo_level_1 lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;1880064;12;cw323a.pm;CABLE SNOW AGE ON TILES;age_of_surface_snow -baresoilFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],14,landfrac=var[1],lev='typebare');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Bare Soil Percentage Area Coverage;area_fraction -c3PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev='typec3pft');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Plant Functional Type;area_fraction -c4PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1],lev='typec4pft');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage Cover by C4 Plant Functional Type;area_fraction -cropFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typec3crop');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Crops;area_fraction -cropFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typecrop');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Percentage Crop Cover;area_fraction -cw;fld_s08i209;;kg m-2;time lat lon;mon;land;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;CANOPY WATER CONTENT;canopy_water_amount -eow;fld_s03i232;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;Evaporation flux from open sea; -evspsblsoi;fld_s03i296;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;up;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Evaporation from soil surface;water_evaporation_flux_from_soil -evspsblveg;fld_s03i297;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Evaporation from canopy;water_evaporation_flux_from_canopy -fracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1]);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; -gpp;fld_s03i261;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;down;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;GROSS PRIMARY PRODUCTIVITY KG C/M2/S;gross_primary_productivity_of_biomass_expressed_as_carbon -grassFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],6,landfrac=var[1],lev='typec3natg');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;C3 Natural Grass Area Percentage;area_fraction -grassFracC4;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1]i,lev='typec4natg');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;C4 Natural Grass Area Percentage;area_fraction -grassFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[6,7],landfrac=var[1],lev='typenatgr');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Natural Grass Area Percentage;area_fraction -hfdsn;fld_s08i202;;W m-2;time lat lon;mon;landIce;area: mean where land time: mean;down;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;Downward Heat Flux into Snow Where Land over Land;surface_downward_heat_flux_in_snow -landCoverFrac;fld_s03i317 fld_s03i395;(var[0]*var[1]).filled(0);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; -lmask;fld_s00i030;var[0].isel(time=0).astype(int);1;time lat lon;mon;land;area: time: point;;AUS2200_fx;ESM1.5;float32;110592;12;cw323a.pm;LAND MASK (No halo) (LAND=TRUE);land_binary_mask -mrfso;fld_s08i223 fld_s08i230;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;663552;12;cw323a.pm;Soil Frozen Water Content;soil_frozen_water_content -mrfsofr;fld_s08i230;;1;time depth lat lon;mon;land;area: time: mean;;CM2_mon;ESM1.5;float32;663552;12;cw323a.pm;FROZEN SOIL MOISTURE FRACTION;mass_fraction_of_frozen_water_in_soil_moisture -mrlqso;fld_s08i229;;1;time depth lat lon;mon;land;area: mean where land time: mean;;CM2_mon;ESM1.5;float32;663552;12;cw323a.pm;UNFROZEN SOIL MOISTURE FRACTION;mass_fraction_of_unfrozen_water_in_soil_moisture -mrlso;fld_s08i223 fld_s08i229;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;Soil Liquid Water Content;liquid_water_content_of_soil_layer -mrrob;fld_s08i235;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CM2_mon;ESM1.5;;float32;110592;12;cw323a.pm;SUB-SURFACE RUNOFF RATE KG/M2/S; subsurface_runoff_flux -mrro;fld_s08i234 fld_s08i235;sum_vars(var);kg m-2 s-1;time lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Total Runoff;runoff_flux -mrros;fld_s08i234;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;SURFACE RUNOFF RATE KG/M2/S;surface_runoff_flux -mrsfl;fld_s08i223 fld_s08i230;var[0]*var[1];kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;Frozen Water Content of Soil Layer;frozen_water_content_of_soil_layer -mrsll;fld_s08i223 fld_s08i229;var[0]*var[1];kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;Liquid Water Content of Soil Layer;liquid_water_content_of_soil_layer -mrso;fld_s08i223;var[0].sum(dim='depth');kg m-2;time lat lon;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;SOIL MOISTURE CONTENT;mass_content_of_water_in_soil -mrsol;fld_s08i223;;kg m-2;time depth lat lon;mon;land;area: time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer -mrsos;fld_s08i223;calc_topsoil(var[0]);kg m-2;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;663552;12;cw323a.pm;Moisture in Upper Portion of Soil Column;mass_content_of_water_in_soil_layer -nep;fld_s03i262 fld_s03i293;var[0]-var[1];kg m-2 s-1;time lat lon;mon;land;area: mean where land time: mean;down;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;Net Carbon Mass Flux out of Atmosphere Due to Net Ecosystem Productivity on Land [kgC m-2 s-1];surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change -npp;fld_s03i262;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;down;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;NET PRIMARY PRODUCTIVITY KG C/M2/S;net_primary_productivity_of_biomass_expressed_as_carbon -nwdFracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1],nwd=1);1;time pseudo_level_1 lat lon;mon;land;area: time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; -orog;fld_s00i033;var[0].isel(time=0);m;time lat lon;mon;land;area: mean;;CMIP6_fx;ESM1.5;float32;110592;12;cw323a.pm;Surface Altitude;surface_altitude -orog;surface_altitude;;m;time lat lon;mon;land;area: time: mean;;CMIP6_fx;ESM1.5;float32;110592;12;cw323a.pm;OROGRAPHY (/STRAT LOWER BC);surface_altitude -ra;fld_s03i263;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;up;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;PLANT RESPIRATION KG/M2/S;plant_respiration_carbon_flux -residualFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev='typeresidual');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage of Grid Cell That Is Land but neither Vegetation Covered nor Bare Soil;area_fraction -rh;fld_s03i293;;kg m-2 s-1;time lat lon;mon;land;area: time: mean;up;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;SOIL RESPIRATION KG C/M2/S;soil_respiration_carbon_flux -sbl;fld_s03i298;;kg m-2 s-1;time lat lon;mon;landIce;area: mean where land time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;SUBLIM. SURFACE (GBM) : RATE KG/M2/S;surface_snow_and_ice_sublimation_flux -sftgif;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],17,landfrac=var[1]);1;time pseudo_level_1 lat lon;mon;land;area: mean;;CMIP6_LImon;ESM1.5;float32;1880064;12;cw323a.pm;Land Ice Area Percentage;land_ice_area_fraction -shrubFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[5,8],landfrac=var[1],lev='typeshrub');1;time lat lon;mon;land;;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Percentage Cover by Shrub;area_fraction -snm;fld_s08i231;;kg m-2 s-1;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; -snm;fld_s08i237 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2 s-1;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; -snw;fld_s08i023;;kg m-2;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount -snw;fld_s08i236 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2;time lat lon;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount -treeFracBdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],4,landfrac=var[1],lev='typetreebd');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Broadleaf Deciduous Tree Area Percentage;area_fraction -treeFracBdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],2,landfrac=var[1],lev='typetreebe');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Broadleaf Evergreen Tree Area Percentage;area_fraction -treeFrac;fld_s03i317;extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev='typetree');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Tree Cover Percentage;area_fraction -treeFracNdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],3,landfrac=var[1],lev='typetreend');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Needleleaf Deciduous Tree Area Percentage;area_fraction -treeFracNdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],1,landfrac=var[1],lev='typetreene');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;Needleleaf Evergreen Tree Area Percentage;area_fraction -tsl;fld_s08i225;;K;time depth lat lon;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;663552;12;cw323a.pm;Temperature of Soil;soil_temperature -vegFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev='typeveg');1;time lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;Total Vegetated Percentage Cover;area_fraction -wetlandFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],11,landfrac=var[1],lev='typewetla');1;time pseudo_level_1 lat lon;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Wetland Percentage Cover;area_fraction +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +agesno;fld_s03i832 fld_s03i317;average_tile(var[0],tilefrac=var[1]);mon;time pseudo_level_1 lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;1880064;12;cw323a.pm;CABLE SNOW AGE ON TILES;age_of_surface_snow +baresoilFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],14,landfrac=var[1],lev='typebare');1;time lat lon;longitude latitude time typebare;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Bare Soil Percentage Area Coverage;area_fraction +c3PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev='typec3pft');1;time pseudo_level_1 lat lon;longitude latitude time typec3pft;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Plant Functional Type;area_fraction +c4PftFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1],lev='typec4pft');1;time pseudo_level_1 lat lon;longitude latitude time typec4pft;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage Cover by C4 Plant Functional Type;area_fraction +cropFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typec3crop');1;time pseudo_level_1 lat lon;longitude latitude time typec3crop;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage Cover by C3 Crops;area_fraction +cropFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],9,landfrac=var[1],lev='typecrop');1;time lat lon;longitude latitude time typecrop;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Percentage Crop Cover;area_fraction +cw;fld_s08i209;;kg m-2;time lat lon;longitude latitude time;mon;land;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;CANOPY WATER CONTENT;canopy_water_amount +eow;fld_s03i232;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CM2_mon;ESM1.5;float32;110592;12;cw323a.pm;Evaporation flux from open sea; +evspsblsoi;fld_s03i296;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;up;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Evaporation from soil surface;water_evaporation_flux_from_soil +evspsblveg;fld_s03i297;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Evaporation from canopy;water_evaporation_flux_from_canopy +fracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1]);1;time pseudo_level_1 lat lon;longitude latitude landUse time;mon;land;area: time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; +gpp;fld_s03i261;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;down;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;GROSS PRIMARY PRODUCTIVITY KG C/M2/S;gross_primary_productivity_of_biomass_expressed_as_carbon +grassFracC3;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],6,landfrac=var[1],lev='typec3natg');1;time lat lon;longitude latitude time typec3natg;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;C3 Natural Grass Area Percentage;area_fraction +grassFracC4;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],7,landfrac=var[1],lev='typec4natg');1;time pseudo_level_1 lat lon;longitude latitude time typec4natg;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;C4 Natural Grass Area Percentage;area_fraction +grassFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[6,7],landfrac=var[1],lev='typenatgr');1;time pseudo_level_1 lat lon;longitude latitude time typenatgr;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Natural Grass Area Percentage;area_fraction +hfdsn;fld_s08i202;;W m-2;time lat lon;longitude latitude time;mon;landIce;area: mean where land time: mean;down;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;Downward Heat Flux into Snow Where Land over Land;surface_downward_heat_flux_in_snow +landCoverFrac;fld_s03i317 fld_s03i395;calc_landcover(var, 'cable');1;time pseudo_level_1 lat lon;longitude latitude vegtype time;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; +lmask;fld_s00i030;var[0].isel(time=0).astype(int);1;time lat lon;longitude latitude;mon;land;area: time: point;;AUS2200_fx;ESM1.5;float32;110592;12;cw323a.pm;LAND MASK (No halo) (LAND=TRUE);land_binary_mask +mrfso;fld_s08i223 fld_s08i230;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;longitude latitude time;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;663552;12;cw323a.pm;Soil Frozen Water Content;soil_frozen_water_content +mrfsofr;fld_s08i230;;1;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CM2_mon;ESM1.5;float32;663552;12;cw323a.pm;FROZEN SOIL MOISTURE FRACTION;mass_fraction_of_frozen_water_in_soil_moisture +mrlqso;fld_s08i229;;1;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;AM3_Amon;ESM1.5;float32;663552;12;cw323a.pm;UNFROZEN SOIL MOISTURE FRACTION;mass_fraction_of_unfrozen_water_in_soil_moisture +mrlso;fld_s08i223 fld_s08i229;(var[0]*var[1]).sum(dim='depth');kg m-2;time depth lat lon;longitude latitude time;mon;land;area: mean where land time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;Soil Liquid Water Content;liquid_water_content_of_soil_layer +mrrob;fld_s08i235;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;AM3_Amon;ESM1.5;float32;110592;12;cw323a.pm;SUB-SURFACE RUNOFF RATE KG/M2/S; subsurface_runoff_flux +mrro;fld_s08i234 fld_s08i235;sum_vars(var);kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Total Runoff;runoff_flux +mrros;fld_s08i234;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;SURFACE RUNOFF RATE KG/M2/S;surface_runoff_flux +mrsfl;fld_s08i223 fld_s08i230;var[0]*var[1];kg m-2;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;Frozen Water Content of Soil Layer;frozen_water_content_of_soil_layer +mrsll;fld_s08i223 fld_s08i229;var[0]*var[1];kg m-2;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;Liquid Water Content of Soil Layer;liquid_water_content_of_soil_layer +mrso;fld_s08i223;var[0].sum(dim='depth');kg m-2;time lat lon;longitude latitude time;mon;land;area: time: mean;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;SOIL MOISTURE CONTENT;mass_content_of_water_in_soil +mrsol;fld_s08i223;;kg m-2;time depth lat lon;longitude latitude sdepth time;mon;land;area: time: mean;;CMIP6_Emon;ESM1.5;float32;663552;12;cw323a.pm;SOIL MOISTURE CONTENT IN A LAYER;mass_content_of_water_in_soil_layer +mrsos;fld_s08i223;calc_topsoil(var[0]);kg m-2;time depth lat lon;longitude latitude time sdepth1;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;663552;12;cw323a.pm;Moisture in Upper Portion of Soil Column;mass_content_of_water_in_soil_layer +nep;fld_s03i262 fld_s03i293;var[0]-var[1];kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: mean where land time: mean;down;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;Net Carbon Mass Flux out of Atmosphere Due to Net Ecosystem Productivity on Land [kgC m-2 s-1];surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change +npp;fld_s03i262;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;down;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;NET PRIMARY PRODUCTIVITY KG C/M2/S;net_primary_productivity_of_biomass_expressed_as_carbon +nwdFracLut;fld_s03i317 fld_s03i395;landuse_frac(var[0],landfrac=var[1],nwd=1);1;time pseudo_level_1 lat lon;longitude latitude landUse time typenwd;mon;land;area: time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;SURFACE TILE FRACTIONS; +orog;fld_s00i033;var[0].isel(time=0);m;time lat lon;longitude latitude;mon;land;area: mean;;CMIP6_fx;ESM1.5;float32;110592;12;cw323a.pm;Surface Altitude;surface_altitude +orog;surface_altitude;;m;time lat lon;longitude latitude;mon;land;area: time: mean;;CMIP6_fx;ESM1.5;float32;110592;12;cw323a.pm;OROGRAPHY (/STRAT LOWER BC);surface_altitude +ra;fld_s03i263;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;up;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;PLANT RESPIRATION KG/M2/S;plant_respiration_carbon_flux +residualFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev='typeresidual');1;time pseudo_level_1 lat lon;longitude latitude time typeresidual;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Percentage of Grid Cell That Is Land but neither Vegetation Covered nor Bare Soil;area_fraction +rh;fld_s03i293;;kg m-2 s-1;time lat lon;longitude latitude time;mon;land;area: time: mean;up;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;SOIL RESPIRATION KG C/M2/S;soil_respiration_carbon_flux +sbl;fld_s03i298;;kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce;area: mean where land time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;SUBLIM. SURFACE (GBM) : RATE KG/M2/S;surface_snow_and_ice_sublimation_flux +sftgif;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],17,landfrac=var[1]);1;time pseudo_level_1 lat lon;longitude latitude time;mon;land;area: mean;;CMIP6_LImon;ESM1.5;float32;1880064;12;cw323a.pm;Land Ice Area Percentage;land_ice_area_fraction +shrubFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[5,8],landfrac=var[1],lev='typeshrub');1;time lat lon;longitude latitude time typeshrub;mon;land;;;CMIP6_Lmon;ESM1.5;float32;110592;12;cw323a.pm;Percentage Cover by Shrub;area_fraction +snm;fld_s08i231;;kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; +snm;fld_s08i237 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2 s-1;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;surface_snow_melt_flux_where_land; +snw;fld_s08i023;;kg m-2;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount +snw;fld_s08i236 fld_s03i317;average_tile(var[0],tilefrac=var[1],lfrac=0);kg m-2;time lat lon;longitude latitude time;mon;landIce land;area: time: mean;;CMIP6_LImon;ESM1.5;float32;110592;12;cw323a.pm;SNOW MASS AFTER HYDROLOGY KG/M2;surface_snow_amount +treeFracBdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],4,landfrac=var[1],lev='typetreebd');1;time pseudo_level_1 lat lon;longitude latitude time typetreebd;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Broadleaf Deciduous Tree Area Percentage;area_fraction +treeFracBdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],2,landfrac=var[1],lev='typetreebe');1;time pseudo_level_1 lat lon;longitude latitude time typetreebe;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Broadleaf Evergreen Tree Area Percentage;area_fraction +treeFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev='typetree');1;time pseudo_level_1 lat lon;longitude latitude time typetree;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Lmon;ESM1.5;float32;1880064;12;cw323a.pm;Tree Cover Percentage;area_fraction +treeFracNdlDcd;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],3,landfrac=var[1],lev='typetreend');1;time pseudo_level_1 lat lon;longitude latitude time typetreend;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Needleleaf Deciduous Tree Area Percentage;area_fraction +treeFracNdlEvg;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],1,landfrac=var[1],lev='typetreene');1;time lat lon;longitude latitude time typetreene;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;Needleleaf Evergreen Tree Area Percentage;area_fraction +tsl;fld_s08i225;;K;time depth lat lon;longitude latitude sdepth time;mon;land;area: mean where land time: mean;;CMIP6_Lmon;ESM1.5;float32;663552;12;cw323a.pm;Temperature of Soil;soil_temperature +vegFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev='typeveg');1;time lat lon;longitude latitude time typeveg;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;110592;12;cw323a.pm;Total Vegetated Percentage Cover;area_fraction +wetlandFrac;fld_s03i317 fld_s03i395;extract_tilefrac(var[0],11,landfrac=var[1],lev='typewetla');1;time pseudo_level_1 lat lon;longitude latitude time typewetla;mon;land;area: mean where land over all_area_types time: mean;;CMIP6_Emon;ESM1.5;float32;1880064;12;cw323a.pm;Wetland Percentage Cover;area_fraction diff --git a/mappings/map_ocean_CM2.csv b/mappings/map_ocean_CM2.csv new file mode 100644 index 0000000..ffd3e65 --- /dev/null +++ b/mappings/map_ocean_CM2.csv @@ -0,0 +1,82 @@ +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +advectsweby;temp_sweby_advec;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;CM2;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*sweby advect tendency; +agessc;age_global;;yr;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;Age (global);sea_water_age_since_surface_contact +areacello;dummy;get_areacello();1;time st_ocean yt_ocean xt_ocean;longitude latitude;mon;ocean;area: sum;;CMIP6_Ofx;CM2;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_area +areacello;area_t;get_areacello(area_t=var[0]);m-2;yt_ocean xt_ocean;longitude latitude;mon;ocean;area: sum;;CMIP6_Ofx;CM2;float32;1440;17700;ocean_month.nc-;tracer cell area;cell_area +bigthetao;temp;;deg_C;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;Conservative temperature;sea_water_conservative_temperature +deptho;ht;;m;yt_ocean xt_ocean;longitude latitude;mon;ocean;area: time: point;;CMIP6_Ofx;CM2;float32;1440;17700;ocean_month.nc-;ocean depth on t-cells;sea_floor_depth_below_geoid +difvho;diff_cbt_t;;m2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;CM2;float32;21600000;708;ocean_month.nc-;total vert diff_cbt(temp) (w/o neutral included);ocean_vertical_heat_diffusivity +evs;evap;;kg m-2 -s;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;mass flux from evaporation/condensation (>0 enters ocean);water_evaporation_flux +ficeberg2d;ice_calving;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;mass flux of land ice calving into ocean;water_flux_into_sea_water_from_icebergs +friver;runoff;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;mass flux of liquid river runoff entering ocean;water_flux_into_sea_water_from_rivers +fsitherm;melt;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;water flux transferred with sea ice form/melt (>0 enters ocean);water_flux_into_sea_water_due_to_sea_ice_thermodynamics +hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d;sum_vars(var[:3])+ var[3].sum(dim='st_ocean');W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water +hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z;sum_vars(var);W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water +hfevapds;sfc_hflux_from_water_evap;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;heat flux from evap transfer of water across ocean surface;temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water +hfibthermds2d;calving_melt_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;heat flux needed to melt calving ice (<0 cools ocean);heat_flux_into_sea_water_due_to_iceberg_thermodynamics +hflso;evap_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;latent heat flux into ocean (<0 cools ocean);surface_downward_latent_heat_flux +hfrainds;sfc_hflux_from_water_prec;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;heat flux from precip transfer of water across ocean surface;temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water +hfrunoffds2d;sfc_hflux_from_runoff;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;heat flux (relative to 0C) from liquid river runoff;temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water +hfsifrazil;frazil_3d;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice +hfsifrazil2d;frazil_3d;var[0].sum(dim='st_ocean');W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;vertical integral of ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice +hfsnthermds2d;fprec_melt_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;heat flux to melt frozen precip (<0 cools ocean);heat_flux_into_sea_water_due_to_snow_thermodynamics +hfsso;sens_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;sensible heat into ocean (<0 cools ocean);surface_downward_sensible_heat_flux +masscello;rho_dzt;;kg m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;t-cell rho*thickness;sea_water_mass_per_unit_area +mlotst;mld;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t +mlotst;mld;;m;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CM2_day;CM2;float32;432000;708;ocean_daily.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t +mlotstsq;mld_sq;;m2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;squared mixed layer depth determined by density criteria;square_of_ocean_mixed_layer_thickness_defined_by_sigma_t +msftmrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;latitude rho basin time;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;CM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction +msftmz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;latitude olevel basin time;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;CM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction +msftyrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;gridlatitude rho basin time;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;CM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction +msftyz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;gridlatitude olevel basin time;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;CM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction +obvfsq;bv_freq;var[0]**2;s-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;buoy freq at T-cell centre for use in neutral physics;square_of_brunt_vaisala_frequency_in_sea_water +ocontempdiff;temp_vdiffuse_diff_cbt;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;vert diffusion of heat due to diff_cbt;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing +ocontemppadvect;neutral_gm_temp;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*GM stirring (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection +ocontemppmdiff;neutral_diffusion_temp;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*explicit neutral diffusion tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion +ocontemppsmadvect;temp_submeso;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*submesoscale tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection +ocontemprmadvect;temp_advection neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection +ocontemprmadvect;temp_sweby_advect neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection +ocontemptend;temp_tendency;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;time tendency for tracer Conservative temperature;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content +omldamax;hblt_max;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: max;;CM2_mon;CM2;float32;432000;708;ocean_month.nc-;T-cell boundary layer depth from KPP;ocean_mixed_layer_thickness_defined_by_mixing_scheme +osaltdiff;salt_vdiffuse_diff_cbt;;kg m-2 -s;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;vert diffusion due to diff_cbt for Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing +osaltpadvect;neutral_gm_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;rho*dzt*GM stirring tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection +osaltpmdiff;neutral_diffusion_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;rho*dzt*explicit neutral diffusion tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion +osaltpsmadvect;salt_submeso;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;rho*dzt*submesoscale tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection +osaltrmadvect;salt_advection neutral_gm_salt salt_submeso;sum_vars(var);kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Salinity Expressed as Salt Content Due to Residual Mean Advection;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection +osalttend;salt_tendency;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;CM2;float32;21600000;708;ocean_month.nc-;time tendency for tracer Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content +pbo;pbot_t;var[0]*10000.;dbar;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;bottom pressure on T cells [Boussinesq (volume conserving) model];sea_water_pressure_at_sea_floor +prra;lprec;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;liquid precip (including ice melt/form) into ocean (>0 enters ocean);rainfall_flux +prsn;fprec;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;snow falling onto ocean (>0 enters ocean);snowfall_flux +pso;patm_t;;Pa;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;applied pressure on T cells;sea_water_pressure_at_sea_water_surface +rho0;pot_rho_0;;kg m-3;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;CM2;float32;21600000;708;ocean_month.nc-;potential density referenced to 0 dbar;sea_water_potential_density +rlntds;lw_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;longwave flux into ocean (<0 cools ocean);surface_net_downward_longwave_flux +rsdo;sw_heat;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;penetrative shortwave heating;downwelling_shortwave_flux_in_sea_water +rsntds;swflx;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;shortwave flux into ocean (>0 heats ocean);net_downward_shortwave_flux_at_sea_water_surface +sfdsi;sfc_salt_flux_ice;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;sfc_salt_flux_ice;downward_sea_ice_basal_salt_flux +sfriver;sfc_salt_flux_runoff;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;sfc_salt_flux_runoff;salt_flux_into_sea_water_from_rivers +sob;bottom_salt;;psu;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity_at_sea_floor +so;salt;;psu;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity +so;salt;;psu;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;CM2;float32;21600000;708;ocean_daily.nc-;Practical Salinity;sea_water_salinity +sos;sss;;psu;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_surface_salinity +sos;sss;;psu;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CMIP6_Oday;CM2;float32;432000;708;ocean_daily.nc-;Practical Salinity;sea_surface_salinity +tauuo;tau_x;;N m-2;time yu_ocean xu_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;i-directed wind stress forcing u-velocity;downward_x_stress_at_sea_water_surface +tauvo;tau_y;;N m-2;time yu_ocean xu_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;j-directed wind stress forcing v-velocity;downward_y_stress_at_sea_water_surface +tendkpp;temp_nonlocal_KPP;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;CM2;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*nonlocal tendency from KPP; +thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;Potential temperature;sea_water_potential_temperature +thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;CM2;float32;21600000;708;ocean_daily.nc-;Potential temperature;sea_water_potential_temperature +thkcello;dht;;m;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_thickness +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CMIP6_Oday;CM2;float32;432000;708;ocean_daily.nc-;Potential temperature;sea_surface_temperature +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time1;6hr;ocean;area: time: mean;;CM2_6hr;CM2;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature +umo;tx_trans;;kg/s;time st_ocean yt_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;T-cell i-mass transport;ocean_x_mass_transport +uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;i-current;sea_water_x_velocity +uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;CM2;float32;21600000;708;ocean_daily.nc-;i-current;sea_water_x_velocity +vmo;ty_trans;;kg/s;time st_ocean yu_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;T-cell j-mass transport;ocean_y_mass_transport +vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;j-current;sea_water_y_velocity +vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;CM2;float32;21600000;708;ocean_daily.nc-;j-current;sea_water_y_velocity +wfo;pme_river;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;mass flux of precip-evap+river via sbc (liquid, frozen, evaporation);water_flux_into_sea_water +wmo;tz_trans;;kg s-1;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;T-cell k-mass transport;upward_ocean_mass_transport +wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;21600000;708;ocean_month.nc-;dia-surface velocity T-points;upward_sea_water_velocity +wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;CM2;float32;21600000;708;ocean_daily.nc-;dia-surface velocity T-points;upward_sea_water_velocity +zos;sea_level;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;effective sea level (eta_t + patm/(rho0*g)) on T cells;sea_surface_height_above_geoid +zossq;sea_level_sq;;m2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;CM2;float32;432000;708;ocean_month.nc-;square of effective sea level (eta_t + patm/(rho0*g)) on T cells;square_of_sea_surface_height_above_geoid diff --git a/mappings/map_ocean_ESM1.5.csv b/mappings/map_ocean_ESM1.5.csv new file mode 100644 index 0000000..631f968 --- /dev/null +++ b/mappings/map_ocean_ESM1.5.csv @@ -0,0 +1,82 @@ +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +advectsweby;temp_sweby_advec;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;ESM1.5;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*sweby advect tendency; +agessc;age_global;;yr;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;Age (global);sea_water_age_since_surface_contact +areacello;dummy;get_areacello();1;time st_ocean yt_ocean xt_ocean;longitude latitude;mon;ocean;area: sum;;CMIP6_Ofx;ESM1.5;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_area +areacello;area_t;get_areacello(area_t=var[0]);m-2;yt_ocean xt_ocean;longitude latitude;mon;ocean;area: sum;;CMIP6_Ofx;ESM1.5;float32;1440;17700;ocean_month.nc-;tracer cell area;cell_area +bigthetao;temp;;deg_C;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;Conservative temperature;sea_water_conservative_temperature +deptho;ht;;m;yt_ocean xt_ocean;longitude latitude;mon;ocean;area: time: point;;CMIP6_Ofx;ESM1.5;float32;1440;17700;ocean_month.nc-;ocean depth on t-cells;sea_floor_depth_below_geoid +difvho;diff_cbt_t;;m2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;ESM1.5;float32;21600000;708;ocean_month.nc-;total vert diff_cbt(temp) (w/o neutral included);ocean_vertical_heat_diffusivity +evs;evap;;kg m-2 -s;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;mass flux from evaporation/condensation (>0 enters ocean);water_evaporation_flux +ficeberg2d;ice_calving;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;mass flux of land ice calving into ocean;water_flux_into_sea_water_from_icebergs +friver;runoff;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;mass flux of liquid river runoff entering ocean;water_flux_into_sea_water_from_rivers +fsitherm;melt;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;water flux transferred with sea ice form/melt (>0 enters ocean);water_flux_into_sea_water_due_to_sea_ice_thermodynamics +hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d;sum_vars(var[:3])+ var[3].sum(dim='st_ocean');W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water +hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z;sum_vars(var);W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water +hfevapds;sfc_hflux_from_water_evap;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;heat flux from evap transfer of water across ocean surface;temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water +hfibthermds2d;calving_melt_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;heat flux needed to melt calving ice (<0 cools ocean);heat_flux_into_sea_water_due_to_iceberg_thermodynamics +hflso;evap_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;latent heat flux into ocean (<0 cools ocean);surface_downward_latent_heat_flux +hfrainds;sfc_hflux_from_water_prec;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;heat flux from precip transfer of water across ocean surface;temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water +hfrunoffds2d;sfc_hflux_from_runoff;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;heat flux (relative to 0C) from liquid river runoff;temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water +hfsifrazil;frazil_3d;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice +hfsifrazil2d;frazil_3d;var[0].sum(dim='st_ocean');W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;vertical integral of ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice +hfsnthermds2d;fprec_melt_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;heat flux to melt frozen precip (<0 cools ocean);heat_flux_into_sea_water_due_to_snow_thermodynamics +hfsso;sens_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;sensible heat into ocean (<0 cools ocean);surface_downward_sensible_heat_flux +masscello;rho_dzt;;kg m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;t-cell rho*thickness;sea_water_mass_per_unit_area +mlotst;mld;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t +mlotst;mld;;m;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CM2_day;ESM1.5;float32;432000;708;ocean_daily.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t +mlotstsq;mld_sq;;m2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;squared mixed layer depth determined by density criteria;square_of_ocean_mixed_layer_thickness_defined_by_sigma_t +msftmrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;latitude rho basin time;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;ESM1.5;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction +msftmz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;latitude olevel basin time;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;ESM1.5;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction +msftyrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;gridlatitude rho basin time;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;ESM1.5;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction +msftyz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;gridlatitude olevel basin time;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;ESM1.5;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction +obvfsq;bv_freq;var[0]**2;s-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;buoy freq at T-cell centre for use in neutral physics;square_of_brunt_vaisala_frequency_in_sea_water +ocontempdiff;temp_vdiffuse_diff_cbt;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;vert diffusion of heat due to diff_cbt;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing +ocontemppadvect;neutral_gm_temp;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*GM stirring (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection +ocontemppmdiff;neutral_diffusion_temp;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*explicit neutral diffusion tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion +ocontemppsmadvect;temp_submeso;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*submesoscale tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection +ocontemprmadvect;temp_advection neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection +ocontemprmadvect;temp_sweby_advect neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection +ocontemptend;temp_tendency;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;time tendency for tracer Conservative temperature;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content +omldamax;hblt_max;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: max;;CM2_mon;ESM1.5;float32;432000;708;ocean_month.nc-;T-cell boundary layer depth from KPP;ocean_mixed_layer_thickness_defined_by_mixing_scheme +osaltdiff;salt_vdiffuse_diff_cbt;;kg m-2 -s;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;vert diffusion due to diff_cbt for Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing +osaltpadvect;neutral_gm_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;rho*dzt*GM stirring tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection +osaltpmdiff;neutral_diffusion_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;rho*dzt*explicit neutral diffusion tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion +osaltpsmadvect;salt_submeso;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;rho*dzt*submesoscale tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection +osaltrmadvect;salt_advection neutral_gm_salt salt_submeso;sum_vars(var);kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Salinity Expressed as Salt Content Due to Residual Mean Advection;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection +osalttend;salt_tendency;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;ESM1.5;float32;21600000;708;ocean_month.nc-;time tendency for tracer Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content +pbo;pbot_t;var[0]*10000.;dbar;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;bottom pressure on T cells [Boussinesq (volume conserving) model];sea_water_pressure_at_sea_floor +prra;lprec;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;liquid precip (including ice melt/form) into ocean (>0 enters ocean);rainfall_flux +prsn;fprec;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;snow falling onto ocean (>0 enters ocean);snowfall_flux +pso;patm_t;;Pa;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;applied pressure on T cells;sea_water_pressure_at_sea_water_surface +rho0;pot_rho_0;;kg m-3;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;ESM1.5;float32;21600000;708;ocean_month.nc-;potential density referenced to 0 dbar;sea_water_potential_density +rlntds;lw_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;longwave flux into ocean (<0 cools ocean);surface_net_downward_longwave_flux +rsdo;sw_heat;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;penetrative shortwave heating;downwelling_shortwave_flux_in_sea_water +rsntds;swflx;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;shortwave flux into ocean (>0 heats ocean);net_downward_shortwave_flux_at_sea_water_surface +sfdsi;sfc_salt_flux_ice;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;sfc_salt_flux_ice;downward_sea_ice_basal_salt_flux +sfriver;sfc_salt_flux_runoff;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;sfc_salt_flux_runoff;salt_flux_into_sea_water_from_rivers +sob;bottom_salt;;psu;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity_at_sea_floor +so;salt;;psu;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity +so;salt;;psu;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;ESM1.5;float32;21600000;708;ocean_daily.nc-;Practical Salinity;sea_water_salinity +sos;sss;;psu;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_surface_salinity +sos;sss;;psu;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CMIP6_Oday;ESM1.5;float32;432000;708;ocean_daily.nc-;Practical Salinity;sea_surface_salinity +tauuo;tau_x;;N m-2;time yu_ocean xu_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;i-directed wind stress forcing u-velocity;downward_x_stress_at_sea_water_surface +tauvo;tau_y;;N m-2;time yu_ocean xu_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;j-directed wind stress forcing v-velocity;downward_y_stress_at_sea_water_surface +tendkpp;temp_nonlocal_KPP;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;ESM1.5;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*nonlocal tendency from KPP; +thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;Potential temperature;sea_water_potential_temperature +thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;ESM1.5;float32;21600000;708;ocean_daily.nc-;Potential temperature;sea_water_potential_temperature +thkcello;dht;;m;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_thickness +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CMIP6_Oday;ESM1.5;float32;432000;708;ocean_daily.nc-;Potential temperature;sea_surface_temperature +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time1;6hr;ocean;area: time: mean;;CM2_6hr;ESM1.5;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature +umo;tx_trans;;kg/s;time st_ocean yt_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;T-cell i-mass transport;ocean_x_mass_transport +uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;i-current;sea_water_x_velocity +uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;ESM1.5;float32;21600000;708;ocean_daily.nc-;i-current;sea_water_x_velocity +vmo;ty_trans;;kg/s;time st_ocean yu_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;T-cell j-mass transport;ocean_y_mass_transport +vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;j-current;sea_water_y_velocity +vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;ESM1.5;float32;21600000;708;ocean_daily.nc-;j-current;sea_water_y_velocity +wfo;pme_river;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;mass flux of precip-evap+river via sbc (liquid, frozen, evaporation);water_flux_into_sea_water +wmo;tz_trans;;kg s-1;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;T-cell k-mass transport;upward_ocean_mass_transport +wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;21600000;708;ocean_month.nc-;dia-surface velocity T-points;upward_sea_water_velocity +wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;ESM1.5;float32;21600000;708;ocean_daily.nc-;dia-surface velocity T-points;upward_sea_water_velocity +zos;sea_level;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;effective sea level (eta_t + patm/(rho0*g)) on T cells;sea_surface_height_above_geoid +zossq;sea_level_sq;;m2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;ESM1.5;float32;432000;708;ocean_month.nc-;square of effective sea level (eta_t + patm/(rho0*g)) on T cells;square_of_sea_surface_height_above_geoid diff --git a/mappings/map_ocean_OM2.csv b/mappings/map_ocean_OM2.csv index 073e4b4..add7919 100644 --- a/mappings/map_ocean_OM2.csv +++ b/mappings/map_ocean_OM2.csv @@ -1,83 +1,82 @@ -#cmor_var;input_vars;calculation;units;dimensions;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name -advectsweby;temp_sweby_advec;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CM2_mon;OM2;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*sweby advect tendency; -agessc;age_global;;yr;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Age (global);sea_water_age_since_surface_contact -areacello;dummy;get_areacello();1;time st_ocean yt_ocean xt_ocean;mon;ocean;area: sum;;CMIP6_Ofx;OM2;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_area -areacello;area_t;get_areacello(area_t=var[0]);m-2;yt_ocean xt_ocean;mon;ocean;area: sum;;CMIP6_Ofx;OM2;float32;1440;17700;ocean_month.nc-;tracer cell area;cell_area -bigthetao;temp;;deg_C;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Conservative temperature;sea_water_conservative_temperature -deptho;ht;;m;yt_ocean xt_ocean;mon;ocean;area: time: point;;CMIP6_Ofx;OM2;float32;1440;17700;ocean_month.nc-;ocean depth on t-cells;sea_floor_depth_below_geoid -difvho;diff_cbt_t;;m2 s-1;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CM2_Omon;OM2;float32;21600000;708;ocean_month.nc-;total vert diff_cbt(temp) (w/o neutral included);ocean_vertical_heat_diffusivity -evs;evap;;kg m-2 -s;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux from evaporation/condensation (>0 enters ocean);water_evaporation_flux -ficeberg2d;ice_calving;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux of land ice calving into ocean;water_flux_into_sea_water_from_icebergs -friver;runoff;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux of liquid river runoff entering ocean;water_flux_into_sea_water_from_rivers -fsitherm;melt;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;water flux transferred with sea ice form/melt (>0 enters ocean);water_flux_into_sea_water_due_to_sea_ice_thermodynamics -hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d;sum_vars(var[:-1])+ var[3].sum(dim='st_ocean');W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water -hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z;sum_vars(var);W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water -hfevapds;sfc_hflux_from_water_evap;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux from evap transfer of water across ocean surface;temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water -hfibthermds2d;calving_melt_heat;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux needed to melt calving ice (<0 cools ocean);heat_flux_into_sea_water_due_to_iceberg_thermodynamics -hflso;evap_heat;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;latent heat flux into ocean (<0 cools ocean);surface_downward_latent_heat_flux -hfrainds;sfc_hflux_from_water_prec;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux from precip transfer of water across ocean surface;temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water -hfrunoffds2d;sfc_hflux_from_runoff;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux (relative to 0C) from liquid river runoff;temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water -#double check notes in seb email -hfsifrazil;frazil_3d;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice -hfsifrazil2d;frazil_3d;var[0].sum(dim='st_ocean');W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;vertical integral of ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice -hfsnthermds2d;fprec_melt_heat;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux to melt frozen precip (<0 cools ocean);heat_flux_into_sea_water_due_to_snow_thermodynamics -hfsso;sens_heat;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;sensible heat into ocean (<0 cools ocean);surface_downward_sensible_heat_flux -masscello;rho_dzt;;kg m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;t-cell rho*thickness;sea_water_mass_per_unit_area -mlotst;mld;;m;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t -mlotst;mld;;m;time yt_ocean xt_ocean;day;ocean;area: time: mean;;CM2_day;OM2;float32;432000;708;ocean_daily.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t -mlotstsq;mld_sq;;m2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;squared mixed layer depth determined by density criteria;square_of_ocean_mixed_layer_thickness_defined_by_sigma_t -msftmrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction -msftmz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction -msftyrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction -msftyz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction -obvfsq;bv_freq;var[0]**2;s-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;buoy freq at T-cell centre for use in neutral physics;square_of_brunt_vaisala_frequency_in_sea_water -ocontempdiff;temp_vdiffuse_diff_cbt;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;vert diffusion of heat due to diff_cbt;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing -ocontemppadvect;neutral_gm_temp;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*GM stirring (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection -ocontemppmdiff;neutral_diffusion_temp;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*explicit neutral diffusion tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion -ocontemppsmadvect;temp_submeso;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*submesoscale tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection -ocontemprmadvect;temp_advection neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection -ocontemprmadvect;temp_sweby_advect neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection -ocontemptend;temp_tendency;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;time tendency for tracer Conservative temperature;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content -omldamax;hblt_max;;m;time yt_ocean xt_ocean;mon;ocean;area: time: max;;CM2_Omon;OM2;float32;432000;708;ocean_month.nc-;T-cell boundary layer depth from KPP;ocean_mixed_layer_thickness_defined_by_mixing_scheme -osaltdiff;salt_vdiffuse_diff_cbt;;kg m-2 -s;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;vert diffusion due to diff_cbt for Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing -osaltpadvect;neutral_gm_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*GM stirring tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection -osaltpmdiff;neutral_diffusion_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*explicit neutral diffusion tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion -osaltpsmadvect;salt_submeso;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*submesoscale tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection -osaltrmadvect;salt_advection neutral_gm_salt salt_submeso;sum_vars(var);kg m-2 s-1;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Salinity Expressed as Salt Content Due to Residual Mean Advection;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection -osalttend;salt_tendency;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;time tendency for tracer Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content -pbo;pbot_t;var[0]*10000.;dbar;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;bottom pressure on T cells [Boussinesq (volume conserving) model];sea_water_pressure_at_sea_floor -prra;lprec;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;liquid precip (including ice melt/form) into ocean (>0 enters ocean);rainfall_flux -prsn;fprec;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;snow falling onto ocean (>0 enters ocean);snowfall_flux -pso;patm_t;;Pa;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;applied pressure on T cells;sea_water_pressure_at_sea_water_surface -rho0;pot_rho_0;;kg m-3;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CM2_Omon;OM2;float32;21600000;708;ocean_month.nc-;potential density referenced to 0 dbar;sea_water_potential_density -rlntds;lw_heat;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;longwave flux into ocean (<0 cools ocean);surface_net_downward_longwave_flux -rsdo;sw_heat;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;penetrative shortwave heating;downwelling_shortwave_flux_in_sea_water -rsntds;swflx;;W m-2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;shortwave flux into ocean (>0 heats ocean);net_downward_shortwave_flux_at_sea_water_surface -sfdsi;sfc_salt_flux_ice;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;sfc_salt_flux_ice;downward_sea_ice_basal_salt_flux -sfriver;sfc_salt_flux_runoff;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;sfc_salt_flux_runoff;salt_flux_into_sea_water_from_rivers -sob;bottom_salt;;psu;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity_at_sea_floor -so;salt;;psu;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity -so;salt;;psu;time st_ocean yt_ocean xt_ocean;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;Practical Salinity;sea_water_salinity -sos;sss;;psu;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_surface_salinity -sos;sss;;psu;time yt_ocean xt_ocean;day;ocean;area: time: mean;;CMIP6_Oday;OM2;float32;432000;708;ocean_daily.nc-;Practical Salinity;sea_surface_salinity -tauuo;tau_x;;N m-2;time yu_ocean xu_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;i-directed wind stress forcing u-velocity;downward_x_stress_at_sea_water_surface -tauvo;tau_y;;N m-2;time yu_ocean xu_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;j-directed wind stress forcing v-velocity;downward_y_stress_at_sea_water_surface -tendkpp;temp_nonlocal_KPP;;W m-2;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CM2_mon;OM2;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*nonlocal tendency from KPP; -thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Potential temperature;sea_water_potential_temperature -thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;Potential temperature;sea_water_potential_temperature -thkcello;dht;;m;time st_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_thickness -tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature -tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;day;ocean;area: time: mean;;CMIP6_Oday;OM2;float32;432000;708;ocean_daily.nc-;Potential temperature;sea_surface_temperature -tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;6hr;ocean;area: time: mean;;CM2_6hr;OM2;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature -umo;tx_trans;;kg/s;time st_ocean yt_ocean xu_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;T-cell i-mass transport;ocean_x_mass_transport -uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;i-current;sea_water_x_velocity -uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;i-current;sea_water_x_velocity -vmo;ty_trans;;kg/s;time st_ocean yu_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;T-cell j-mass transport;ocean_y_mass_transport -vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;j-current;sea_water_y_velocity -vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;j-current;sea_water_y_velocity -wfo;pme_river;;kg m-2 s-1;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux of precip-evap+river via sbc (liquid, frozen, evaporation);water_flux_into_sea_water -wmo;tz_trans;;kg s-1;time sw_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;T-cell k-mass transport;upward_ocean_mass_transport -wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;dia-surface velocity T-points;upward_sea_water_velocity -wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;dia-surface velocity T-points;upward_sea_water_velocity -zos;sea_level;;m;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;effective sea level (eta_t + patm/(rho0*g)) on T cells;sea_surface_height_above_geoid -zossq;sea_level_sq;;m2;time yt_ocean xt_ocean;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;square of effective sea level (eta_t + patm/(rho0*g)) on T cells;square_of_sea_surface_height_above_geoid +cmor_var;input_vars;calculation;units;dimensions;axes;frequency;realm;cell_methods;positive;cmor_table;version;vtype;size;nsteps;fpattern;long_name;standard_name +advectsweby;temp_sweby_advec;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;OM2;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*sweby advect tendency; +agessc;age_global;;yr;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Age (global);sea_water_age_since_surface_contact +areacello;dummy;get_areacello();1;time st_ocean yt_ocean xt_ocean;longitude latitude;mon;ocean;area: sum;;CMIP6_Ofx;OM2;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_area +areacello;area_t;get_areacello(area_t=var[0]);m-2;yt_ocean xt_ocean;longitude latitude;mon;ocean;area: sum;;CMIP6_Ofx;OM2;float32;1440;17700;ocean_month.nc-;tracer cell area;cell_area +bigthetao;temp;;deg_C;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Conservative temperature;sea_water_conservative_temperature +deptho;ht;;m;yt_ocean xt_ocean;longitude latitude;mon;ocean;area: time: point;;CMIP6_Ofx;OM2;float32;1440;17700;ocean_month.nc-;ocean depth on t-cells;sea_floor_depth_below_geoid +difvho;diff_cbt_t;;m2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;OM2;float32;21600000;708;ocean_month.nc-;total vert diff_cbt(temp) (w/o neutral included);ocean_vertical_heat_diffusivity +evs;evap;;kg m-2 -s;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux from evaporation/condensation (>0 enters ocean);water_evaporation_flux +ficeberg2d;ice_calving;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux of land ice calving into ocean;water_flux_into_sea_water_from_icebergs +friver;runoff;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux of liquid river runoff entering ocean;water_flux_into_sea_water_from_rivers +fsitherm;melt;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;water flux transferred with sea ice form/melt (>0 enters ocean);water_flux_into_sea_water_due_to_sea_ice_thermodynamics +hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d;sum_vars(var[:3])+ var[3].sum(dim='st_ocean');W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water +hfds;sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z;sum_vars(var);W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;downward heat flux at water surface;surface_downward_heat_flux_in_sea_water +hfevapds;sfc_hflux_from_water_evap;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux from evap transfer of water across ocean surface;temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water +hfibthermds2d;calving_melt_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux needed to melt calving ice (<0 cools ocean);heat_flux_into_sea_water_due_to_iceberg_thermodynamics +hflso;evap_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;latent heat flux into ocean (<0 cools ocean);surface_downward_latent_heat_flux +hfrainds;sfc_hflux_from_water_prec;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux from precip transfer of water across ocean surface;temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water +hfrunoffds2d;sfc_hflux_from_runoff;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux (relative to 0C) from liquid river runoff;temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water +hfsifrazil;frazil_3d;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice +hfsifrazil2d;frazil_3d;var[0].sum(dim='st_ocean');W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;vertical integral of ocn frazil heat flux over time step;heat_flux_into_sea_water_due_to_freezing_of_frazil_ice +hfsnthermds2d;fprec_melt_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;heat flux to melt frozen precip (<0 cools ocean);heat_flux_into_sea_water_due_to_snow_thermodynamics +hfsso;sens_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;sensible heat into ocean (<0 cools ocean);surface_downward_sensible_heat_flux +masscello;rho_dzt;;kg m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;t-cell rho*thickness;sea_water_mass_per_unit_area +mlotst;mld;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t +mlotst;mld;;m;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CM2_day;OM2;float32;432000;708;ocean_daily.nc-;mixed layer depth determined by density criteria;ocean_mixed_layer_thickness_defined_by_sigma_t +mlotstsq;mld_sq;;m2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;squared mixed layer depth determined by density criteria;square_of_ocean_mixed_layer_thickness_defined_by_sigma_t +msftmrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;latitude rho basin time;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction +msftmz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;latitude olevel basin time;mon;ocean;longitude: sum depth: sum time: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_meridional_overturning_mass_streamfunction +msftyrho;ty_trans_rho ty_trans_rho_gm;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;gridlatitude rho basin time;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction +msftyz;ty_trans ty_trans_gm ty_trans_submeso;calc_overt(var);kg s-1;time potrho grid_yu_ocean grid_xt_ocean;gridlatitude olevel basin time;mon;ocean;time: mean grid_longitude: mean;;CMIP6_Omon;OM2;float32;34560000;708;ocean_month.nc-;Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.;ocean_y_overturning_mass_streamfunction +obvfsq;bv_freq;var[0]**2;s-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;buoy freq at T-cell centre for use in neutral physics;square_of_brunt_vaisala_frequency_in_sea_water +ocontempdiff;temp_vdiffuse_diff_cbt;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;vert diffusion of heat due to diff_cbt;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing +ocontemppadvect;neutral_gm_temp;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*GM stirring (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection +ocontemppmdiff;neutral_diffusion_temp;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*explicit neutral diffusion tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion +ocontemppsmadvect;temp_submeso;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*cp*submesoscale tendency (heating);tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection +ocontemprmadvect;temp_advection neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection +ocontemprmadvect;temp_sweby_advect neutral_gm_temp temp_submeso;sum_vars(var);W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Conservative Temperature Expressed as Heat Content Due to Residual Mean Advection;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection +ocontemptend;temp_tendency;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;time tendency for tracer Conservative temperature;tendency_of_sea_water_conservative_temperature_expressed_as_heat_content +omldamax;hblt_max;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: max;;CM2_mon;OM2;float32;432000;708;ocean_month.nc-;T-cell boundary layer depth from KPP;ocean_mixed_layer_thickness_defined_by_mixing_scheme +osaltdiff;salt_vdiffuse_diff_cbt;;kg m-2 -s;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;vert diffusion due to diff_cbt for Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing +osaltpadvect;neutral_gm_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*GM stirring tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection +osaltpmdiff;neutral_diffusion_salt;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*explicit neutral diffusion tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion +osaltpsmadvect;salt_submeso;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;rho*dzt*submesoscale tendency for salt;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection +osaltrmadvect;salt_advection neutral_gm_salt salt_submeso;sum_vars(var);kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;432000;708;ocean_month.nc-;Tendency of Sea Water Salinity Expressed as Salt Content Due to Residual Mean Advection;tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection +osalttend;salt_tendency;;kg m-2 s-1;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Emon;OM2;float32;21600000;708;ocean_month.nc-;time tendency for tracer Practical Salinity;tendency_of_sea_water_salinity_expressed_as_salt_content +pbo;pbot_t;var[0]*10000.;dbar;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;bottom pressure on T cells [Boussinesq (volume conserving) model];sea_water_pressure_at_sea_floor +prra;lprec;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;liquid precip (including ice melt/form) into ocean (>0 enters ocean);rainfall_flux +prsn;fprec;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;snow falling onto ocean (>0 enters ocean);snowfall_flux +pso;patm_t;;Pa;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;applied pressure on T cells;sea_water_pressure_at_sea_water_surface +rho0;pot_rho_0;;kg m-3;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;OM2;float32;21600000;708;ocean_month.nc-;potential density referenced to 0 dbar;sea_water_potential_density +rlntds;lw_heat;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;longwave flux into ocean (<0 cools ocean);surface_net_downward_longwave_flux +rsdo;sw_heat;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;penetrative shortwave heating;downwelling_shortwave_flux_in_sea_water +rsntds;swflx;;W m-2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;shortwave flux into ocean (>0 heats ocean);net_downward_shortwave_flux_at_sea_water_surface +sfdsi;sfc_salt_flux_ice;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;sfc_salt_flux_ice;downward_sea_ice_basal_salt_flux +sfriver;sfc_salt_flux_runoff;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;sfc_salt_flux_runoff;salt_flux_into_sea_water_from_rivers +sob;bottom_salt;;psu;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity_at_sea_floor +so;salt;;psu;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Practical Salinity;sea_water_salinity +so;salt;;psu;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;Practical Salinity;sea_water_salinity +sos;sss;;psu;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;Practical Salinity;sea_surface_salinity +sos;sss;;psu;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CMIP6_Oday;OM2;float32;432000;708;ocean_daily.nc-;Practical Salinity;sea_surface_salinity +tauuo;tau_x;;N m-2;time yu_ocean xu_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;i-directed wind stress forcing u-velocity;downward_x_stress_at_sea_water_surface +tauvo;tau_y;;N m-2;time yu_ocean xu_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;j-directed wind stress forcing v-velocity;downward_y_stress_at_sea_water_surface +tendkpp;temp_nonlocal_KPP;;W m-2;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CM2_mon;OM2;float32;21600000;36;ocean_month.nc-;cp*rho*dzt*nonlocal tendency from KPP; +thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;Potential temperature;sea_water_potential_temperature +thetao;pot_temp;K_degC(var[0]);K;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;Potential temperature;sea_water_potential_temperature +thkcello;dht;;m;time st_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;t-cell thickness;cell_thickness +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time;day;ocean;area: time: mean;;CMIP6_Oday;OM2;float32;432000;708;ocean_daily.nc-;Potential temperature;sea_surface_temperature +tos;sst;K_degC(var[0]);K;time yt_ocean xt_ocean;longitude latitude time1;6hr;ocean;area: time: mean;;CM2_6hr;OM2;float32;432000;708;ocean_month.nc-;Potential temperature;sea_surface_temperature +umo;tx_trans;;kg/s;time st_ocean yt_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;T-cell i-mass transport;ocean_x_mass_transport +uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;i-current;sea_water_x_velocity +uo;u;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;i-current;sea_water_x_velocity +vmo;ty_trans;;kg/s;time st_ocean yu_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;T-cell j-mass transport;ocean_y_mass_transport +vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;j-current;sea_water_y_velocity +vo;v;;m s-1;time st_ocean yu_ocean xu_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;j-current;sea_water_y_velocity +wfo;pme_river;;kg m-2 s-1;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;mass flux of precip-evap+river via sbc (liquid, frozen, evaporation);water_flux_into_sea_water +wmo;tz_trans;;kg s-1;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;T-cell k-mass transport;upward_ocean_mass_transport +wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;21600000;708;ocean_month.nc-;dia-surface velocity T-points;upward_sea_water_velocity +wo;wt;;m/sec;time sw_ocean yt_ocean xt_ocean;longitude latitude olevel time;day;ocean;area: time: mean;;CM2_day;OM2;float32;21600000;708;ocean_daily.nc-;dia-surface velocity T-points;upward_sea_water_velocity +zos;sea_level;;m;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;effective sea level (eta_t + patm/(rho0*g)) on T cells;sea_surface_height_above_geoid +zossq;sea_level_sq;;m2;time yt_ocean xt_ocean;longitude latitude time;mon;ocean;area: time: mean;;CMIP6_Omon;OM2;float32;432000;708;ocean_month.nc-;square of effective sea level (eta_t + patm/(rho0*g)) on T cells;square_of_sea_surface_height_above_geoid diff --git a/pyproject.toml b/pyproject.toml index 51aac13..dd9fba3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,9 @@ optional-dependencies.test = { file = ["test-requirements.txt"] } where = ["src"] [tool.setuptools.package-data] -mopdata = ["*.json", "*.yaml", "*.db", "*.csv", "update_db.py"] +mopdata = ["*.json", "*.yaml", "*.db", "*.csv", + "update_db.py.txt", "cmor_tables/*.json"] +#"mopdata.cmor_tables" = ["cmor_tables/*.json"] # ... other project metadata fields as listed in: diff --git a/requirements.txt b/requirements.txt index 0953f2f..eeec916 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,5 @@ pyyaml dask python-dateutil cftime +metpy +gsw diff --git a/src/mopdata/access.db b/src/mopdata/access.db index 70be17f..29dc754 100644 Binary files a/src/mopdata/access.db and b/src/mopdata/access.db differ diff --git a/src/mopdata/access_dump.sql b/src/mopdata/access_dump.sql index 8d4a090..1109be7 100644 --- a/src/mopdata/access_dump.sql +++ b/src/mopdata/access_dump.sql @@ -20,6 +20,242 @@ CREATE TABLE cmorvar ( flag_meanings TEXT, ok_min_mean_abs TEXT, ok_max_mean_abs TEXT); +INSERT INTO cmorvar VALUES('tas-AM3_A1hrClimMon','1hrCM','atmos','air_temperature','K','area: mean time: mean within days time: mean over days','area: areacella','Air Temperature','Monthly Air Temperature averaged by hour of day','longitude latitude time3','tas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('co217-AM3_Amon','mon','atmos','mole_fraction_of_carbon_dioxide_in_air','mol mol-1','time: mean','area: areacella','Mole Fraction of CO2','Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.','longitude latitude plev17 time','co2','real','','','','','','',''); +INSERT INTO cmorvar VALUES('co2Clim17-AM3_Amon','monC','atmos','mole_fraction_of_carbon_dioxide_in_air','mol mol-1','area: mean time: mean within years time: mean over years','area: areacella','Mole Fraction of CO2','Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.','longitude latitude plev17 time2','co2','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hur17-AM3_Amon','mon','atmos','relative_humidity','%','time: mean','area: areacella','Relative Humidity','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude plev17 time','hur','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hus17-AM3_Amon','mon','atmos','specific_humidity','1','time: mean','area: areacella','Specific Humidity','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude plev17 time','hus','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hus17uvgrid-AM3_Amon','mon','atmos','specific_humidity','%','time: mean','area: areacella','Specific Humidity on pressure levels','Specific humidity is the mass fraction of water vapor in (moist) air. Defined on uv grid','longitude latitude plev17 time','hur','real','','','','','','',''); +INSERT INTO cmorvar VALUES('n2o17-AM3_Amon','mon','atmos atmosChem','mole_fraction_of_nitrous_oxide_in_air','mol mol-1','time: mean','area: areacella','Mole Fraction of N2O','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.','longitude latitude plev17 time','n2o','real','','','','','','',''); +INSERT INTO cmorvar VALUES('n2oClim17-AM3_Amon','monC','atmos atmosChem','mole_fraction_of_nitrous_oxide_in_air','mol mol-1','area: mean time: mean within years time: mean over years','area: areacella','Mole Fraction of N2O','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.','longitude latitude plev17 time2','n2o','real','','','','','','',''); +INSERT INTO cmorvar VALUES('o317-AM3_Amon','mon','atmos atmosChem','mole_fraction_of_ozone_in_air','mol mol-1','time: mean','area: areacella','Mole Fraction of O3','Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.','longitude latitude plev17 time','o3','real','','','','','','',''); +INSERT INTO cmorvar VALUES('o3Clim17-AM3_Amon','monC','atmos atmosChem','mole_fraction_of_ozone_in_air','mol mol-1','area: mean time: mean within years time: mean over years','area: areacella','Mole Fraction of O3','Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.','longitude latitude plev17 time2','o3','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta17-AM3_Amon','mon','atmos','air_temperature','K','time: mean','area: areacella','Air Temperature','Air Temperature','longitude latitude plev17 time','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ua17-AM3_Amon','mon','atmos','eastward_wind','m s-1','time: mean','area: areacella','Eastward Wind','Zonal wind (positive in a eastward direction).','longitude latitude plev17 time','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va17-AM3_Amon','mon','atmos','northward_wind','m s-1','time: mean','area: areacella','Northward Wind','Meridional wind (positive in a northward direction).','longitude latitude plev17 time','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wap17-AM3_Amon','mon','atmos','lagrangian_tendency_of_air_pressure','Pa s-1','time: mean','area: areacella','Omega (=dp/dt)','Omega (vertical velocity in pressure coordinates, positive downwards)','longitude latitude plev17 time','wap','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zg17-AM3_Amon','mon','atmos','geopotential_height','m','time: mean','area: areacella','Geopotential Height','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.','longitude latitude plev17 time','zg','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa17-AM3_Amon','mon','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev17 time','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa17uvgrid-AM3_Amon','mon','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention. Defined on uv grid','longitude latitude plev17 time','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ua17uvgrid-AM3_Amon','mon','atmos','eastward_wind','m s-1','time: mean','area: areacella','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction). Defined on uv grid','longitude latitude plev17 time','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va17uvgrid-AM3_Amon','mon','atmos','northward_wind','m s-1','time: mean','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction). Defined on uv grid','longitude latitude plev17 time','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta17uvgrid-AM3_Amon','mon','atmos','air_temperature','K','time: mean','area: areacella','Air Temperature on pressure levels','Air Temperature. Defined on uv grid','longitude latitude plev17 time','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hur17uvgrid-AM3_Amon','mon','atmos','relative_humidity','%','time: mean','area: areacella','Relative Humidity on pressure levels','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. Defined on uv grid','longitude latitude plev17 time','hur','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wap17uvgrid-AM3_Amon','mon','atmos','lagrangian_tendency_of_air_pressure','Pa s-1','time: mean','area: areacella','Omega (=dp/dt) on pressure levels','Omega (vertical velocity in pressure coordinates, positive downwards). Defined on uv grid','longitude latitude plev17 time','wap','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mrlqso-AM3_Amon','mon','land','mass_fraction_of_unfrozen_water_in_soil_moisture','1','area: mean where land time: mean','area: areacella','Average Layer Fraction of Liquid Moisture','Fraction of soil moisture mass in the liquid phase in each user-defined soil layer (3D variable)','longitude latitude sdepth time','mrlqso','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mrrob-AM3_Amon','mon','land','subsurface_runoff_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Subsurface Runoff','Runoff is the liquid water which drains from land. If not specified, ''runoff'' refers to the sum of surface runoff and subsurface drainage. In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','mrrob','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zg17uvgrid-AM3_Amon','mon','atmos','geopotential_height','m','time: mean','area: areacella','Geopotential Height on pressure levels','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. Defined on uv grid','longitude latitude plev17 time','zg','real','','','','','','',''); +INSERT INTO cmorvar VALUES('huslev1-AUS2200_A10min','subhrPt','atmos','surface_specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude time1','hus','real','','','','','','',''); +INSERT INTO cmorvar VALUES('evspsblpot-AUS2200_A10min','subhrPt','land','water_potential_evaporation_flux','kg m-2 s-1','area: mean where land time: point','area: areacella','Potential Evapotranspiration','at surface; potential flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)','longitude latitude time1','evspsblpot','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ts-AUS2200_A10min','subhrPt','atmos','surface_temperature','K','area: mean time: point','area: areacella','Surface Temperature','Temperature of the lower boundary of the atmosphere','longitude latitude time1','ts','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zmla-AUS2200_A10min','subhrPt','atmos','atmosphere_boundary_layer_thickness','m','area: time: point','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time1','zmla','real','','','','','','',''); +INSERT INTO cmorvar VALUES('pslev1-AUS2200_A10min','subhrPt','atmos','air_pressure','Pa','area: mean time: point','area: areacella','Pressure at Model bottom level','Air pressure on model level 1','longitude latitude alevel1 time1','pslev1','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ps-AUS2200_A10min','subhrPt','atmos','surface_air_pressure','Pa','area: mean time: point','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time1','ps','real','','','','','','',''); +INSERT INTO cmorvar VALUES('uas-AUS2200_A10min','subhrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Near-Surface Wind','Eastward component of the near-surface (usually, 10 meters) wind','longitude latitude time1 height10m','uas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('vas-AUS2200_A10min','subhrPt','atmos','northward_wind','m s-1','area: mean time: point','area: areacella','Northward Near-Surface Wind','Northward component of the near surface wind','longitude latitude time1 height10m','vas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tas-AUS2200_A10min','subhrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Near-Surface Air Temperature','near-surface (for access 1.5 meter) air temperature','longitude latitude time1 height1.5m','tas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('huss-AUS2200_A10min','subhrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Near-Surface Specific Humidity','Near-surface (for access 1.5 meter) specific humidity.','longitude latitude time1 height1.5m','huss','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tdps-AUS2200_A10min','subhrPt','atmos','dew_point_temperature','K','area: time: point','area: areacella','1.5m Dewpoint Temperature','Dew point temperature is the temperature at which a parcel of air reaches saturation upon being cooled at constant pressure and specific humidity.','longitude latitude height1.5m time1','tdps','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wsgmax10m-AUS2200_A10min','subhrPt','atmos','wind_speed_of_gust','m s-1','area: mean time: point','area: areacella','Maximum Wind Speed of Gust at 10m','Wind speed gust maximum at 10m above surface','longitude latitude time1 height10m','wsgmax10m','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wsgmax10m_max-AUS2200_A10min','subhr','atmos','wind_speed_of_gust','m s-1','area: mean time: maximum','area: areacella','Maximum Wind Speed of Gust at 10m','Wind speed gust maximum at 10m above surface','longitude latitude time height10m','wsgmax10m','real','','','','','','',''); +INSERT INTO cmorvar VALUES('reflmax-AUS2200_A10min','subhrPt','atmos','','dBZ','area: mean time: point','area: areacella','Maximum Radar Reflectivity in the grid column due to all hydrometeors','','longitude latitude time1','reflmax','real','','','','','','',''); +INSERT INTO cmorvar VALUES('pralsprof-AUS2200_A10min','subhr','atmos','stratiform_rainfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Rainfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsprof','real','','','','','','',''); +INSERT INTO cmorvar VALUES('pralsns-AUS2200_A10min','subhr','atmos','stratiform_snowfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Snowfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsns','real','','','','','','',''); +INSERT INTO cmorvar VALUES('cllow-AUS2200_A10min','subhrPt','atmos','low_type_cloud_area_fraction','1','area: time: point','area: areacella','Low Cloud Amount over column','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Low type clouds are: Stratus, Stratocumulus, Cumulus, Cumulonimbus.','longitude latitude time1','cllow','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clmed-AUS2200_A10min','subhrPt','atmos','medium_type_cloud_area_fraction','1','area: time: point','area: areacella','Medium Cloud Amount over column','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Middle type clouds are: Altostratus, Altocumulus, Nimbostratus.','longitude latitude time1','clmed','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clhigh-AUS2200_A10min','subhrPt','atmos','high_type_cloud_area_fraction','1','area: time: point','area: areacella','High Cloud Amount over column','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time1','clhigh','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clmxro-AUS2200_A10min','subhrPt','atmos','cloud_area_fraction','1','area: time: point','area: areacella','Cloud Area Fraction assuming maximum random overlap','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time1','clmxro','real','','','','','','',''); +INSERT INTO cmorvar VALUES('psl-AUS2200_A10min','subhrPt','atmos','air_pressure_at_mean_sea_level','Pa','area: time: point','area: areacella','Sea Level Pressure','Sea Level Pressure','longitude latitude time1','psl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('flashrate-AUS2200_A10min','subhrPt','atmos','frequency_of_lightning_flashes_per_unit_area','km-2 s-1','area: time: point','area: areacella','Lightning Flash Rate','units to be interpreted as counts km-2 s-1','longitude latitude time1','flashrate','real','','','','','','',''); +INSERT INTO cmorvar VALUES('storm-AUS2200_A10min','subhrPt','atmos','','1','area: time: point','area: areacella','Flag for location of Stormss','','longitude latitude time1','storm','real','','','','','','',''); +INSERT INTO cmorvar VALUES('nflash-AUS2200_A10min','subhr','atmos','','1','area: time: sum','area: areacella','Number of Lightning Flashes','','longitude latitude time','nflash','real','','','','','','',''); +INSERT INTO cmorvar VALUES('lwp-AUS2200_A10min','subhrPt','areosol','atmosphere_mass_content_of_cloud_liquid_water','kg m-2','area: time: point','area: areacella','Liquid Water Path','The total mass of liquid water in cloud per unit area.','longitude latitude time1','lwp','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clivi-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_content_of_cloud_ice','kg m-2','area: time: point','area: areacella','Ice Water Path','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.','longitude latitude time1','clivi','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prw-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_content_of_water_vapor','kg m-2','area: time: point','area: areacella','Water Vapor Path','vertically integrated through the atmospheric column','longitude latitude time1','prw','real','','','','','','',''); +INSERT INTO cmorvar VALUES('amdry-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column dry mass of air','vertically integrated through the atmospheric column','longitude latitude time1','amdry','real','','','','','','',''); +INSERT INTO cmorvar VALUES('amwet-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column wet mass of air','vertically integrated through the atmospheric column','longitude latitude time1','amwet','real','','','','','','',''); +INSERT INTO cmorvar VALUES('snw-AUS2200_A1hr','1hrPt','land','surface_snow_amount','kg m-2','area: mean where land time: point','area: areacella','Surface Snow Amount','The mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as missing where the land fraction is 0; excludes snow on vegetation canopy or on sea ice.','longitude latitude time1','snw','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ts-AUS2200_A1hr','1hrPt','atmos','surface_temperature','K','area: mean time: point','area: areacella','Surface Temperature','Temperature of the lower boundary of the atmosphere','longitude latitude time1','ts','real','','','','','','',''); +INSERT INTO cmorvar VALUES('siconca-AUS2200_A1hr','1hrPt','atmos','sea_ice_area_fraction','%','area: time: point','area: areacella','Sea-Ice Area Percentage (Atmospheric Grid)','Percentage of grid cell covered by sea ice','longitude latitude time1 typesi','siconca','real','','','','','','',''); +INSERT INTO cmorvar VALUES('rss-AUS2200_A1hr','1hr','atmos','surface_net_downward_shortwave_flux','W m-2','area: time: mean','area: areacella','Net Shortwave Surface Radiation','Net downward shortwave radiation at the surface','longitude latitude time','rss','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rss_Pt-AUS2200_A1hr','1hrPt','atmos','surface_net_downward_shortwave_flux','W m-2','area: time: point','area: areacella','Net Shortwave Surface Radiation','Net downward shortwave radiation at the surface','longitude latitude time1','rss','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rlut-AUS2200_A1hr','1hr','atmos','toa_outgoing_longwave_flux','W m-2','area: time: mean','area: areacella','TOA Outgoing Longwave Radiation','at the top of the atmosphere (to be compared with satellite measurements)','longitude latitude time','rlut','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('rlut_Pt-AUS2200_A1hr','1hrPt','atmos','toa_outgoing_longwave_flux','W m-2','area: time: point','area: areacella','TOA Outgoing Longwave Radiation','at the top of the atmosphere (to be compared with satellite measurements)','longitude latitude time1','rlut','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('rsdt-AUS2200_A1hr','1hr','atmos','toa_incoming_shortwave_flux','W m-2','area: time: mean','area: areacella','TOA Incident Shortwave Radiation','Shortwave radiation incident at the top of the atmosphere','longitude latitude time','rsdt','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rsdt_Pt-AUS2200_A1hr','1hrPt','atmos','toa_incoming_shortwave_flux','W m-2','area: time: point','area: areacella','TOA Incident Shortwave Radiation','Shortwave radiation incident at the top of the atmosphere','longitude latitude time1','rsdt','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rsut-AUS2200_A1hr','1hr','atmos','toa_outgoing_shortwave_flux','W m-2','area: time: mean','area: areacella','TOA Outgoing Shortwave Radiation','at the top of the atmosphere','longitude latitude time','rsut','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('rsds-AUS2200_A1hr','1hr','atmos','surface_downwelling_shortwave_flux_in_air','W m-2','area: time: mean','area: areacella','Surface Downwelling Shortwave Radiation','Surface solar irradiance for UV calculations.','longitude latitude time','rsds','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rsds_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_shortwave_flux_in_air','W m-2','area: time: point','area: areacella','Surface Downwelling Shortwave Radiation','Surface solar irradiance for UV calculations.','longitude latitude time1','rsds','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rls-AUS2200_A1hr','1hr','atmos','surface_net_downward_longwave_flux','W m-2','area: time: mean','area: areacella','Net Longwave Surface Radiation','Net longwave surface radiation','longitude latitude time','rls','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rls_Pt-AUS2200_A1hr','1hrPt','atmos','surface_net_downward_longwave_flux','W m-2','area: time: point','area: areacella','Net Longwave Surface Radiation','Net longwave surface radiation','longitude latitude time1','rls','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rlds-AUS2200_A1hr','1hr','atmos','surface_downwelling_longwave_flux_in_air','W m-2','area: time: mean','area: areacella','Surface Downwelling Longwave Radiation','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.','longitude latitude time','rlds','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rlds_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_longwave_flux_in_air','W m-2','area: time: point','area: areacella','Surface Downwelling Longwave Radiation','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.','longitude latitude time1','rlds','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('hfss-AUS2200_A1hr','1hr','atmos','surface_upward_sensible_heat_flux','W m-2','area: time: mean','area: areacella','Surface Upward Sensible Heat Flux','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.','longitude latitude time','hfss','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('hfss_Pt-AUS2200_A1hr','1hrPt','atmos','surface_upward_sensible_heat_flux','W m-2','area: time: point','area: areacella','Surface Upward Sensible Heat Flux','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.','longitude latitude time1','hfss','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('uas-AUS2200_A1hr','1hr','atmos','eastward_wind','m s-1','area: mean time: mean','area: areacella','Eastward Near-Surface Wind','Eastward component of the near-surface (usually, 10 meters) wind','longitude latitude time height10m','uas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('vas-AUS2200_A1hr','1hr','atmos','northward_wind','m s-1','area: mean time: mean','area: areacella','Northward Near-Surface Wind','Northward component of the near surface wind','longitude latitude time height10m','vas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hfls-AUS2200_A1hr','1hr','atmos','surface_upward_latent_heat_flux','W m-2','area: time: mean','area: areacella','Surface Upward Latent Heat Flux','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.','longitude latitude time','hfls','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('hfls_Pt-AUS2200_A1hr','1hrPt','atmos','surface_upward_latent_heat_flux','W m-2','area: time: point','area: areacella','Surface Upward Latent Heat Flux','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.','longitude latitude time1','hfls','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('tas-AUS2200_A1hr','1hr','atmos','air_temperature','K','area: mean time: mean','area: areacella','Near-Surface Air Temperature','near-surface (for access 1.5 meters) air temperature','longitude latitude time height1.5m','tas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tas_Pt-AUS2200_A1hr','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Near-Surface Air Temperature','near-surface (for access 1.5 meters) air temperature','longitude latitude time1 height1.5m','tas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hurs-AUS2200_A1hr','1hr','atmos','relative_humidity','%','area: time: mean','area: areacella','Near-Surface Relative Humidity','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hurs','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tdps-AUS2200_A1hr','1hr','atmos','dew_point_temperature','K','area: time: mean','area: areacella','2m Dewpoint Temperature','Dew point temperature is the temperature at which a parcel of air reaches saturation upon being cooled at constant pressure and specific humidity.','longitude latitude time','tdps','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prlsprof-AUS2200_A1hr','1hrPt','atmos','stratiform_rainfall_flux','kg m-2 s-1','area: mean time: point','area: areacella','Stratiform Rainfall Flux','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics. Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud.','longitude latitude alevel time1','prlsprof','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prlsns-AUS2200_A1hr','1hrPt','atmos','stratiform_snowfall_flux','kg m-2 s-1','area: mean time: point','area: areacella','Stratiform Snowfall Flux','large-scale precipitation of all forms of water in the solid phase.','longitude latitude alevel time1','prlsns','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mrsol-AUS2200_A1hr','1hrPt','land','mass_content_of_water_in_soil_layer','kg m-2','area: mean time: point','area: areacella','Total Water Content of Soil Layer','in each soil layer, the mass of water in all phases, including ice. Reported as ''missing'' for grid cells occupied entirely by ''sea''','longitude latitude sdepth time1','mrsol','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tsl-AUS2200_A1hr','1hrPt','land','soil_temperature','K','area: mean where land time: point','area: areacella','Temperature of Soil','Temperature of soil. Reported as missing for grid cells with no land.','longitude latitude time1 sdepth1','tsl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('cllow_Pt-AUS2200_A1hr','1hrPt','atmos','low_type_cloud_area_fraction','1','area: time: point','area: areacella','Low Cloud Amount','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Low type clouds are: Stratus, Stratocumulus, Cumulus, Cumulonimbus.','longitude latitude time1','cllow','real','','','','','','',''); +INSERT INTO cmorvar VALUES('cllow-AUS2200_A1hr','1hr','atmos','low_type_cloud_area_fraction','1','area: time: mean','area: areacella','Low Cloud Amount mean','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Low type clouds are: Stratus, Stratocumulus, Cumulus, Cumulonimbus.','longitude latitude time','cllow','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clmed_Pt-AUS2200_A1hr','1hrPt','atmos','medium_type_cloud_area_fraction','1','area: time: point','area: areacella','Medium Cloud Amount','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Middle type clouds are: Altostratus, Altocumulus, Nimbostratus.','longitude latitude time1','clmed','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clmed-AUS2200_A1hr','1hr','atmos','medium_type_cloud_area_fraction','1','area: time: mean','area: areacella','Medium Cloud Amount mean','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Middle type clouds are: Altostratus, Altocumulus, Nimbostratus.','longitude latitude time','clmed','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clhigh_Pt-AUS2200_A1hr','1hrPt','atmos','high_type_cloud_area_fraction','1','area: time: point','area: areacella','High Cloud Amount','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time1','clhigh','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clhigh-AUS2200_A1hr','1hr','atmos','medium_type_cloud_area_fraction','1','area: time: mean','area: areacella','High Cloud Amount mean','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time','clhigh','real','','','','','','',''); +INSERT INTO cmorvar VALUES('psl-AUS2200_A1hr','1hr','atmos','air_pressure_at_mean_sea_level','Pa','area: time: mean','area: areacella','Sea Level Pressure','Sea Level Pressure','longitude latitude time','psl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('psl_Pt-AUS2200_A1hr','1hrPt','atmos','air_pressure_at_mean_sea_level','Pa','area: time: point','area: areacella','Sea Level Pressure','Sea Level Pressure','longitude latitude time1','psl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('nflash-AUS2200_A1hr','1hr','atmos','','1','area: time: mean','area: areacella','Number of Lightning Flashes','','longitude latitude time','nflash','real','','','','','','',''); +INSERT INTO cmorvar VALUES('cli-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_cloud_ice_in_air','kg kg-1','area: time: point','area: areacella','Mass Fraction of Cloud Ice','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.','longitude latitude alevel time1','cli','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clw-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_cloud_liquid_water_in_air','kg kg-1','area: time: point','area: areacella','Mass Fraction of Cloud Liquid Water','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.','longitude latitude alevel time1','clw','real','','','','','','',''); +INSERT INTO cmorvar VALUES('cl-AUS2200_A1hr','1hrPt','atmos','cloud_area_fraction_in_atmosphere_layer','%','area: time: point','area: areacella','Percentage Cloud Cover','Percentage cloud cover, including both large-scale and convective cloud.','longitude latitude alevel time1','cl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clwvol-AUS2200_A1hr','1hrPt','atmos','','1','time: point','area: areacella','Liquid Cloud Volume Fraction in atmosphere layer','Includes both large-scale and convective cloud. This is calculated as the volume of cloud liquid water in the grid cell divided by the volume of the grid cell.','longitude latitude alevel time1','clwvol','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clivol-AUS2200_A1hr','1hrPt','atmos','','1','time: point','area: areacella','Ice Cloud Volume Fraction in atmosphere layer','Includes both large-scale and convective cloud. This is calculated as the volume of cloud ice in the grid cell divided by the volume of the grid cell.','longitude latitude alevel time1','clivol','real','','','','','','',''); +INSERT INTO cmorvar VALUES('rainmxrat-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_liquid_precipitation_in_air','1','area: mean time: point','area: areacella','Mass Fraction of Rain in Air','Rain mixing ratio','longitude latitude alevel time1','rainmxrat','real','','','','','','',''); +INSERT INTO cmorvar VALUES('grplmxrat-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_graupel_in_air','1','area: mean time: point','area: areacella','Graupel Mixing Ratio','Graupel mixing ratio','longitude latitude alevel time1','grplmxrat','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ua-AUS2200_A1hr','1hrPt','atmos','eastward_wind','m s-1','time: point','--OPT','Eastward Wind','Zonal wind (positive in a eastward direction).','longitude latitude alevel time1','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va-AUS2200_A1hr','1hrPt','atmos','northward_wind','m s-1','time: point','--OPT','Northward Wind','Meridional wind (positive in a northward direction).','longitude latitude alevel time1','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tke-AUS2200_A1hr','1hrPt','atmos','kinetic_energy_content_of_atmosphere_layer','J m-2','area: mean time: point','area: areacella','Turbulent Kinetic Energy','','longitude latitude alevel time1','tke','real','','','','','','',''); +INSERT INTO cmorvar VALUES('theta-AUS2200_A1hr','1hrPt','atmos','air_potential_temperature','K','area: mean time: point','area: areacella','Air Potential Temperature','Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure, typically representative of mean sea level pressure.','longitude latitude alevel time1','theta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hus-AUS2200_A1hr','1hrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude alevel time1','hus','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa-AUS2200_A1hr','1hrPt','atmos','upward_air_velocity','m s-1','area: time: point','area: areacella','Upward Air Velocity','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude alevel time1','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('phalf-AUS2200_A1hr','1hrPt','atmos','air_pressure','Pa','area: time: point','area: areacella','Pressure on Model Half-Levels','Air pressure on model half-levels','longitude latitude alevel time1','phalf','real','','','','','','',''); +INSERT INTO cmorvar VALUES('pfull-AUS2200_A1hr','1hrPt','atmos','air_pressure','Pa','area: mean time: point','area: areacella','Pressure at Model Full-Levels','Air pressure on model levels','longitude latitude alevel time1','pfull','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zfull-AUS2200_A1hr','1hrPt','atmos','height_above_reference_ellipsoid','m','area: mean time: point','area: areacella','Altitude of Model Full-Levels','Height of full model levels above a reference ellipsoid. A reference ellipsoid is a mathematical figure that approximates the geoid. The geoid is a surface of constant geopotential with which mean sea level would coincide if the ocean were at rest. The ellipsoid is an approximation because the geoid is an irregular shape. A number of reference ellipsoids are defined for use in the field of geodesy. To specify which reference ellipsoid is being used, a grid_mapping variable should be attached to the data variable as described in Chapter 5.6 of the CF Convention.','longitude latitude alevel time1','zfull','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zhalf-AUS2200_A1hr','1hrPt','atmos','height_above_reference_ellipsoid','m','area: mean time: point','area: areacella','Altitude of Model Half-Levels','Height of model half-levels above a reference ellipsoid. A reference ellipsoid is a mathematical figure that approximates the geoid. The geoid is a surface of constant geopotential with which mean sea level would coincide if the ocean were at rest. The ellipsoid is an approximation because the geoid is an irregular shape. A number of reference ellipsoids are defined for use in the field of geodesy. To specify which reference ellipsoid is being used, a grid_mapping variable should be attached to the data variable as described in Chapter 5.6 of the CF Convention.','longitude latitude alevhalf time1','zhalf','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta-AUS2200_A1hr','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude alevel time1','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zmla-AUS2200_A1hr','1hr','atmos','atmosphere_boundary_layer_thickness','m','area: time: mean','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time','zmla','real','','','','','','',''); +INSERT INTO cmorvar VALUES('orog-AUS2200_A1hr','1hrPt','land','surface_altitude','m','area: time: point','area: areacella','Surface Altitude','The surface called ''surface'' means the lower boundary of the atmosphere. Altitude is the (geometric) height above the geoid, which is the reference geopotential surface. The geoid is similar to mean sea level.','longitude latitude time1','orog','real','','','','','','',''); +INSERT INTO cmorvar VALUES('rsdsdiff-AUS2200_A1hr','1hr','atmos','surface_diffuse_downwelling_shortwave_flux_in_air','W m-2','area: time: mean','area: areacella','Surface Diffuse Downwelling Shortwave Radiation','Surface downwelling solar irradiance from diffuse radiation for UV calculations.','longitude latitude time','rsdsdiff','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('evspsbl-AUS2200_A1hr','1hr','land','water_evapotranspiration_flux','kg m-2 s-1','area: time: mean','area: areacella','Evaporation Including Sublimation and Transpiration','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)','longitude latitude time','evspsbl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('evspsbl_Pt-AUS2200_A1hr','1hrPt','land','water_evapotranspiration_flux','kg m-2 s-1','area: time: point','area: areacella','Evaporation Including Sublimation and Transpiration','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)','longitude latitude time1','evspsbl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('eow-AUS2200_A1hr','1hr','land','surface_water_evaporation_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Open Water Evaporation','Evaporation (conversion of liquid or solid into vapor) from open water. ','longitude latitude time','eow','real','','','','','','',''); +INSERT INTO cmorvar VALUES('estot-AUS2200_A1hr','1hr','land','','kg m-2','area: mean where land time: sum','area: areacella','Bare Soil Evaporation Amount','Water here means water in all phases. Evaporation is the conversion of liquid or solid into vapor. (The conversion of solid alone into vapor is called ''sublimation''.) Sum over timestep (1hr).','longitude latitude time','estot','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tasmin-AUS2200_A1hr','1hr','atmos','air_temperature','K','area: mean time: minimum','area: areacella','Hourly Minimum Near-Surface Air Temperature','minimum near-surface (for access 1.5 meter) air temperature (add cell_method attribute ''time: minimum'')','longitude latitude time height1.5m','tasmin','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tasmax-AUS2200_A1hr','1hr','atmos','air_temperature','K','area: mean time: maximum','area: areacella','Hourly Maximum Near-Surface Air Temperature','maximum near-surface (for access 1.5 meter) air temperature (add cell_method attribute ''time: maximum`'')','longitude latitude time height1.5m','tasmax','real','','','','','','',''); +INSERT INTO cmorvar VALUES('huss-AUS2200_A1hr','1hr','atmos','specific_humidity','1','area: mean time: mean','area: areacella','Near-Surface Specific Humidity','Near-surface (for access 1.5 meter) specific humidity.','longitude latitude time height1.5m','huss','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tauu-AUS2200_A1hr','1hr','atmos','surface_downward_eastward_stress','Pa','area: time: mean','area: areacella','Surface Downward Eastward Wind Stress','Downward eastward wind stress at the surface','longitude latitude time','tauu','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('tauu_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downward_eastward_stress','Pa','area: time: point','area: areacella','Surface Downward Eastward Wind Stress','Downward eastward wind stress at the surface','longitude latitude time1','tauu','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('tauv-AUS2200_A1hr','1hr','atmos','surface_downward_northward_stress','Pa','area: time: mean','area: areacella','Surface Downward Northward Wind Stress','Downward northward wind stress at the surface','longitude latitude time','tauv','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('tauv_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downward_northward_stress','Pa','area: time: point','area: areacella','Surface Downward Northward Wind Stress','Downward northward wind stress at the surface','longitude latitude time1','tauv','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('wsgmax10m-AUS2200_A1hr','1hr','atmos','wind_speed_of_gust','m s-1','area: mean time: maximum','area: areacella','Maximum Wind Speed of Gust at 10m','Wind speed gust maximum at 10m above surface','longitude latitude time height10m','wsgmax10m','real','','','','','','',''); +INSERT INTO cmorvar VALUES('cw-AUS2200_A1hr','1hrPt','land','canopy_water_amount','kg m-2','area: mean where land time: point','area: areacella','Total Canopy Water Storage','''Amount'' means mass per unit area. ''Water'' means water in all phases, including frozen i.e. ice and snow. ''Canopy'' means the plant or vegetation canopy. The canopy water is the water on the canopy.','longitude latitude time1','cw','real','','','','','','',''); +INSERT INTO cmorvar VALUES('sifllatstop-AUS2200_A1hr','1hrPt','seaIce','surface_upward_latent_heat_flux','W m-2','area: time: point','area: areacella','Net Latent Heat Flux over Sea Ice','the net latent heat flux over sea ice where sea_ice (mask=siconca)','longitude latitude time1','sifllatstop','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('mrso-AUS2200_A1hr','1hrPt','land','mass_content_of_water_in_soil','kg m-2','area: mean where land time: point','area: areacella','Total Soil Moisture Content','the mass per unit area (summed over all soil layers) of water in all phases.','longitude latitude time1','mrso','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mrsos-AUS2200_A1hr','1hrPt','land','mass_content_of_water_in_soil_layer','kg m-2','area: mean where land time: point','area: areacella','Moisture in Upper Portion of Soil Column','The mass of water in all phases in the upper 10cm of the soil layer.','longitude latitude time1 sdepth1','mrsos','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ps-AUS2200_A1hr','1hrPt','atmos','surface_air_pressure','Pa','area: mean time: point','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time1','ps','real','','','','','','',''); +INSERT INTO cmorvar VALUES('refl-AUS2200_A1hr','1hrPt','atmos','','dBZ','area: mean time: point','area: areacella','Radar Reflectivity in the grid column due to all hydrometeors','','longitude latitude alevel time1','refl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clmxro-AUS2200_A1hr','1hr','atmos','cloud_area_fraction','1','area: time: mean','area: areacella','Cloud Area Fraction assuming maximum random overlap','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time','clmxro','real','','','','','','',''); +INSERT INTO cmorvar VALUES('z0-AUS2200_A1hr','1hrPt','atmos','surface_roughness_length_for_momentum_in_air','m','area: time: point','area: areacella','Surface Roughness Length','','longitude latitude time1','z0','real','','','','','','',''); +INSERT INTO cmorvar VALUES('rsdscs-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','W m-2','area: time: point','area: areacella','Surface Downwelling Clear-Sky Shortwave Radiation','Surface solar irradiance clear sky for UV calculations','longitude latitude time1','rsdscs','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rldscs-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','W m-2','area: time: point','area: areacella','Surface Downwelling Clear-Sky Longwave Radiation','Surface downwelling clear-sky longwave radiation','longitude latitude time1','rldscs','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rsdsdir-AUS2200_A1hr','1hr','atmos','surface_direct_along_beam_shortwave_flux_in_air','W m-2','area: time: mean','area: areacella','Direct Surface Short Wave Flux : corrected','Corrected','longitude latitude time','rsdsdir','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('ua24-AUS2200_A1hrPlev','1hrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction).','longitude latitude plev24 time1','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va24-AUS2200_A1hrPlev','1hrPt','atmos','northward_wind','m s-1','area: mean time: point','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction).','longitude latitude plev24 time1','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hus24-AUS2200_A1hrPlev','1hrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity on pressure levels','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude plev24 time1','hus','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa24-AUS2200_A1hrPlev','1hrPt','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev24 time1','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta24-AUS2200_A1hrPlev','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude plev24 time1','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ua3-AUS2200_A1hrPlev','1hrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction).','longitude latitude plev3 time1','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va3-AUS2200_A1hrPlev','1hrPt','atmos','northward_wind','m s-1','area: mean time: point','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction).','longitude latitude plev3 time1','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hus3-AUS2200_A1hrPlev','1hrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity on pressure levels','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude plev3 time1','hus','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa3-AUS2200_A1hrPlev','1hrPt','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev3 time','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta3-AUS2200_A1hrPlev','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude plev3 time1','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('refl24-AUS2200_A1hrPlev','1hrPt','atmos','','dBZ','area: mean time: point','area: areacella','Radar Reflectivity in the grid column due to all hydrometeors','','longitude latitude plev24 time1','refl','real','','','','','','',''); +INSERT INTO cmorvar VALUES('theta24-AUS2200_A1hrPlev','1hrPt','atmos','air_potential_temperature','K','area: mean time: point','area: areacella','Air Potential Temperature','Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure, typically representative of mean sea level pressure.','longitude latitude plev24 time1','theta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zmla-AUS2200_A3hr','3hrPt','atmos','atmosphere_boundary_layer_thickness','m','area: time: point','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time1','zmla','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ps-AUS2200_A3hr','3hrPt','atmos','surface_air_pressure','Pa','area: mean time: point','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time1','ps','real','','','','','','',''); +INSERT INTO cmorvar VALUES('lwp-AUS2200_A3hr','3hrPt','areosol','atmosphere_mass_content_of_cloud_liquid_water','kg m-2','area: time: point','area: areacella','Liquid Water Path','The total mass of liquid water in cloud per unit area.','longitude latitude time1','lwp','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clivi-AUS2200_A3hr','3hrPt','atmos','atmosphere_mass_content_of_cloud_ice','kg m-2','area: time: point','area: areacella','Ice Water Path','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.','longitude latitude time1','clivi','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prw-AUS2200_A3hr','3hrPt','atmos','atmosphere_mass_content_of_water_vapor','kg m-2','area: time: point','area: areacella','Water Vapor Path','vertically integrated through the atmospheric column','longitude latitude time1','prw','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zg16-AUS2200_A3hr','3hrPt','atmos','geopotential_height','m','area: mean time: point','area: areacella','Geopotential Height on pressure levels','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.','longitude latitude plev16 time1','zg','real','','','','','','',''); +INSERT INTO cmorvar VALUES('orog-AUS2200_A6hr','6hrPt','land','surface_altitude','m','area: time: point','area: areacella','Surface Altitude','The surface called ''surface'' means the lower boundary of the atmosphere. Altitude is the (geometric) height above the geoid, which is the reference geopotential surface. The geoid is similar to mean sea level.','longitude latitude time1','orog','real','','','','','','',''); +INSERT INTO cmorvar VALUES('pralsprof-AUS2200_A6hr','6hr','atmos','stratiform_rainfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Rainfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsprof','real','','','','','','',''); +INSERT INTO cmorvar VALUES('pralsns-AUS2200_A6hr','6hr','atmos','stratiform_snowfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Snowfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsns','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ua16-AUS2200_A6hr','6hrPt','atmos','eastward_wind','m s-1','area: time: point','--OPT','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction).','longitude latitude plev16 time1','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va16-AUS2200_A6hr','6hrPt','atmos','northward_wind','m s-1','area: time: point','--OPT','Northward Wind on pressure levels','Meridional wind (positive in a northward direction).','longitude latitude plev16 time1','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa16-AUS2200_A6hr','6hrPt','atmos','upward_air_velocity','m s-1','area: mean time: point','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev16 time1','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wbptemp7h-AUS2200_A6hr','6hrPt','atmos','wet_bulb_potential_temperature','K','area: mean time: point','area: areacella','Wet Bulb Potential Temperature','Wet bulb potential temperature','longitude latitude plev7h time1','wbptemp','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zg16-AUS2200_A6hr','6hrPt','atmos','geopotential_height','m','area: mean time: point','area: areacella','Geopotential Height on pressure levels','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.','longitude latitude plev16 time1','zg','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta16-AUS2200_A6hr','6hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature on pressure levels','Air Temperature','longitude latitude plev16 time1','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hur16-AUS2200_A6hr','6hrPt','atmos','relative_humidity','%','area: mean time: point','area: areacella','Relative Humidity on pressure levels','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude plev16 time1','hur','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zg24-AUS2200_A6hr','6hrPt','atmos','geopotential_height','m','area: mean time: point','area: areacella','Geopotential Height on pressure levels','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.','longitude latitude plev24 time1','zg','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zmla-AUS2200_Aday','day','atmos','atmosphere_boundary_layer_thickness','m','area: time: mean','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time','zmla','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ps-AUS2200_Aday','day','atmos','surface_air_pressure','Pa','area: mean time: mean','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time','ps','real','','','','','','',''); +INSERT INTO cmorvar VALUES('lwp-AUS2200_Aday','day','aerosol','atmosphere_mass_content_of_cloud_liquid_water','kg m-2','area: time: mean','area: areacella','Liquid Water Path','The total mass of liquid water in cloud per unit area.','longitude latitude time','lwp','real','','','','','','',''); +INSERT INTO cmorvar VALUES('clivi-AUS2200_Aday','day','atmos','atmosphere_mass_content_of_cloud_ice','kg m-2','area: time: mean','area: areacella','Ice Water Path','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.','longitude latitude time','clivi','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prw-AUS2200_Aday','day','atmos','atmosphere_mass_content_of_water_vapor','kg m-2','area: time: mean','area: areacella','Water Vapor Path','vertically integrated through the atmospheric column','longitude latitude time','prw','real','','','','','','',''); +INSERT INTO cmorvar VALUES('lmask-AUS2200_fx','fx','land','land_binary_mask','%','area: mean','area: areacella','Indicates if cell grid is Land (1) or sea (0)','1 = land, 0 = sea','longitude latitude','lmask','integer','','','','','','',''); +INSERT INTO cmorvar VALUES('huss-CM2_3hr','3hrPt','atmos','specific_humidity','1','area: time: point','area: areacella','Near-Surface Specific Humidity (1.5m)','Near-surface (1.5 m) specific humidity.','longitude latitude time height1.5m','huss','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hurs-CM2_3hr','3hrPt','atmos','relative_humidity','%','area: mean time: point','area: areacella','Near-Surface Relative Humidity (1.5m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time1 height1.5m','hurs','real','','','','','','',''); +INSERT INTO cmorvar VALUES('rls-CM2_3hr','3hr','atmos','surface_net_downward_longwave_flux','W m-2','area: time: mean','area: areacella','Net Longwave Surface Radiation','Net longwave surface radiation','longitude latitude time','rls','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rss-CM2_3hr','3hr','atmos','surface_net_downward_shortwave_flux','W m-2','area: time: mean','area: areacella','Net Shortwave Surface Radiation','Net downward shortwave radiation at the surface','longitude latitude time','rss','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('tas-CM2_3hr','3hrPt','atmos','air_temperature','K','area: time: point','area: areacella','Near-Surface Air Temperature (1.5m)','near-surface (1.5m) air temperature','longitude latitude time height1.5m','tas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ua19-CM2_6hr','6hrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Wind','Zonal wind (positive in a eastward direction).','longitude latitude plev19 time1','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va19-CM2_6hr','6hrPt','atmos','northward_wind','m s-1','time: mean','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction). Defined on uv grid','longitude latitude plev19 time','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zg19-CM2_6hr','6hrPt','atmos','geopotential_height','m','time: point','area: areacella','Geopotential Height','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.','longitude latitude plev19 time','zg','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tos-CM2_6hr','6hrPt','ocean','sea_surface_temperature','degC','area: mean where sea time: point','area: areacello','Sea Surface Temperature','Temperature of upper boundary of the liquid ocean, including temperatures below sea-ice and floating ice shelves.','longitude latitude time1','tos','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta19-CM2_6hr','6hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude plev19 time1','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prrsn-CM2_day','day','atmos','mass_fraction_of_rainfall_falling_onto_surface_snow','1','area: mean where land time: mean','area: areacella','Fraction of Rainfall on Snow','The fraction of the grid averaged rainfall which falls on the snow pack','longitude latitude time','prrsn','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prsnc-CM2_day','day','atmos','convective_snowfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Convective Snowfall Flux','convective precipitation of all forms of water in the solid phase.','longitude latitude time','prsnc','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prra-CM2_day','day','atmos','rainfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Rainfall Flux over Land','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','prra','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prsnsn-CM2_day','day','atmos','mass_fraction_of_solid_precipitation_falling_onto_surface_snow','1','area: mean where land time: mean','area: areacella','Fraction of Snowfall (Including Hail and Graupel) on Snow','The fraction of the snowfall which falls on the snow pack','longitude latitude time','prsnsn','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mrrob-CM2_day','day','land','subsurface_runoff_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Subsurface Runoff','Runoff is the liquid water which drains from land. If not specified, ''runoff'' refers to the sum of surface runoff and subsurface drainage. In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','mrrob','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mrlqso-CM2_day','day','land','mass_fraction_of_unfrozen_water_in_soil_moisture','1','area: mean where land time: mean','area: areacella','Average Layer Fraction of Liquid Moisture','Fraction of soil moisture mass in the liquid phase in each user-defined soil layer (3D variable)','longitude latitude sdepth time','mrlqso','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hurs-CM2_day','day','atmos','relative_humidity','%','area: time: mean','area: areacella','Near-Surface Relative Humidity (1.5 m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hurs','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hursmax-CM2_day','day','atmos','relative_humidity','%','area: mean time: maximum','area: areacella','Daily Maximum Near-Surface Relative Humidity (1.5m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hursmax','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hursmin-CM2_day','day','atmos','relative_humidity','%','area: mean time: minimum','area: areacella','Daily Minimum Near-Surface Relative Humidity (1.5m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hursmin','real','','','','','','',''); +INSERT INTO cmorvar VALUES('huss-CM2_day','day','atmos','specific_humidity','1','area: time: mean','area: areacella','Near-Surface Specific Humidity (1.5m)','Near-surface (1.5 m) specific humidity.','longitude latitude time height1.5m','huss','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tas-CM2_day','day','atmos','air_temperature','K','area: time: mean','area: areacella','Near-Surface Air Temperature (1.5m)','near-surface (1.5m) air temperature','longitude latitude time height1.5m','tas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tasmax-CM2_day','day','atmos','air_temperature','K','area: mean time: maximum','area: areacella','Daily Maximum Near-Surface Air Temperature (1.5m)','maximum near-surface (1.5m) air temperature (add cell_method attribute ''time: max'')','longitude latitude time height1.5m','tasmax','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tasmin-CM2_day','day','atmos','air_temperature','K','area: mean time: minimum','area: areacella','Daily Minimum Near-Surface Air Temperature (1.5m)','minimum near-surface (1.5m) air temperature (add cell_method attribute ''time: min'')','longitude latitude time height1.5m','tasmin','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mlotst-CM2_day','day','ocean','ocean_mixed_layer_thickness_defined_by_sigma_t','m','area: mean where sea time: mean','area: areacello','Ocean Mixed Layer Thickness Defined by Sigma T','Sigma T is potential density referenced to ocean surface.','longitude latitude time','mlotst','real','','','','','','',''); +INSERT INTO cmorvar VALUES('uo-CM2_day','day','ocean','sea_water_x_velocity','m s-1','time: mean','--OPT','Sea Water X Velocity','Prognostic x-ward velocity component resolved by the model.','longitude latitude olevel time','uo','real','','','','','','',''); +INSERT INTO cmorvar VALUES('vo-CM2_day','day','ocean','sea_water_y_velocity','m s-1','time: mean','--OPT','Sea Water Y Velocity','Prognostic y-ward velocity component resolved by the model.','longitude latitude olevel time','vo','real','','','','','','',''); +INSERT INTO cmorvar VALUES('so-CM2_day','day','ocean','sea_water_salinity','0.001','area: mean where sea time: mean','area: areacello volume: volcello','Sea Water Salinity','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. ','longitude latitude olevel time','so','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wo-CM2_day','day','ocean','upward_sea_water_velocity','m s-1','time: mean','--OPT','Sea Water Vertical Velocity','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward).','longitude latitude olevel time','wo','real','','','','','','',''); +INSERT INTO cmorvar VALUES('thetao-CM2_day','day','ocean','sea_water_potential_temperature','degC','area: mean where sea time: mean','area: areacello volume: volcello','Sea Water Potential Temperature','Diagnostic should be contributed even for models using conservative temperature as prognostic field.','longitude latitude olevel time','thetao','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hur19-CM2_day','day','atmos','relative_humidity','%','time: mean','area: areacella','Relative Humidity','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude plev19 time','hur','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prrc-CM2_mon','mon','atmos','convective_rainfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Convective Rainfall Rate','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','prrc','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prra-CM2_mon','mon','atmos','rainfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Rainfall Flux over Land','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','prra','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prsnc-CM2_mon','mon','atmos','convective_snowfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Convective Snowfall Flux','convective precipitation of all forms of water in the solid phase.','longitude latitude time','prsnc','real','','','','','','',''); +INSERT INTO cmorvar VALUES('eow-CM2_mon','mon','land','surface_water_evaporation_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Open Water Evaporation','Evaporation (conversion of liquid or solid into vapor) from open water. ','longitude latitude time','eow','real','','','','','','',''); +INSERT INTO cmorvar VALUES('pfull-CM2_mon','mon','atmos','air_pressure','Pa','area: mean time: mean','area: areacella','Pressure at Model Full-Levels','Air pressure on model levels','longitude latitude alevel time','pfull','real','','','','','','',''); +INSERT INTO cmorvar VALUES('theta-CM2_mon','mon','atmos','air_potential_temperature','K','area: mean time: mean','area: areacella','Air Potential Temperature','Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure, typically representative of mean sea level pressure.','longitude latitude alevel time','theta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hfssuo-CM2_mon','mon','atmos','surface_upward_sensible_heat_flux','W m-2','area: mean where ice_free_sea over sea time: mean','area: areacella','Net Upward Sensible Heat Flux over Open Sea','the net sensible heat flux over open sea','longitude latitude time','hfssuo','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('rssntds-CM2_mon','mon','ocean','surface_net_downward_shortwave_flux','W m-2','area: mean where ice_free_sea over sea time: mean','area: areacello','Net Downward Shortwave Radiation where open sea','This is defined as ''where ice_free_sea over sea''','longitude latitude time','rssntds','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('rlntds-CM2_mon','mon','ocean','surface_net_downward_longwave_flux','W m-2','area: mean where ice_free_sea over sea time: mean','area: areacello','Surface Net Downward Longwave Radiation','This is defined as ''where ice_free_sea over sea''','longitude latitude time','rlntds','real','down','','','','','',''); +INSERT INTO cmorvar VALUES('evspsblvegLut-CM2_mon','mon','land','water_evaporation_flux_from_canopy','kg m-2 s-1','area: time: mean where sector','area: areacella','Evaporation from Canopy over Land-Use tiles','The canopy evaporation and sublimation (if present in model); may include dew formation as a negative flux.','longitude latitude landUse time','evspsblvegLut','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mrfsofr-CM2_mon','mon','land','mass_fraction_of_frozen_water_in_soil_moisture','1','area: mean where land time: mean','area: areacella','Average Layer Fraction of Frozen Moisture','Fraction of soil moisture mass in the solid phase in each user-defined soil layer (3D variable)','longitude latitude sdepth time','mrfsofr','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prlsprof-CM2_mon','mon','atmos','stratiform_rainfall_flux','kg m-2 s-1','area: mean time: mean','area: areacella','Stratiform Rainfall Flux','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics. Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud.','longitude latitude time','prlsprof','real','','','','','','',''); +INSERT INTO cmorvar VALUES('prlsns-CM2_mon','mon','atmos','stratiform_snowfall_flux','kg m-2 s-1','area: mean time: mean','area: areacella','Stratiform Snowfall Flux','large-scale precipitation of all forms of water in the solid phase.','longitude latitude time','prlsns','real','','','','','','',''); +INSERT INTO cmorvar VALUES('cw-CM2_mon','mon','land','canopy_water_amount','kg m-2','area: mean where land time: mean','area: areacella','Total Canopy Water Storage','''Amount'' means mass per unit area. ''Water'' means water in all phases, including frozen i.e. ice and snow. ''Canopy'' means the plant or vegetation canopy. The canopy water is the water on the canopy.','longitude latitude time','cw','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa19-CM2_mon','mon','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev19 time','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wa19uvgrid-CM2_mon','mon','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention. Defined on uv grid','longitude latitude plev19 time','wa','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ua19uvgrid-CM2_mon','mon','atmos','eastward_wind','m s-1','time: mean','area: areacella','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction). Defined on uv grid','longitude latitude plev19 time','ua','real','','','','','','',''); +INSERT INTO cmorvar VALUES('va19uvgrid-CM2_mon','mon','atmos','northward_wind','m s-1','time: mean','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction). Defined on uv grid','longitude latitude plev19 time','va','real','','','','','','',''); +INSERT INTO cmorvar VALUES('ta19uvgrid-CM2_mon','mon','atmos','air_temperature','K','time: mean','area: areacella','Air Temperature on pressure levels','Air Temperature. Defined on uv grid','longitude latitude plev19 time','ta','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hur19uvgrid-CM2_mon','mon','atmos','relative_humidity','%','time: mean','area: areacella','Relative Humidity on pressure levels','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. Defined on uv grid','longitude latitude plev19 time','hur','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hus19uvgrid-CM2_mon','mon','atmos','specific_humidity','%','time: mean','area: areacella','Specific Humidity on pressure levels','Specific humidity is the mass fraction of water vapor in (moist) air. Defined on uv grid','longitude latitude plev19 time','hur','real','','','','','','',''); +INSERT INTO cmorvar VALUES('wap19uvgrid-CM2_mon','mon','atmos','lagrangian_tendency_of_air_pressure','Pa s-1','time: mean','area: areacella','Omega (=dp/dt) on pressure levels','Omega (vertical velocity in pressure coordinates, positive downwards). Defined on uv grid','longitude latitude plev19 time','wap','real','','','','','','',''); +INSERT INTO cmorvar VALUES('zg19uvgrid-CM2_mon','mon','atmos','geopotential_height','m','time: mean','area: areacella','Geopotential Height on pressure levels','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. Defined on uv grid','longitude latitude plev19 time','zg','real','','','','','','',''); +INSERT INTO cmorvar VALUES('amdry-CM2_mon','mon','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column dry mass of air','vertically integrated through the atmospheric column','longitude latitude time','amdry','real','','','','','','',''); +INSERT INTO cmorvar VALUES('amwet-CM2_mon','mon','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column wet mass of air','vertically integrated through the atmospheric column','longitude latitude time','amwet','real','','','','','','',''); +INSERT INTO cmorvar VALUES('hurs-CM2_mon','mon','atmos','relative_humidity','%','area: time: mean','area: areacella','Near-Surface Relative Humidity (1.5 m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hurs','real','','','','','','',''); +INSERT INTO cmorvar VALUES('huss-CM2_mon','mon','atmos','specific_humidity','1','area: time: mean','area: areacella','Near-Surface Specific Humidity (1.5m)','Near-surface (1.5 m) specific humidity.','longitude latitude time height1.5m','huss','real','','','','','','',''); +INSERT INTO cmorvar VALUES('mc-CM2_mon','mon','atmos','atmosphere_net_upward_convective_mass_flux','kg m-2 s-1','area: time: mean','area: areacella','Convective Mass Flux','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.','longitude latitude alevel time','mc','real','up','','','','','',''); +INSERT INTO cmorvar VALUES('tas-CM2_mon','mon','atmos','air_temperature','K','area: time: mean','area: areacella','Near-Surface Air Temperature (1.5m)','near-surface (1.5m) air temperature','longitude latitude time height1.5m','tas','real','','','','','','',''); +INSERT INTO cmorvar VALUES('advectsweby-CM2_mon','mon','ocean','','W m-2','area: mean time: mean','area: areacello','Advect tendency from Sweby tracer advection scheme','This is defined as cp*rho*dzt*sweby advect tendency','longitude latitude olevel time','advectsweby','real','','','','','','',''); +INSERT INTO cmorvar VALUES('tendkpp-CM2_mon','mon','ocean','','W m-2','area: mean time: mean','area: areacello','non-local tendency arising from the KPP boundary layer parameterization','This is defined as cp*rho*dzt*nonlocal tendency from KPP','longitude latitude olevel time','tendkpp','real','','','','','','',''); +INSERT INTO cmorvar VALUES('omldamax-CM2_mon','mon','ocean','ocean_mixed_layer_thickness_defined_by_mixing_scheme','m','area: mean time: maximum','area: areacello','Mean Monthly Maximum Ocean Mixed Layer Thickness Defined by Mixing Scheme','The ocean mixed layer is the upper part of the ocean, regarded as being well-mixed. The base of the mixed layer defined by the mixing scheme is a diagnostic of ocean models. ''Thickness'' means the vertical extent of a layer.','longitude latitude time','omldamax','real','','','','','','',''); +INSERT INTO cmorvar VALUES('difvho-CM2_mon','mon','ocean','ocean_vertical_heat_diffusivity','m2 s-1','area: mean time: mean','area: areacello volume: volcello','Ocean Vertical Heat Diffusivity','Vertical/dianeutral diffusivity applied to prognostic temperature field.','longitude latitude olevel time','difvho','real','','','','','','',''); +INSERT INTO cmorvar VALUES('rho0-CM2_mon','mon','ocean','sea_water_potential_density','kg m-3','area: mean time: mean','area: areacello volume: volcello','Potential Density referenced to 0 dbar','','longitude latitude olevel time','rho0','real','','','','','','',''); INSERT INTO cmorvar VALUES('clt-CMIP6_3hr','3hr','atmos','cloud_area_fraction','%','area: time: mean','area: areacella','Total Cloud Cover Percentage','Total cloud area fraction (reported as a percentage) for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Includes both large-scale and convective cloud.','longitude latitude time','clt','real','','','','','','',''); INSERT INTO cmorvar VALUES('hfls-CMIP6_3hr','3hr','atmos','surface_upward_latent_heat_flux','W m-2','area: time: mean','area: areacella','Surface Upward Latent Heat Flux','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.','longitude latitude time','hfls','real','up','','','','','',''); INSERT INTO cmorvar VALUES('hfss-CMIP6_3hr','3hr','atmos','surface_upward_sensible_heat_flux','W m-2','area: time: mean','area: areacella','Surface Upward Sensible Heat Flux','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.','longitude latitude time','hfss','real','up','','','','','',''); @@ -2082,210 +2318,13 @@ INSERT INTO cmorvar VALUES('sndmasssnf-CMIP6_SImon','mon','seaIce','snowfall_flu INSERT INTO cmorvar VALUES('sndmasssubl-CMIP6_SImon','mon','seaIce','tendency_of_atmosphere_mass_content_of_water_vapor_due_to_sublimation_of_surface_snow_and_ice','kg m-2 s-1','area: time: mean where sea_ice (comment: mask=siconc)','area: areacello','Snow Mass Rate of Change Through Evaporation or Sublimation','the rate of change of snow mass through sublimation and evaporation divided by sea-ice area','longitude latitude time','sndmasssubl','real','','','','','','',''); INSERT INTO cmorvar VALUES('sndmasswindrif-CMIP6_SImon','mon','seaIce','tendency_of_surface_snow_amount_due_to_drifting_into_sea','kg m-2 s-1','area: time: mean where sea_ice (comment: mask=siconc)','area: areacello','Snow Mass Rate of Change Through Wind Drift of Snow','the rate of change of snow mass through wind drift of snow (from sea-ice into the sea) divided by sea-ice area','longitude latitude time','sndmasswindrif','real','','','','','','',''); INSERT INTO cmorvar VALUES('snmassacrossline-CMIP6_SImon','mon','seaIce','snow_transport_across_line_due_to_sea_ice_dynamics','kg s-1','time: mean','','Snow Mass Flux Through Straits','net (sum of transport in all directions) sea ice area transport through the following four passages, positive into the Arctic Ocean 1. Fram Strait = (11.5W,81.3N to (10.5E,79.6N) 2. Canadian Archipelago = (128.2W,70.6N) to (59.3W,82.1N) 3. Barents opening = (16.8E,76.5N) to (19.2E,70.2N) 4. Bering Strait = (171W,66.2N) to (166W,65N)','siline time','snmassacrossline','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ua-CM2_6hr','6hrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Wind','Zonal wind (positive in a eastward direction).','longitude latitude plev19 time1','ua','real','','','','','','',''); -INSERT INTO cmorvar VALUES('va-CM2_6hr','6hrPt','atmos','northward_wind','m s-1','time: mean','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction). Defined on uv grid','longitude latitude plev19 time','va','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zg-CM2_6hr','6hrPt','atmos','geopotential_height','m','time: point','area: areacella','Geopotential Height','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.','longitude latitude plev19 time','zg','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ta-CM2_6hr','6hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude plev19 time1','ta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prrsn-CM2_day','day','atmos','mass_fraction_of_rainfall_falling_onto_surface_snow','1','area: mean where land time: mean','area: areacella','Fraction of Rainfall on Snow','The fraction of the grid averaged rainfall which falls on the snow pack','longitude latitude time','prrsn','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prsnc-CM2_day','day','atmos','convective_snowfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Convective Snowfall Flux','convective precipitation of all forms of water in the solid phase.','longitude latitude time','prsnc','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prra-CM2_day','day','atmos','rainfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Rainfall Flux over Land','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','prra','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prsnsn-CM2_day','day','atmos','mass_fraction_of_solid_precipitation_falling_onto_surface_snow','1','area: mean where land time: mean','area: areacella','Fraction of Snowfall (Including Hail and Graupel) on Snow','The fraction of the snowfall which falls on the snow pack','longitude latitude time','prsnsn','real','','','','','','',''); -INSERT INTO cmorvar VALUES('mrrob-CM2_day','day','land','subsurface_runoff_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Subsurface Runoff','Runoff is the liquid water which drains from land. If not specified, ''runoff'' refers to the sum of surface runoff and subsurface drainage. In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','mrrob','real','','','','','','',''); -INSERT INTO cmorvar VALUES('mrlqso-CM2_day','day','land','mass_fraction_of_unfrozen_water_in_soil_moisture','1','area: mean where land time: mean','area: areacella','Average Layer Fraction of Liquid Moisture','Fraction of soil moisture mass in the liquid phase in each user-defined soil layer (3D variable)','longitude latitude sdepth time','mrlqso','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hurs-CM2_day','day','atmos','relative_humidity','%','area: time: mean','area: areacella','Near-Surface Relative Humidity (1.5 m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hurs','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hursmax-CM2_day','day','atmos','relative_humidity','%','area: mean time: maximum','area: areacella','Daily Maximum Near-Surface Relative Humidity (1.5m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hursmax','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hursmin-CM2_day','day','atmos','relative_humidity','%','area: mean time: minimum','area: areacella','Daily Minimum Near-Surface Relative Humidity (1.5m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hursmin','real','','','','','','',''); -INSERT INTO cmorvar VALUES('huss-CM2_day','day','atmos','specific_humidity','1','area: time: mean','area: areacella','Near-Surface Specific Humidity (1.5m)','Near-surface (1.5 m) specific humidity.','longitude latitude time height1.5m','huss','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tas-CM2_day','day','atmos','air_temperature','K','area: time: mean','area: areacella','Near-Surface Air Temperature (1.5m)','near-surface (1.5m) air temperature','longitude latitude time height1.5m','tas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tasmax-CM2_day','day','atmos','air_temperature','K','area: mean time: maximum','area: areacella','Daily Maximum Near-Surface Air Temperature (1.5m)','maximum near-surface (1.5m) air temperature (add cell_method attribute ''time: max'')','longitude latitude time height1.5m','tasmax','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tasmin-CM2_day','day','atmos','air_temperature','K','area: mean time: minimum','area: areacella','Daily Minimum Near-Surface Air Temperature (1.5m)','minimum near-surface (1.5m) air temperature (add cell_method attribute ''time: min'')','longitude latitude time height1.5m','tasmin','real','','','','','','',''); -INSERT INTO cmorvar VALUES('mlotst-CM2_day','day','ocean','ocean_mixed_layer_thickness_defined_by_sigma_t','m','area: mean where sea time: mean','area: areacello','Ocean Mixed Layer Thickness Defined by Sigma T','Sigma T is potential density referenced to ocean surface.','longitude latitude time','mlotst','real','','','','','','',''); -INSERT INTO cmorvar VALUES('uo-CM2_day','day','ocean','sea_water_x_velocity','m s-1','time: mean','--OPT','Sea Water X Velocity','Prognostic x-ward velocity component resolved by the model.','longitude latitude olevel time','uo','real','','','','','','',''); -INSERT INTO cmorvar VALUES('vo-CM2_day','day','ocean','sea_water_y_velocity','m s-1','time: mean','--OPT','Sea Water Y Velocity','Prognostic y-ward velocity component resolved by the model.','longitude latitude olevel time','vo','real','','','','','','',''); -INSERT INTO cmorvar VALUES('so-CM2_day','day','ocean','sea_water_salinity','0.001','area: mean where sea time: mean','area: areacello volume: volcello','Sea Water Salinity','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. ','longitude latitude olevel time','so','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wo-CM2_day','day','ocean','upward_sea_water_velocity','m s-1','time: mean','--OPT','Sea Water Vertical Velocity','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward).','longitude latitude olevel time','wo','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hur-CM2_day','day','atmos','relative_humidity','%','time: mean','area: areacella','Relative Humidity','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude plev19 time','hur','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prrc-CM2_mon','mon','atmos','convective_rainfall_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Convective Rainfall Rate','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics.','longitude latitude time','prrc','real','','','','','','',''); -INSERT INTO cmorvar VALUES('eow-CM2_mon','mon','land','surface_water_evaporation_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Open Water Evaporation','Evaporation (conversion of liquid or solid into vapor) from open water. ','longitude latitude time','eow','real','','','','','','',''); -INSERT INTO cmorvar VALUES('pfull-CM2_mon','mon','atmos','air_pressure','Pa','area: mean time: mean','area: areacella','Pressure at Model Full-Levels','Air pressure on model levels','longitude latitude alevel time2','pfull','real','','','','','','',''); -INSERT INTO cmorvar VALUES('theta-CM2_mon','mon','atmos','air_potential_temperature','K','area: mean time: mean','area: areacella','Air Potential Temperature','Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure, typically representative of mean sea level pressure.','longitude latitude alevel time','theta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hfssuo-CM2_mon','mon','atmos','surface_upward_sensible_heat_flux','W m-2','area: mean where ice_free_sea over sea time: mean','area: areacella','Net Upward Sensible Heat Flux over Open Sea','the net sensible heat flux over open sea','longitude latitude time','hfssuo','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('rssntds-CM2_mon','mon','ocean','surface_net_downward_shortwave_flux','W m-2','area: mean where ice_free_sea over sea time: mean','area: areacello','Net Downward Shortwave Radiation where open sea','This is defined as ''where ice_free_sea over sea''','longitude latitude time','rssntds','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rlntds-CM2_mon','mon','ocean','surface_net_downward_longwave_flux','W m-2','area: mean where ice_free_sea over sea time: mean','area: areacello','Surface Net Downward Longwave Radiation','This is defined as ''where ice_free_sea over sea''','longitude latitude time','rlntds','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('evspsblvegLut-CM2_mon','mon','land','water_evaporation_flux_from_canopy','kg m-2 s-1','area: time: mean where sector','area: areacella','Evaporation from Canopy over Land-Use tiles','The canopy evaporation and sublimation (if present in model); may include dew formation as a negative flux.','longitude latitude landUse time','evspsblvegLut','real','','','','','','',''); -INSERT INTO cmorvar VALUES('mrfsofr-CM2_mon','mon','land','mass_fraction_of_frozen_water_in_soil_moisture','1','area: mean where land time: mean','area: areacella','Average Layer Fraction of Frozen Moisture','Fraction of soil moisture mass in the solid phase in each user-defined soil layer (3D variable)','longitude latitude sdepth time','mrfsofr','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prlsprof-CM2_mon','mon','atmos','stratiform_rainfall_flux','kg m-2 s-1','area: mean time: mean','area: areacella','Stratiform Rainfall Flux','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics. Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud.','longitude latitude time','prlsprof','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prlsns-CM2_mon','mon','atmos','stratiform_snowfall_flux','kg m-2 s-1','area: mean time: mean','area: areacella','Stratiform Snowfall Flux','large-scale precipitation of all forms of water in the solid phase.','longitude latitude time','prlsns','real','','','','','','',''); -INSERT INTO cmorvar VALUES('cw-CM2_mon','mon','land','canopy_water_amount','kg m-2','area: mean where land time: mean','area: areacella','Total Canopy Water Storage','''Amount'' means mass per unit area. ''Water'' means water in all phases, including frozen i.e. ice and snow. ''Canopy'' means the plant or vegetation canopy. The canopy water is the water on the canopy.','longitude latitude time','cw','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wa19-CM2_mon','mon','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev19 time','wa','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wa19uvgrid-CM2_mon','mon','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention. Defined on uv grid','longitude latitude plev19 time','wa','real','','','','','','',''); -INSERT INTO cmorvar VALUES('uauvgrid-CM2_mon','mon','atmos','eastward_wind','m s-1','time: mean','area: areacella','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction). Defined on uv grid','longitude latitude plev19 time','ua','real','','','','','','',''); -INSERT INTO cmorvar VALUES('vauvgrid-CM2_mon','mon','atmos','northward_wind','m s-1','time: mean','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction). Defined on uv grid','longitude latitude plev19 time','va','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tauvgrid-CM2_mon','mon','atmos','air_temperature','K','time: mean','area: areacella','Air Temperature on pressure levels','Air Temperature. Defined on uv grid','longitude latitude plev19 time','ta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('huruvgrid-CM2_mon','mon','atmos','relative_humidity','%','time: mean','area: areacella','Relative Humidity on pressure levels','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. Defined on uv grid','longitude latitude plev19 time','hur','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wapuvgrid-CM2_mon','mon','atmos','lagrangian_tendency_of_air_pressure','Pa s-1','time: mean','area: areacella','Omega (=dp/dt) on pressure levels','Omega (vertical velocity in pressure coordinates, positive downwards). Defined on uv grid','longitude latitude plev19 time','wap','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zguvgrid-CM2_mon','mon','atmos','geopotential_height','m','time: mean','area: areacella','Geopotential Height on pressure levels','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. Defined on uv grid','longitude latitude plev19 time','zg','real','','','','','','',''); -INSERT INTO cmorvar VALUES('amdry-CM2_mon','mon','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column dry mass of air','vertically integrated through the atmospheric column','longitude latitude time','amdry','real','','','','','','',''); -INSERT INTO cmorvar VALUES('amwet-CM2_mon','mon','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column wet mass of air','vertically integrated through the atmospheric column','longitude latitude time','amwet','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hurs-CM2_mon','mon','atmos','relative_humidity','%','area: time: mean','area: areacella','Near-Surface Relative Humidity (1.5 m)','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hurs','real','','','','','','',''); -INSERT INTO cmorvar VALUES('huss-CM2_mon','mon','atmos','specific_humidity','1','area: time: mean','area: areacella','Near-Surface Specific Humidity (1.5m)','Near-surface (1.5 m) specific humidity.','longitude latitude time height1.5m','huss','real','','','','','','',''); -INSERT INTO cmorvar VALUES('mc-CM2_mon','mon','atmos','atmosphere_net_upward_convective_mass_flux','kg m-2 s-1','area: time: mean','area: areacella','Convective Mass Flux','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.','longitude latitude alevel time','mc','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('tas-CM2_mon','mon','atmos','air_temperature','K','area: time: mean','area: areacella','Near-Surface Air Temperature (1.5m)','near-surface (1.5m) air temperature','longitude latitude time height1.5m','tas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('advectsweby-CM2_mon','mon','ocean','','W m-2','area: mean time: mean','area: areacello','Advect tendency from Sweby tracer advection scheme','This is defined as cp*rho*dzt*sweby advect tendency','longitude latitude olevel time','advectsweby','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tendkpp-CM2_mon','mon','ocean','','W m-2','area: mean time: mean','area: areacello','non-local tendency arising from the KPP boundary layer parameterization','This is defined as cp*rho*dzt*nonlocal tendency from KPP','longitude latitude olevel time','tendkpp','real','','','','','','',''); -INSERT INTO cmorvar VALUES('huslev1-AUS2200_A10min','subhrPt','atmos','surface_specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude time1','hus','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ts-AUS2200_A10min','subhrPt','atmos','surface_temperature','K','area: mean time: point','area: areacella','Surface Temperature','Temperature of the lower boundary of the atmosphere','longitude latitude time1','ts','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zmla-AUS2200_A10min','subhrPt','atmos','atmosphere_boundary_layer_thickness','m','area: time: point','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time1','zmla','real','','','','','','',''); -INSERT INTO cmorvar VALUES('pslev1-AUS2200_A10min','subhrPt','atmos','air_pressure','Pa','area: mean time: point','area: areacella','Pressure at Model bottom level','Air pressure on model level 1','longitude latitude alevel1 time1','pslev1','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ps-AUS2200_A10min','subhrPt','atmos','surface_air_pressure','Pa','area: mean time: point','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time1','ps','real','','','','','','',''); -INSERT INTO cmorvar VALUES('uas-AUS2200_A10min','subhrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Near-Surface Wind','Eastward component of the near-surface (usually, 10 meters) wind','longitude latitude time1 height10m','uas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('vas-AUS2200_A10min','subhrPt','atmos','northward_wind','m s-1','area: mean time: point','area: areacella','Northward Near-Surface Wind','Northward component of the near surface wind','longitude latitude time1 height10m','vas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tas-AUS2200_A10min','subhrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Near-Surface Air Temperature','near-surface (for access 1.5 meter) air temperature','longitude latitude time1 height1.5m','tas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('huss-AUS2200_A10min','subhrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Near-Surface Specific Humidity','Near-surface (for access 1.5 meter) specific humidity.','longitude latitude time1 height1.5m','huss','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tdps-AUS2200_A10min','subhrPt','atmos','dew_point_temperature','K','area: time: point','area: areacella','1.5m Dewpoint Temperature','Dew point temperature is the temperature at which a parcel of air reaches saturation upon being cooled at constant pressure and specific humidity.','longitude latitude height1.5m time1','tdps','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wsgmax10m-AUS2200_A10min','subhrPt','atmos','wind_speed_of_gust','m s-1','area: mean time: point','area: areacella','Maximum Wind Speed of Gust at 10m','Wind speed gust maximum at 10m above surface','longitude latitude time1 height10m','wsgmax10m','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wsgmax10m_max-AUS2200_A10min','subhr','atmos','wind_speed_of_gust','m s-1','area: mean time: maximum','area: areacella','Maximum Wind Speed of Gust at 10m','Wind speed gust maximum at 10m above surface','longitude latitude time height10m','wsgmax10m','real','','','','','','',''); -INSERT INTO cmorvar VALUES('reflmax-AUS2200_A10min','subhrPt','atmos','','dBZ','area: mean time: point','area: areacella','Maximum Radar Reflectivity in the grid column due to all hydrometeors','','longitude latitude time1','reflmax','real','','','','','','',''); -INSERT INTO cmorvar VALUES('pralsprof-AUS2200_A10min','subhr','atmos','stratiform_rainfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Rainfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsprof','real','','','','','','',''); -INSERT INTO cmorvar VALUES('pralsns-AUS2200_A10min','subhr','atmos','stratiform_snowfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Snowfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsns','real','','','','','','',''); -INSERT INTO cmorvar VALUES('cllow-AUS2200_A10min','subhrPt','atmos','low_type_cloud_area_fraction','1','area: time: point','area: areacella','Low Cloud Amount over column','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Low type clouds are: Stratus, Stratocumulus, Cumulus, Cumulonimbus.','longitude latitude time1','cllow','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clmed-AUS2200_A10min','subhrPt','atmos','medium_type_cloud_area_fraction','1','area: time: point','area: areacella','Medium Cloud Amount over column','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Middle type clouds are: Altostratus, Altocumulus, Nimbostratus.','longitude latitude time1','clmed','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clhigh-AUS2200_A10min','subhrPt','atmos','high_type_cloud_area_fraction','1','area: time: point','area: areacella','High Cloud Amount over column','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time1','clhigh','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clmxro-AUS2200_A10min','subhrPt','atmos','cloud_area_fraction','1','area: time: point','area: areacella','Cloud Area Fraction assuming maximum random overlap','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time1','clmxro','real','','','','','','',''); -INSERT INTO cmorvar VALUES('psl-AUS2200_A10min','subhrPt','atmos','air_pressure_at_mean_sea_level','Pa','area: time: point','area: areacella','Sea Level Pressure','Sea Level Pressure','longitude latitude time1','psl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('flashrate-AUS2200_A10min','subhrPt','atmos','frequency_of_lightning_flashes_per_unit_area','km-2 s-1','area: time: point','area: areacella','Lightning Flash Rate','units to be interpreted as counts km-2 s-1','longitude latitude time1','flashrate','real','','','','','','',''); -INSERT INTO cmorvar VALUES('storm-AUS2200_A10min','subhrPt','atmos','','1','area: time: point','area: areacella','Flag for location of Stormss','','longitude latitude time1','storm','real','','','','','','',''); -INSERT INTO cmorvar VALUES('nflash-AUS2200_A10min','subhr','atmos','','1','area: time: sum','area: areacella','Number of Lightning Flashes','','longitude latitude time','nflash','real','','','','','','',''); -INSERT INTO cmorvar VALUES('lwp-AUS2200_A10min','subhrPt','areosol','atmosphere_mass_content_of_cloud_liquid_water','kg m-2','area: time: point','area: areacella','Liquid Water Path','The total mass of liquid water in cloud per unit area.','longitude latitude time1','lwp','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clivi-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_content_of_cloud_ice','kg m-2','area: time: point','area: areacella','Ice Water Path','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.','longitude latitude time1','clivi','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prw-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_content_of_water_vapor','kg m-2','area: time: point','area: areacella','Water Vapor Path','vertically integrated through the atmospheric column','longitude latitude time1','prw','real','','','','','','',''); -INSERT INTO cmorvar VALUES('amdry-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column dry mass of air','vertically integrated through the atmospheric column','longitude latitude time1','amdry','real','','','','','','',''); -INSERT INTO cmorvar VALUES('amwet-AUS2200_A10min','subhrPt','atmos','atmosphere_mass_per_unit_area','kg m-2','area: time: point','area: areacella','Total column wet mass of air','vertically integrated through the atmospheric column','longitude latitude time1','amwet','real','','','','','','',''); -INSERT INTO cmorvar VALUES('snw-AUS2200_A1hr','1hrPt','land','surface_snow_amount','kg m-2','area: mean where land time: point','area: areacella','Surface Snow Amount','The mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as missing where the land fraction is 0; excludes snow on vegetation canopy or on sea ice.','longitude latitude time1','snw','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ts-AUS2200_A1hr','1hrPt','atmos','surface_temperature','K','area: mean time: point','area: areacella','Surface Temperature','Temperature of the lower boundary of the atmosphere','longitude latitude time1','ts','real','','','','','','',''); -INSERT INTO cmorvar VALUES('siconca-AUS2200_A1hr','1hrPt','atmos','sea_ice_area_fraction','%','area: time: point','area: areacella','Sea-Ice Area Percentage (Atmospheric Grid)','Percentage of grid cell covered by sea ice','longitude latitude time1 typesi','siconca','real','','','','','','',''); -INSERT INTO cmorvar VALUES('rss-AUS2200_A1hr','1hr','atmos','surface_net_downward_shortwave_flux','W m-2','area: time: mean','area: areacella','Net Shortwave Surface Radiation','Net downward shortwave radiation at the surface','longitude latitude time','rss','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rss_Pt-AUS2200_A1hr','1hrPt','atmos','surface_net_downward_shortwave_flux','W m-2','area: time: point','area: areacella','Net Shortwave Surface Radiation','Net downward shortwave radiation at the surface','longitude latitude time1','rss','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rlut-AUS2200_A1hr','1hr','atmos','toa_outgoing_longwave_flux','W m-2','area: time: mean','area: areacella','TOA Outgoing Longwave Radiation','at the top of the atmosphere (to be compared with satellite measurements)','longitude latitude time','rlut','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('rlut_Pt-AUS2200_A1hr','1hrPt','atmos','toa_outgoing_longwave_flux','W m-2','area: time: point','area: areacella','TOA Outgoing Longwave Radiation','at the top of the atmosphere (to be compared with satellite measurements)','longitude latitude time1','rlut','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('rsdt-AUS2200_A1hr','1hr','atmos','toa_incoming_shortwave_flux','W m-2','area: time: mean','area: areacella','TOA Incident Shortwave Radiation','Shortwave radiation incident at the top of the atmosphere','longitude latitude time','rsdt','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rsdt_Pt-AUS2200_A1hr','1hrPt','atmos','toa_incoming_shortwave_flux','W m-2','area: time: point','area: areacella','TOA Incident Shortwave Radiation','Shortwave radiation incident at the top of the atmosphere','longitude latitude time1','rsdt','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rsut-AUS2200_A1hr','1hr','atmos','toa_outgoing_shortwave_flux','W m-2','area: time: mean','area: areacella','TOA Outgoing Shortwave Radiation','at the top of the atmosphere','longitude latitude time','rsut','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('rsds-AUS2200_A1hr','1hr','atmos','surface_downwelling_shortwave_flux_in_air','W m-2','area: time: mean','area: areacella','Surface Downwelling Shortwave Radiation','Surface solar irradiance for UV calculations.','longitude latitude time','rsds','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rsds_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_shortwave_flux_in_air','W m-2','area: time: point','area: areacella','Surface Downwelling Shortwave Radiation','Surface solar irradiance for UV calculations.','longitude latitude time1','rsds','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rls-AUS2200_A1hr','1hr','atmos','surface_net_downward_longwave_flux','W m-2','area: time: mean','area: areacella','Net Longwave Surface Radiation','Net longwave surface radiation','longitude latitude time','rls','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rls_Pt-AUS2200_A1hr','1hrPt','atmos','surface_net_downward_longwave_flux','W m-2','area: time: point','area: areacella','Net Longwave Surface Radiation','Net longwave surface radiation','longitude latitude time1','rls','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rlds-AUS2200_A1hr','1hr','atmos','surface_downwelling_longwave_flux_in_air','W m-2','area: time: mean','area: areacella','Surface Downwelling Longwave Radiation','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.','longitude latitude time','rlds','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rlds_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_longwave_flux_in_air','W m-2','area: time: point','area: areacella','Surface Downwelling Longwave Radiation','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.','longitude latitude time1','rlds','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('hfss-AUS2200_A1hr','1hr','atmos','surface_upward_sensible_heat_flux','W m-2','area: time: mean','area: areacella','Surface Upward Sensible Heat Flux','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.','longitude latitude time','hfss','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('hfss_Pt-AUS2200_A1hr','1hrPt','atmos','surface_upward_sensible_heat_flux','W m-2','area: time: point','area: areacella','Surface Upward Sensible Heat Flux','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.','longitude latitude time1','hfss','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('uas-AUS2200_A1hr','1hr','atmos','eastward_wind','m s-1','area: mean time: mean','area: areacella','Eastward Near-Surface Wind','Eastward component of the near-surface (usually, 10 meters) wind','longitude latitude time height10m','uas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('vas-AUS2200_A1hr','1hr','atmos','northward_wind','m s-1','area: mean time: mean','area: areacella','Northward Near-Surface Wind','Northward component of the near surface wind','longitude latitude time height10m','vas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hfls-AUS2200_A1hr','1hr','atmos','surface_upward_latent_heat_flux','W m-2','area: time: mean','area: areacella','Surface Upward Latent Heat Flux','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.','longitude latitude time','hfls','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('hfls_Pt-AUS2200_A1hr','1hrPt','atmos','surface_upward_latent_heat_flux','W m-2','area: time: point','area: areacella','Surface Upward Latent Heat Flux','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.','longitude latitude time1','hfls','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('tas-AUS2200_A1hr','1hr','atmos','air_temperature','K','area: mean time: mean','area: areacella','Near-Surface Air Temperature','near-surface (for access 1.5 meters) air temperature','longitude latitude time height1.5m','tas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tas_Pt-AUS2200_A1hr','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Near-Surface Air Temperature','near-surface (for access 1.5 meters) air temperature','longitude latitude time1 height1.5m','tas','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hurs-AUS2200_A1hr','1hr','atmos','relative_humidity','%','area: time: mean','area: areacella','Near-Surface Relative Humidity','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude time height1.5m','hurs','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tdps-AUS2200_A1hr','1hr','atmos','dew_point_temperature','K','area: time: mean','area: areacella','2m Dewpoint Temperature','Dew point temperature is the temperature at which a parcel of air reaches saturation upon being cooled at constant pressure and specific humidity.','longitude latitude time','tdps','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prlsprof-AUS2200_A1hr','1hrPt','atmos','stratiform_rainfall_flux','kg m-2 s-1','area: mean time: point','area: areacella','Stratiform Rainfall Flux','In accordance with common usage in geophysical disciplines, ''flux'' implies per unit area, called ''flux density'' in physics. Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud.','longitude latitude alevel time1','prlsprof','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prlsns-AUS2200_A1hr','1hrPt','atmos','stratiform_snowfall_flux','kg m-2 s-1','area: mean time: point','area: areacella','Stratiform Snowfall Flux','large-scale precipitation of all forms of water in the solid phase.','longitude latitude alevel time1','prlsns','real','','','','','','',''); -INSERT INTO cmorvar VALUES('mrsol-AUS2200_A1hr','1hrPt','land','mass_content_of_water_in_soil_layer','kg m-2','area: mean time: point','area: areacella','Total Water Content of Soil Layer','in each soil layer, the mass of water in all phases, including ice. Reported as ''missing'' for grid cells occupied entirely by ''sea''','longitude latitude sdepth time1','mrsol','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tsl-AUS2200_A1hr','1hrPt','land','soil_temperature','K','area: mean where land time: point','area: areacella','Temperature of Soil','Temperature of soil. Reported as missing for grid cells with no land.','longitude latitude time1 sdepth1','tsl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('cllow_Pt-AUS2200_A1hr','1hrPt','atmos','low_type_cloud_area_fraction','1','area: time: point','area: areacella','Low Cloud Amount','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Low type clouds are: Stratus, Stratocumulus, Cumulus, Cumulonimbus.','longitude latitude time1','cllow','real','','','','','','',''); -INSERT INTO cmorvar VALUES('cllow-AUS2200_A1hr','1hr','atmos','low_type_cloud_area_fraction','1','area: time: mean','area: areacella','Low Cloud Amount mean','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Low type clouds are: Stratus, Stratocumulus, Cumulus, Cumulonimbus.','longitude latitude time','cllow','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clmed_Pt-AUS2200_A1hr','1hrPt','atmos','medium_type_cloud_area_fraction','1','area: time: point','area: areacella','Medium Cloud Amount','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Middle type clouds are: Altostratus, Altocumulus, Nimbostratus.','longitude latitude time1','clmed','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clmed-AUS2200_A1hr','1hr','atmos','medium_type_cloud_area_fraction','1','area: time: mean','area: areacella','Medium Cloud Amount mean','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. Middle type clouds are: Altostratus, Altocumulus, Nimbostratus.','longitude latitude time','clmed','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clhigh_Pt-AUS2200_A1hr','1hrPt','atmos','high_type_cloud_area_fraction','1','area: time: point','area: areacella','High Cloud Amount','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time1','clhigh','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clhigh-AUS2200_A1hr','1hr','atmos','medium_type_cloud_area_fraction','1','area: time: mean','area: areacella','High Cloud Amount mean','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time','clhigh','real','','','','','','',''); -INSERT INTO cmorvar VALUES('psl-AUS2200_A1hr','1hr','atmos','air_pressure_at_mean_sea_level','Pa','area: time: mean','area: areacella','Sea Level Pressure','Sea Level Pressure','longitude latitude time','psl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('psl_Pt-AUS2200_A1hr','1hrPt','atmos','air_pressure_at_mean_sea_level','Pa','area: time: point','area: areacella','Sea Level Pressure','Sea Level Pressure','longitude latitude time1','psl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('nflash-AUS2200_A1hr','1hr','atmos','','1','area: time: mean','area: areacella','Number of Lightning Flashes','','longitude latitude time','nflash','real','','','','','','',''); -INSERT INTO cmorvar VALUES('cli-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_cloud_ice_in_air','kg kg-1','area: time: point','area: areacella','Mass Fraction of Cloud Ice','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.','longitude latitude alevel time1','cli','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clw-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_cloud_liquid_water_in_air','kg kg-1','area: time: point','area: areacella','Mass Fraction of Cloud Liquid Water','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.','longitude latitude alevel time1','clw','real','','','','','','',''); -INSERT INTO cmorvar VALUES('cl-AUS2200_A1hr','1hrPt','atmos','cloud_area_fraction_in_atmosphere_layer','%','area: time: point','area: areacella','Percentage Cloud Cover','Percentage cloud cover, including both large-scale and convective cloud.','longitude latitude alevel time1','cl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clwvol-AUS2200_A1hr','1hrPt','atmos','','1','time: point','area: areacella','Liquid Cloud Volume Fraction in atmosphere layer','Includes both large-scale and convective cloud. This is calculated as the volume of cloud liquid water in the grid cell divided by the volume of the grid cell.','longitude latitude alevel time1','clwvol','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clivol-AUS2200_A1hr','1hrPt','atmos','','1','time: point','area: areacella','Ice Cloud Volume Fraction in atmosphere layer','Includes both large-scale and convective cloud. This is calculated as the volume of cloud ice in the grid cell divided by the volume of the grid cell.','longitude latitude alevel time1','clivol','real','','','','','','',''); -INSERT INTO cmorvar VALUES('rainmxrat-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_liquid_precipitation_in_air','1','area: mean time: point','area: areacella','Mass Fraction of Rain in Air','Rain mixing ratio','longitude latitude alevel time1','rainmxrat','real','','','','','','',''); -INSERT INTO cmorvar VALUES('grplmxrat-AUS2200_A1hr','1hrPt','atmos','mass_fraction_of_graupel_in_air','1','area: mean time: point','area: areacella','Graupel Mixing Ratio','Graupel mixing ratio','longitude latitude alevel time1','grplmxrat','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ua-AUS2200_A1hr','1hrPt','atmos','eastward_wind','m s-1','time: point','--OPT','Eastward Wind','Zonal wind (positive in a eastward direction).','longitude latitude alevel time1','ua','real','','','','','','',''); -INSERT INTO cmorvar VALUES('va-AUS2200_A1hr','1hrPt','atmos','northward_wind','m s-1','time: point','--OPT','Northward Wind','Meridional wind (positive in a northward direction).','longitude latitude alevel time1','va','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tke-AUS2200_A1hr','1hrPt','atmos','kinetic_energy_content_of_atmosphere_layer','J m-2','area: mean time: point','area: areacella','Turbulent Kinetic Energy','','longitude latitude alevel time1','tke','real','','','','','','',''); -INSERT INTO cmorvar VALUES('theta-AUS2200_A1hr','1hrPt','atmos','air_potential_temperature','K','area: mean time: point','area: areacella','Air Potential Temperature','Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure, typically representative of mean sea level pressure.','longitude latitude alevel time1','theta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hus-AUS2200_A1hr','1hrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude alevel time1','hus','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wa-AUS2200_A1hr','1hrPt','atmos','upward_air_velocity','m s-1','area: time: point','area: areacella','Upward Air Velocity','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude alevel time1','wa','real','','','','','','',''); -INSERT INTO cmorvar VALUES('phalf-AUS2200_A1hr','1hrPt','atmos','air_pressure','Pa','area: time: point','area: areacella','Pressure on Model Half-Levels','Air pressure on model half-levels','longitude latitude alevel time1','phalf','real','','','','','','',''); -INSERT INTO cmorvar VALUES('pfull-AUS2200_A1hr','1hrPt','atmos','air_pressure','Pa','area: mean time: point','area: areacella','Pressure at Model Full-Levels','Air pressure on model levels','longitude latitude alevel time1','pfull','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zfull-AUS2200_A1hr','1hrPt','atmos','height_above_reference_ellipsoid','m','area: mean time: point','area: areacella','Altitude of Model Full-Levels','Height of full model levels above a reference ellipsoid. A reference ellipsoid is a mathematical figure that approximates the geoid. The geoid is a surface of constant geopotential with which mean sea level would coincide if the ocean were at rest. The ellipsoid is an approximation because the geoid is an irregular shape. A number of reference ellipsoids are defined for use in the field of geodesy. To specify which reference ellipsoid is being used, a grid_mapping variable should be attached to the data variable as described in Chapter 5.6 of the CF Convention.','longitude latitude alevel time1','zfull','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ta-AUS2200_A1hr','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude alevel time1','ta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zmla-AUS2200_A1hr','1hr','atmos','atmosphere_boundary_layer_thickness','m','area: time: mean','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time','zmla','real','','','','','','',''); -INSERT INTO cmorvar VALUES('orog-AUS2200_A1hr','1hrPt','land','surface_altitude','m','area: time: point','area: areacella','Surface Altitude','The surface called ''surface'' means the lower boundary of the atmosphere. Altitude is the (geometric) height above the geoid, which is the reference geopotential surface. The geoid is similar to mean sea level.','longitude latitude time1','orog','real','','','','','','',''); -INSERT INTO cmorvar VALUES('rsdsdiff-AUS2200_A1hr','1hr','atmos','surface_diffuse_downwelling_shortwave_flux_in_air','W m-2','area: time: mean','area: areacella','Surface Diffuse Downwelling Shortwave Radiation','Surface downwelling solar irradiance from diffuse radiation for UV calculations.','longitude latitude time','rsdsdiff','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('evspsbl-AUS2200_A1hr','1hr','land','water_evapotranspiration_flux','kg m-2 s-1','area: time: mean','area: areacella','Evaporation Including Sublimation and Transpiration','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)','longitude latitude time','evspsbl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('evspsbl_Pt-AUS2200_A1hr','1hrPt','land','water_evapotranspiration_flux','kg m-2 s-1','area: time: point','area: areacella','Evaporation Including Sublimation and Transpiration','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)','longitude latitude time1','evspsbl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('eow-AUS2200_A1hr','1hr','land','surface_water_evaporation_flux','kg m-2 s-1','area: mean where land time: mean','area: areacella','Open Water Evaporation','Evaporation (conversion of liquid or solid into vapor) from open water. ','longitude latitude time','eow','real','','','','','','',''); -INSERT INTO cmorvar VALUES('estot-AUS2200_A1hr','1hr','land','','kg m-2','area: mean where land time: sum','area: areacella','Bare Soil Evaporation Amount','Water here means water in all phases. Evaporation is the conversion of liquid or solid into vapor. (The conversion of solid alone into vapor is called ''sublimation''.) Sum over timestep (1hr).','longitude latitude time','estot','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tasmin-AUS2200_A1hr','1hr','atmos','air_temperature','K','area: mean time: minimum','area: areacella','Hourly Minimum Near-Surface Air Temperature','minimum near-surface (for access 1.5 meter) air temperature (add cell_method attribute ''time: minimum'')','longitude latitude time height1.5m','tasmin','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tasmax-AUS2200_A1hr','1hr','atmos','air_temperature','K','area: mean time: maximum','area: areacella','Hourly Maximum Near-Surface Air Temperature','maximum near-surface (for access 1.5 meter) air temperature (add cell_method attribute ''time: maximum`'')','longitude latitude time height1.5m','tasmax','real','','','','','','',''); -INSERT INTO cmorvar VALUES('huss-AUS2200_A1hr','1hr','atmos','specific_humidity','1','area: mean time: mean','area: areacella','Near-Surface Specific Humidity','Near-surface (for access 1.5 meter) specific humidity.','longitude latitude time height1.5m','huss','real','','','','','','',''); -INSERT INTO cmorvar VALUES('tauu-AUS2200_A1hr','1hr','atmos','surface_downward_eastward_stress','Pa','area: time: mean','area: areacella','Surface Downward Eastward Wind Stress','Downward eastward wind stress at the surface','longitude latitude time','tauu','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('tauu_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downward_eastward_stress','Pa','area: time: point','area: areacella','Surface Downward Eastward Wind Stress','Downward eastward wind stress at the surface','longitude latitude time1','tauu','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('tauv-AUS2200_A1hr','1hr','atmos','surface_downward_northward_stress','Pa','area: time: mean','area: areacella','Surface Downward Northward Wind Stress','Downward northward wind stress at the surface','longitude latitude time','tauv','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('tauv_Pt-AUS2200_A1hr','1hrPt','atmos','surface_downward_northward_stress','Pa','area: time: point','area: areacella','Surface Downward Northward Wind Stress','Downward northward wind stress at the surface','longitude latitude time1','tauv','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('wsgmax10m-AUS2200_A1hr','1hr','atmos','wind_speed_of_gust','m s-1','area: mean time: maximum','area: areacella','Maximum Wind Speed of Gust at 10m','Wind speed gust maximum at 10m above surface','longitude latitude time height10m','wsgmax10m','real','','','','','','',''); -INSERT INTO cmorvar VALUES('cw-AUS2200_A1hr','1hrPt','land','canopy_water_amount','kg m-2','area: mean where land time: point','area: areacella','Total Canopy Water Storage','''Amount'' means mass per unit area. ''Water'' means water in all phases, including frozen i.e. ice and snow. ''Canopy'' means the plant or vegetation canopy. The canopy water is the water on the canopy.','longitude latitude time1','cw','real','','','','','','',''); -INSERT INTO cmorvar VALUES('sifllatstop-AUS2200_A1hr','1hrPt','seaIce','surface_upward_latent_heat_flux','W m-2','area: time: point','area: areacella','Net Latent Heat Flux over Sea Ice','the net latent heat flux over sea ice where sea_ice (mask=siconca)','longitude latitude time1','sifllatstop','real','up','','','','','',''); -INSERT INTO cmorvar VALUES('mrso-AUS2200_A1hr','1hrPt','land','mass_content_of_water_in_soil','kg m-2','area: mean where land time: point','area: areacella','Total Soil Moisture Content','the mass per unit area (summed over all soil layers) of water in all phases.','longitude latitude time1','mrso','real','','','','','','',''); -INSERT INTO cmorvar VALUES('mrsos-AUS2200_A1hr','1hrPt','land','mass_content_of_water_in_soil_layer','kg m-2','area: mean where land time: point','area: areacella','Moisture in Upper Portion of Soil Column','The mass of water in all phases in the upper 10cm of the soil layer.','longitude latitude time1 sdepth1','mrsos','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ps-AUS2200_A1hr','1hrPt','atmos','surface_air_pressure','Pa','area: mean time: point','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time1','ps','real','','','','','','',''); -INSERT INTO cmorvar VALUES('refl-AUS2200_A1hr','1hrPt','atmos','','dBZ','area: mean time: point','area: areacella','Radar Reflectivity in the grid column due to all hydrometeors','','longitude latitude alevel time1','refl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clmxro-AUS2200_A1hr','1hr','atmos','cloud_area_fraction','1','area: time: mean','area: areacella','Cloud Area Fraction assuming maximum random overlap','Area fraction is the fraction of a grid cell''s horizontal area that has some characteristic of interest. It is evaluated as the area of interest divided by the grid cell area. It may be expressed as a fraction, a percentage, or any other dimensionless representation of a fraction. High type clouds are: Cirrus, Cirrostratus, Cirrocumulus.','longitude latitude time','clmxro','real','','','','','','',''); -INSERT INTO cmorvar VALUES('z0-AUS2200_A1hr','1hrPt','atmos','surface_roughness_length_for_momentum_in_air','m','area: time: point','area: areacella','Surface Roughness Length','','longitude latitude time1','z0','real','','','','','','',''); -INSERT INTO cmorvar VALUES('rsdscs-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','W m-2','area: time: point','area: areacella','Surface Downwelling Clear-Sky Shortwave Radiation','Surface solar irradiance clear sky for UV calculations','longitude latitude time1','rsdscs','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rldscs-AUS2200_A1hr','1hrPt','atmos','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','W m-2','area: time: point','area: areacella','Surface Downwelling Clear-Sky Longwave Radiation','Surface downwelling clear-sky longwave radiation','longitude latitude time1','rldscs','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('rsdsdir-AUS2200_A1hr','1hr','atmos','surface_direct_along_beam_shortwave_flux_in_air','W m-2','area: time: mean','area: areacella','Direct Surface Short Wave Flux : corrected','Corrected','longitude latitude time','rsdsdir','real','down','','','','','',''); -INSERT INTO cmorvar VALUES('ua24-AUS2200_A1hrPlev','1hrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction).','longitude latitude plev24 time1','ua','real','','','','','','',''); -INSERT INTO cmorvar VALUES('va24-AUS2200_A1hrPlev','1hrPt','atmos','northward_wind','m s-1','area: mean time: point','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction).','longitude latitude plev24 time1','va','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hus24-AUS2200_A1hrPlev','1hrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity on pressure levels','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude plev24 time1','hus','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wa24-AUS2200_A1hrPlev','1hrPt','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev24 time1','wa','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ta24-AUS2200_A1hrPlev','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude plev24 time1','ta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ua3-AUS2200_A1hrPlev','1hrPt','atmos','eastward_wind','m s-1','area: mean time: point','area: areacella','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction).','longitude latitude plev3 time1','ua','real','','','','','','',''); -INSERT INTO cmorvar VALUES('va3-AUS2200_A1hrPlev','1hrPt','atmos','northward_wind','m s-1','area: mean time: point','area: areacella','Northward Wind on pressure levels','Meridional wind (positive in a northward direction).','longitude latitude plev3 time1','va','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hus3-AUS2200_A1hrPlev','1hrPt','atmos','specific_humidity','1','area: mean time: point','area: areacella','Specific Humidity on pressure levels','Specific humidity is the mass fraction of water vapor in (moist) air.','longitude latitude plev3 time1','hus','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wa3-AUS2200_A1hrPlev','1hrPt','atmos','upward_air_velocity','m s-1','area: time: mean','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev3 time','wa','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ta3-AUS2200_A1hrPlev','1hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature','Air Temperature','longitude latitude plev3 time1','ta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('refl24-AUS2200_A1hrPlev','1hrPt','atmos','','dBZ','area: mean time: point','area: areacella','Radar Reflectivity in the grid column due to all hydrometeors','','longitude latitude plev24 time1','refl','real','','','','','','',''); -INSERT INTO cmorvar VALUES('theta24-AUS2200_A1hrPlev','1hrPt','atmos','air_potential_temperature','K','area: mean time: point','area: areacella','Air Potential Temperature','Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure, typically representative of mean sea level pressure.','longitude latitude plev24 time1','theta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zmla-AUS2200_A3hr','3hrPt','atmos','atmosphere_boundary_layer_thickness','m','area: time: point','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time1','zmla','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ps-AUS2200_A3hr','3hrPt','atmos','surface_air_pressure','Pa','area: mean time: point','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time1','ps','real','','','','','','',''); -INSERT INTO cmorvar VALUES('lwp-AUS2200_A3hr','3hrPt','areosol','atmosphere_mass_content_of_cloud_liquid_water','kg m-2','area: time: point','area: areacella','Liquid Water Path','The total mass of liquid water in cloud per unit area.','longitude latitude time1','lwp','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clivi-AUS2200_A3hr','3hrPt','atmos','atmosphere_mass_content_of_cloud_ice','kg m-2','area: time: point','area: areacella','Ice Water Path','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.','longitude latitude time1','clivi','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prw-AUS2200_A3hr','3hrPt','atmos','atmosphere_mass_content_of_water_vapor','kg m-2','area: time: point','area: areacella','Water Vapor Path','vertically integrated through the atmospheric column','longitude latitude time1','prw','real','','','','','','',''); -INSERT INTO cmorvar VALUES('orog-AUS2200_A6hr','6hrPt','land','surface_altitude','m','area: time: point','area: areacella','Surface Altitude','The surface called ''surface'' means the lower boundary of the atmosphere. Altitude is the (geometric) height above the geoid, which is the reference geopotential surface. The geoid is similar to mean sea level.','longitude latitude time1','orog','real','','','','','','',''); -INSERT INTO cmorvar VALUES('pralsprof-AUS2200_A6hr','6hr','atmos','stratiform_rainfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Rainfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsprof','real','','','','','','',''); -INSERT INTO cmorvar VALUES('pralsns-AUS2200_A6hr','6hr','atmos','stratiform_snowfall_amount','kg m-2','area: mean time: sum','area: areacella','Stratiform Snowfall Amount over the column','Stratiform precipitation, whether liquid or frozen, is precipitation that formed in stratiform cloud. ''Amount'' means mass per unit area.','longitude latitude time','pralsns','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ua16-AUS2200_A6hr','6hrPt','atmos','eastward_wind','m s-1','area: time: point','--OPT','Eastward Wind on pressure levels','Zonal wind (positive in a eastward direction).','longitude latitude plev16 time1','ua','real','','','','','','',''); -INSERT INTO cmorvar VALUES('va16-AUS2200_A6hr','6hrPt','atmos','northward_wind','m s-1','area: time: point','--OPT','Northward Wind on pressure levels','Meridional wind (positive in a northward direction).','longitude latitude plev16 time1','va','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wa16-AUS2200_A6hr','6hrPt','atmos','upward_air_velocity','m s-1','area: mean time: point','area: areacella','Upward Air Velocity on pressure levels','A velocity is a vector quantity. ''Upward'' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.','longitude latitude plev16 time1','wa','real','','','','','','',''); -INSERT INTO cmorvar VALUES('wbptemp-AUS2200_A6hr','6hrPt','atmos','wet_bulb_potential_temperature','K','area: mean time: point','area: areacella','Wet Bulb Potential Temperature','Wet bulb potential temperature','longitude latitude plev7h time1','wbptemp','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zg16-AUS2200_A6hr','6hrPt','atmos','geopotential_height','m','area: mean time: point','area: areacella','Geopotential Height on pressure levels','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.','longitude latitude plev16 time1','zg','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ta16-AUS2200_A6hr','6hrPt','atmos','air_temperature','K','area: mean time: point','area: areacella','Air Temperature on pressure levels','Air Temperature','longitude latitude plev16 time1','ta','real','','','','','','',''); -INSERT INTO cmorvar VALUES('hur16-AUS2200_A6hr','6hrPt','atmos','relative_humidity','%','area: mean time: point','area: areacella','Relative Humidity on pressure levels','The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.','longitude latitude plev16 time1','hur','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zmla-AUS2200_Aday','day','atmos','atmosphere_boundary_layer_thickness','m','area: time: mean','area: areacella','Height of Boundary Layer','The atmosphere boundary layer thickness is the ''depth'' or ''height'' of the (atmosphere) planetary boundary layer.','longitude latitude time','zmla','real','','','','','','',''); -INSERT INTO cmorvar VALUES('ps-AUS2200_Aday','day','atmos','surface_air_pressure','Pa','area: mean time: mean','area: areacella','Surface Air Pressure','surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates','longitude latitude time','ps','real','','','','','','',''); -INSERT INTO cmorvar VALUES('lwp-AUS2200_Aday','day','aerosol','atmosphere_mass_content_of_cloud_liquid_water','kg m-2','area: time: mean','area: areacella','Liquid Water Path','The total mass of liquid water in cloud per unit area.','longitude latitude time','lwp','real','','','','','','',''); -INSERT INTO cmorvar VALUES('clivi-AUS2200_Aday','day','atmos','atmosphere_mass_content_of_cloud_ice','kg m-2','area: time: mean','area: areacella','Ice Water Path','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.','longitude latitude time','clivi','real','','','','','','',''); -INSERT INTO cmorvar VALUES('prw-AUS2200_Aday','day','atmos','atmosphere_mass_content_of_water_vapor','kg m-2','area: time: mean','area: areacella','Water Vapor Path','vertically integrated through the atmospheric column','longitude latitude time','prw','real','','','','','','',''); -INSERT INTO cmorvar VALUES('lmask-AUS2200_fx','fx','land','land_binary_mask','%','area: mean','area: areacella','Indicates if cell grid is Land (1) or sea (0)','1 = land, 0 = sea','longitude latitude','lmask','integer','','','','','','',''); -INSERT INTO cmorvar VALUES('omldamax-CM2_mon','mon','ocean','ocean_mixed_layer_thickness_defined_by_mixing_scheme','m','area: mean time: maximum','area: areacello','Mean Monthly Maximum Ocean Mixed Layer Thickness Defined by Mixing Scheme','The ocean mixed layer is the upper part of the ocean, regarded as being well-mixed. The base of the mixed layer defined by the mixing scheme is a diagnostic of ocean models. ''Thickness'' means the vertical extent of a layer.','longitude latitude time','omldamax','real','','','','','','',''); -INSERT INTO cmorvar VALUES('difvho-CM2_mon','mon','ocean','ocean_vertical_heat_diffusivity','m2 s-1','area: mean time: mean','area: areacello volume: volcello','Ocean Vertical Heat Diffusivity','Vertical/dianeutral diffusivity applied to prognostic temperature field.','longitude latitude olevel time','difvho','real','','','','','','',''); -INSERT INTO cmorvar VALUES('rho0-CM2_mon','mon','ocean','sea_water_potential_density','kg m-3','area: mean time: mean','area: areacello volume: volcello','Potential Density referenced to 0 dbar','','longitude latitude olevel time','rho0','real','','','','','','',''); -INSERT INTO cmorvar VALUES('zg16-AUS2200_A3hr','3hrPt','atmos','geopotential_height','m','area: mean time: point','area: areacella','Geopotential Height on pressure levels','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.','longitude latitude plev16 time1','zg','real','','','','','','',''); CREATE TABLE mapping ( cmor_var TEXT, input_vars TEXT, calculation TEXT, units TEXT, dimensions TEXT, + axes TEXT, frequency TEXT, realm TEXT, cell_methods TEXT, @@ -2296,452 +2335,952 @@ CREATE TABLE mapping ( origin TEXT, PRIMARY KEY (cmor_var, input_vars, cmor_table, model) ) WITHOUT ROWID; -INSERT INTO mapping VALUES('abs550aer','fld_s02i240 fld_s02i241 fld_s02i242 fld_s02i243 fld_s02i585','optical_depth(var,3)','1','time pseudo_level_0 lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_CM2'); -INSERT INTO mapping VALUES('advectsweby','temp_sweby_advec','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CM2_mon','CM2','cp*rho*dzt*sweby advect tendency','mappings/map_ocean_OM2'); -INSERT INTO mapping VALUES('advectsweby','temp_sweby_advec','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CM2_mon','OM2','cp*rho*dzt*sweby advect tendency','map_ocean_OM2'); -INSERT INTO mapping VALUES('agesno','fld_s03i832 fld_s03i317','average_tile(var[0],tilefrac=var[1])','mon','time pseudo_level_1 lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','age_of_surface_snow','map_land_CM2'); -INSERT INTO mapping VALUES('agesno','fld_s03i832 fld_s03i317','average_tile(var[0],tilefrac=var[1])','mon','time pseudo_level_1 lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','age_of_surface_snow','map_land_ESM1.5'); -INSERT INTO mapping VALUES('agessc','age_global','','yr','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_age_since_surface_contact','map_ocean_OM2'); -INSERT INTO mapping VALUES('amdry','fld_s30i403','','kg m-2','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','TOTAL COLUMN DRY MASS RHO GRID','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('amdry','fld_s30i403','','kg m-2','time lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','atmosphere_mass_per_unit_area','map_atmos_CM2'); -INSERT INTO mapping VALUES('amwet','fld_s30i404','','kg m-2','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','TOTAL COLUMN WET MASS RHO GRID','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('amwet','fld_s30i404','','kg m-2','time lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','atmosphere_mass_per_unit_area','map_atmos_CM2'); -INSERT INTO mapping VALUES('areacello','area_t','get_areacello(area_t=var[0])','m-2','yt_ocean xt_ocean','mon','ocean','area: sum','','CMIP6_Ofx','OM2','cell_area','map_ocean_OM2'); -INSERT INTO mapping VALUES('areacello','dummy','get_areacello()','1','time st_ocean yt_ocean xt_ocean','mon','ocean','area: sum','','CMIP6_Ofx','OM2','cell_area','map_ocean_OM2'); -INSERT INTO mapping VALUES('baresoilFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],14,landfrac=var[1],lev=''typebare'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('baresoilFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],14,landfrac=var[1],lev=''typebare'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('bigthetao','temp','','deg_C','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_conservative_temperature','map_ocean_OM2'); -INSERT INTO mapping VALUES('c3PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev=''typec3pft'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('c3PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev=''typec3pft'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('c4PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1],lev=''typec4pft'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('c4PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1],lev=''typec4pft'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('ci','fld_s05i269','','1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','deep convection indicator','map_atmos_CM2'); -INSERT INTO mapping VALUES('cl','fld_s00i265','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','cloud_area_fraction_in_atmosphere_layer','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('cl','fld_s02i261','','1','time model_theta_level_number lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','cloud_area_fraction_in_atmosphere_layer','map_atmos_CM2'); -INSERT INTO mapping VALUES('clhigh','fld_s09i205','','1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','high_type_cloud_area_fraction','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('cli','fld_s00i012','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_cloud_ice_in_air','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('cli','fld_s02i309','','1','time model_theta_level_number lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','mass_fraction_of_stratiform_cloud_ice_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('clivi','fld_s30i406','','kg m-2','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_cloud_ice_content','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('clivi','fld_s30i406','','kg m-2','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','atmosphere_cloud_ice_content','map_atmos_CM2'); -INSERT INTO mapping VALUES('clivol','fld_s00i268','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','ice_cloud_volume_fraction_in_atmosphere_layer','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('cllow','fld_s09i203','','1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','low_type_cloud_area_fraction','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('clmed','fld_s09i204','','1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','medium_type_cloud_area_fraction','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('clmxro','fld_s09i217','','1','time_0 lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','cloud_area_fraction','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('clmxro','fld_s09i217','','1','time_0 lat lon','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','cloud_area_fraction','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time_0 lat lon','3hr','atmos','area: time: mean','','CMIP6_3hr','CM2','cloud_area_fraction','map_atmos_CM2'); -INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','cloud_area_fraction','map_atmos_CM2'); -INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time lat lon','day','atmos','area: time: mean','','CMIP6_day','CM2','cloud_area_fraction','map_atmos_CM2'); -INSERT INTO mapping VALUES('clw','fld_s00i254','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_cloud_liquid_water_in_air','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('clw','fld_s02i308','','1','time model_theta_level_number lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','mass_fraction_of_stratiform_cloud_liquid_water_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('clwvol','fld_s00i267','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','liquid_cloud_volume_fraction_in_atmosphere_layer','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('cropFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typecrop'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('cropFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typecrop'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('cropFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typec3crop'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('cropFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typec3crop'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('cw','fld_s08i209','','kg m-2','time lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','canopy_water_amount','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('cw','fld_s08i209','','kg m-2','time lat lon','mon','land','area: time: mean','','CM2_mon','CM2','canopy_water_amount','map_land_CM2'); -INSERT INTO mapping VALUES('cw','fld_s08i209','','kg m-2','time lat lon','mon','land','area: time: mean','','CM2_mon','ESM1.5','canopy_water_amount','map_land_ESM1.5'); -INSERT INTO mapping VALUES('deptho','ht','','m','yt_ocean xt_ocean','mon','ocean','area: time: point','','CMIP6_Ofx','OM2','sea_floor_depth_below_geoid','map_ocean_OM2'); -INSERT INTO mapping VALUES('difvho','diff_cbt_t','','m2 s-1','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CM2_Omon','OM2','ocean_vertical_heat_diffusivity','map_ocean_OM2'); -INSERT INTO mapping VALUES('dryss','fld_s38i218 fld_s38i219','calc_depositions(var)','kg m-2 s-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_dry_deposition','map_aerosol_CM2'); -INSERT INTO mapping VALUES('eow','fld_s03i232','','kg m-2 s-1','time_0 lat lon','1hr','land','area: time: mean','','AUS2200_A1hr','AUS2200','Evaporation flux from open sea','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('eow','fld_s03i232','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CM2_mon','CM2','Evaporation flux from open sea','map_land_CM2'); -INSERT INTO mapping VALUES('eow','fld_s03i232','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CM2_mon','ESM1.5','Evaporation flux from open sea','map_land_ESM1.5'); -INSERT INTO mapping VALUES('estot','fld_s03i229','','kg m-2','time_0 lat lon','1hr','land','area: time: sum','','AUS2200_A1hr','AUS2200','EVAP FROM SOIL SURF -AMOUNT KG/M2/TS','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('evs','evap','','kg m-2 -s','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_evaporation_flux','map_ocean_OM2'); -INSERT INTO mapping VALUES('evspsbl','fld_s03i223','','kg m-2 s-1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','water_evaporation_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('evspsbl','fld_s03i223_0','','kg m-2 s-1','time lat lon','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','SURFACE TOTAL MOISTURE FLUX KG/M2/S','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('evspsbl_Pt','fld_s03i223','','kg m-2 s-1','time lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','SURFACE TOTAL MOISTURE FLUX KG/M2/S','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('evspsblpot','fld_s03i335','','kg m-2 s-1','time pseudo_level lat lon','10minPt','atmos','area: time: point','','','AUS2200','POTENTIAL EVAPORATION ON TILES','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('evspsblveg','fld_s03i297','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CMIP6_Lmon','CM2','water_evaporation_flux_from_canopy','map_land_CM2'); -INSERT INTO mapping VALUES('evspsblveg','fld_s03i297','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','water_evaporation_flux_from_canopy','map_land_ESM1.5'); -INSERT INTO mapping VALUES('ficeberg2d','ice_calving','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water_from_icebergs','map_ocean_OM2'); -INSERT INTO mapping VALUES('flashrate','fld_s21i100','','s-1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','lightning_flash_rate','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('fracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1])','1','time pseudo_level_1 lat lon','mon','land','area: time: mean','','CMIP6_Emon','CM2','SURFACE TILE FRACTIONS','map_land_CM2'); -INSERT INTO mapping VALUES('fracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1])','1','time pseudo_level_1 lat lon','mon','land','area: time: mean','','CMIP6_Emon','ESM1.5','SURFACE TILE FRACTIONS','map_land_ESM1.5'); -INSERT INTO mapping VALUES('friver','runoff','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water_from_rivers','map_ocean_OM2'); -INSERT INTO mapping VALUES('fsitherm','melt','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water_due_to_sea_ice_thermodynamics','map_ocean_OM2'); -INSERT INTO mapping VALUES('gpp','fld_s03i261','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','down','CMIP6_Lmon','CM2','gross_primary_productivity_of_biomass_expressed_as_carbon','map_land_CM2'); -INSERT INTO mapping VALUES('gpp','fld_s03i261','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','down','CMIP6_Lmon','ESM1.5','gross_primary_productivity_of_biomass_expressed_as_carbon','map_land_ESM1.5'); -INSERT INTO mapping VALUES('grassFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[6,7],landfrac=var[1],lev=''typenatgr'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('grassFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[6,7],landfrac=var[1],lev=''typenatgr'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('grassFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],6,landfrac=var[1],lev=''typec3natg'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('grassFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],6,landfrac=var[1],lev=''typec3natg'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('grassFracC4','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1]i,lev=''typec4natg'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('grassFracC4','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1]i,lev=''typec4natg'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('grplmxrat','fld_s00i273','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_graupel_in_air','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d','sum_vars(var[:-1])+ var[3].sum(dim=''st_ocean'')','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_heat_flux_in_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z','sum_vars(var)','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_heat_flux_in_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfdsn','fld_s08i202','','W m-2','time lat lon','mon','landIce','area: mean where land time: mean','down','CMIP6_LImon','CM2','surface_downward_heat_flux_in_snow','map_land_CM2'); -INSERT INTO mapping VALUES('hfdsn','fld_s08i202','','W m-2','time lat lon','mon','landIce','area: mean where land time: mean','down','CMIP6_LImon','ESM1.5','surface_downward_heat_flux_in_snow','map_land_ESM1.5'); -INSERT INTO mapping VALUES('hfevapds','sfc_hflux_from_water_evap','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfibthermds2d','calving_melt_heat','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_iceberg_thermodynamics','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upward_latent_heat_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upward_latent_heat_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','day','atmos','area: time: mean','up','CMIP6_day','CM2','surface_upward_latent_heat_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('hfls','fld_s03i234_0','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','surface_upward_latent_heat_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('hfls_Pt','fld_s03i234','','W m-2','time lat lon','1hrPt','atmos','area: time: point','up','AUS2200_A1hr','AUS2200','surface_upward_latent_heat_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('hflso','evap_heat','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_latent_heat_flux','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfrainds','sfc_hflux_from_water_prec','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfrunoffds2d','sfc_hflux_from_runoff','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfsifrazil','frazil_3d','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfsifrazil2d','frazil_3d','var[0].sum(dim=''st_ocean'')','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfsifrazil3d','frazil_3d','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','mappings/map_ocean_OM2'); -INSERT INTO mapping VALUES('hfsnthermds2d','fprec_melt_heat','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_snow_thermodynamics','map_ocean_OM2'); -INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upward_sensible_heat_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upward_sensible_heat_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','day','atmos','area: time: mean','up','CMIP6_day','CM2','surface_upward_sensible_heat_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('hfss','fld_s03i217_0','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','surface_upward_sensible_heat_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('hfss_Pt','fld_s03i217','','W m-2','time lat lon','1hrPt','atmos','area: time: point','up','AUS2200_A1hr','AUS2200','surface_upward_sensible_heat_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('hfsso','sens_heat','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_sensible_heat_flux','map_ocean_OM2'); -INSERT INTO mapping VALUES('hur','fld_s30i296','','%','time pressure lat lon','day','atmos','area: time: mean','','CM2_day','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hur','fld_s30i296','','%','time pressure lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','3hrPt','atmos','area: time: point','','CM2_3hr','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','day','atmos','area: time: mean','','CM2_day','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hursmax','fld_s03i245_max','','%','time lat lon','day','atmos','area: time: maximum','','CM2_day','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hursmin','fld_s03i245_min','','%','time lat lon','day','atmos','area: time: minimum','','CM2_day','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('huruvgrid','fld_s30i206','','%','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','relative_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hus','fld_s00i010','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','specific_humidity','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('hus','fld_s00i010','','1','time model_theta_level_number lat lon','mon','atmos','area: time: mean','','CMIP6_CFmon','CM2','specific_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','specific_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','day','atmos','area: time: mean','','CMIP6_Eday','CM2','specific_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('hus24','fld_s00i010 fld_s00i408','plevinterp(var[0], var[1], 24)','1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: mean','','AUS2200_A1hrPlev','AUS2200','specific_humidity','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('huslev1','fld_s00i010','','1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','surface_specific_humidity','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','specific_humidity','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time_0 lat lon','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','specific_humidity','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','3hrPt','atmos','area: time: point','','CM2_3hr','CM2','specific_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','day','atmos','area: time: mean','','CM2_day','CM2','specific_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','specific_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('husuvgrid','fld_s30i205','','1','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','specific_humidity','map_atmos_CM2'); -INSERT INTO mapping VALUES('intuaw','fld_s30i428','','kg m-1 s-1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Emon','CM2','eastward_atmosphere_water_transport_across_unit_distance','map_atmos_CM2'); -INSERT INTO mapping VALUES('intvaw','fld_s30i429','','kg m-1 s-1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Emon','CM2','northward_atmosphere_water_transport_across_unit_distance','map_atmos_CM2'); -INSERT INTO mapping VALUES('landCoverFrac','fld_s03i317 fld_s03i395','(var[0]*var[1]).filled(0)','1','time pseudo_level_1 lat lon','mon','land','area: time: mean','','CMIP6_Lmon','CM2','SURFACE TILE FRACTIONS','map_land_CM2'); -INSERT INTO mapping VALUES('landCoverFrac','fld_s03i317 fld_s03i395','(var[0]*var[1]).filled(0)','1','time pseudo_level_1 lat lon','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','SURFACE TILE FRACTIONS','map_land_ESM1.5'); -INSERT INTO mapping VALUES('lmask','fld_s00i030','var[0].isel(time=0).astype(int)','1','time_1 lat lon','1hrPt','land','area: time: point','','AUS2200_fx','AUS2200','LAND MASK (No halo) (LAND=TRUE)','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('lmask','fld_s00i030','var[0].isel(time=0).astype(int)','1','time lat lon','mon','land','area: time: point','','AUS2200_fx','CM2','land_binary_mask','map_land_CM2'); -INSERT INTO mapping VALUES('lmask','fld_s00i030','var[0].isel(time=0).astype(int)','1','time lat lon','mon','land','area: time: point','','AUS2200_fx','ESM1.5','land_binary_mask','map_land_ESM1.5'); -INSERT INTO mapping VALUES('lwp','fld_s30i405','','kg m-2','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_cloud_liquid_water_content','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('lwp','fld_s30i405','','kg m-2','time lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_cloud_liquid_water_content','map_aerosol_CM2'); -INSERT INTO mapping VALUES('masscello','rho_dzt','','kg m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_mass_per_unit_area','map_ocean_OM2'); -INSERT INTO mapping VALUES('mc','fld_s05i250 fld_s05i251','((var[0]-var[1])/9.80665)','kg m-2 s-1','time model_theta_level_number lat lon','mon','atmos','','up','CM2_mon','CM2','atmosphere_net_upward_convective_mass_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','day','ocean','area: time: mean','','CM2_day','OM2','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_OM2'); -INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_OM2'); -INSERT INTO mapping VALUES('mlotstsq','mld_sq','','m2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','square_of_ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_OM2'); -INSERT INTO mapping VALUES('mmrbc','fld_s34i105 fld_s34i109 fld_s34i115 fld_s34i120','sum_vars(var)','kg kg-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air','map_aerosol_CM2'); -INSERT INTO mapping VALUES('mmrdust','fld_s00i431 fld_s00i432 fld_s00i433 fld_s00i434 fld_s00i435 fld_s00i436','sum_vars(var)','kg kg-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_dust_dry_aerosol_particles_in_air','map_aerosol_CM2'); -INSERT INTO mapping VALUES('mmroa','fld_s34i106 fld_s34i110 fld_s34i116 fld_s34i121 fld_s34i126','sum_vars(var)','kg kg-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air','map_aerosol_CM2'); -INSERT INTO mapping VALUES('mmrso4','fld_s34i102 fld_s34i104 fld_s34i108 fld_s34i114','sum_vars(var)','kg kg-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_sulfate_dry_aerosol_particles_in_air','map_aerosol_CM2'); -INSERT INTO mapping VALUES('mmrss','fld_s34i111 fld_s34i117','sum_vars(var)','kg kg-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_sea_salt_dry_aerosol_particles_in_air','map_aerosol_CM2'); -INSERT INTO mapping VALUES('mrfso','fld_s08i223 fld_s08i230','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Lmon','CM2','soil_frozen_water_content','map_land_CM2'); -INSERT INTO mapping VALUES('mrfso','fld_s08i223 fld_s08i230','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','soil_frozen_water_content','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrfsofr','fld_s08i230','','1','time depth lat lon','mon','land','area: time: mean','','CM2_mon','CM2','mass_fraction_of_frozen_water_in_soil_moisture','map_land_CM2'); -INSERT INTO mapping VALUES('mrfsofr','fld_s08i230','','1','time depth lat lon','mon','land','area: time: mean','','CM2_mon','ESM1.5','mass_fraction_of_frozen_water_in_soil_moisture','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrlqso','fld_s08i229','','1','time depth lat lon','mon','land','area: mean where land time: mean','','CM2_mon','CM2','mass_fraction_of_unfrozen_water_in_soil_moisture','map_land_CM2'); -INSERT INTO mapping VALUES('mrlqso','fld_s08i229','','1','time depth lat lon','mon','land','area: mean where land time: mean','','CM2_mon','ESM1.5','mass_fraction_of_unfrozen_water_in_soil_moisture','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrlso','fld_s08i223 fld_s08i229','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Emon','CM2','liquid_water_content_of_soil_layer','map_land_CM2'); -INSERT INTO mapping VALUES('mrlso','fld_s08i223 fld_s08i229','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Emon','ESM1.5','liquid_water_content_of_soil_layer','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrro','fld_s08i234 fld_s08i235','sum_vars(var)','kg m-2 s-1','time lat lon','mon','land','area: mean where land time: mean','','CMIP6_Lmon','CM2','runoff_flux','map_land_CM2'); -INSERT INTO mapping VALUES('mrro','fld_s08i234 fld_s08i235','sum_vars(var)','kg m-2 s-1','time lat lon','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','runoff_flux','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrrob','fld_s08i235','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CM2_mon','CM2','SUB-SURFACE RUNOFF RATE KG/M2/S','map_land_CM2'); -INSERT INTO mapping VALUES('mrrob','fld_s08i235','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CM2_mon','ESM1.5','SUB-SURFACE RUNOFF RATE KG/M2/S','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrros','fld_s08i234','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CMIP6_Lmon','CM2','surface_runoff_flux','map_land_CM2'); -INSERT INTO mapping VALUES('mrros','fld_s08i234','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','surface_runoff_flux','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrsfl','fld_s08i223 fld_s08i230','var[0]*var[1]','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Emon','CM2','frozen_water_content_of_soil_layer','map_land_CM2'); -INSERT INTO mapping VALUES('mrsfl','fld_s08i223 fld_s08i230','var[0]*var[1]','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Emon','ESM1.5','frozen_water_content_of_soil_layer','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrsll','fld_s08i223 fld_s08i229','var[0]*var[1]','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Emon','CM2','liquid_water_content_of_soil_layer','map_land_CM2'); -INSERT INTO mapping VALUES('mrsll','fld_s08i223 fld_s08i229','var[0]*var[1]','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Emon','ESM1.5','liquid_water_content_of_soil_layer','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrso','fld_s08i208','','kg m-2','time lat lon','mon','land','area: time: mean','','CMIP6_Lmon','CM2','mass_content_of_water_in_soil','map_land_CM2'); -INSERT INTO mapping VALUES('mrso','fld_s08i223','var[0].sum(dim=''depth'')','kg m-2','time depth lat lon','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('mrso','fld_s08i223','var[0].sum(dim=''depth'')','kg m-2','time lat lon','mon','land','area: time: mean','','CMIP6_Lmon','CM2','mass_content_of_water_in_soil','map_land_CM2'); -INSERT INTO mapping VALUES('mrso','fld_s08i223','var[0].sum(dim=''depth'')','kg m-2','time lat lon','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','mass_content_of_water_in_soil','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrsol','fld_s08i223','','kg m-2','time depth lat lon','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','mass_content_of_water_in_soil_layer','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('mrsol','fld_s08i223','','kg m-2','time depth lat lon','mon','land','area: time: mean','','CMIP6_Emon','CM2','mass_content_of_water_in_soil_layer','map_land_CM2'); -INSERT INTO mapping VALUES('mrsol','fld_s08i223','','kg m-2','time depth lat lon','mon','land','area: time: mean','','CMIP6_Emon','ESM1.5','mass_content_of_water_in_soil_layer','map_land_ESM1.5'); -INSERT INTO mapping VALUES('mrsos','fld_s08i223','calc_top_soil(var[0])','kg m-2','time depth lat lon','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('mrsos','fld_s08i223','calc_topsoil(var[0])','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Lmon','CM2','mass_content_of_water_in_soil_layer','map_land_CM2'); -INSERT INTO mapping VALUES('mrsos','fld_s08i223','calc_topsoil(var[0])','kg m-2','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','mass_content_of_water_in_soil_layer','map_land_ESM1.5'); -INSERT INTO mapping VALUES('msftmrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','OM2','ocean_meridional_overturning_mass_streamfunction','map_ocean_OM2'); -INSERT INTO mapping VALUES('msftmz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','OM2','ocean_meridional_overturning_mass_streamfunction','map_ocean_OM2'); -INSERT INTO mapping VALUES('msftyrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','OM2','ocean_y_overturning_mass_streamfunction','map_ocean_OM2'); -INSERT INTO mapping VALUES('msftyz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','OM2','ocean_y_overturning_mass_streamfunction','map_ocean_OM2'); -INSERT INTO mapping VALUES('nep','fld_s03i262 fld_s03i293','var[0]-var[1]','kg m-2 s-1','time lat lon','mon','land','area: mean where land time: mean','down','CMIP6_Emon','CM2','surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change','map_land_CM2'); -INSERT INTO mapping VALUES('nep','fld_s03i262 fld_s03i293','var[0]-var[1]','kg m-2 s-1','time lat lon','mon','land','area: mean where land time: mean','down','CMIP6_Emon','ESM1.5','surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change','map_land_ESM1.5'); -INSERT INTO mapping VALUES('nflash','fld_s21i104','','1','time_0 lat lon','10min','atmos','area: time: sum','','AUS2200_A10min','AUS2200','Number_of_lightning_flashes','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('npp','fld_s03i262','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','down','CMIP6_Lmon','CM2','net_primary_productivity_of_biomass_expressed_as_carbon','map_land_CM2'); -INSERT INTO mapping VALUES('npp','fld_s03i262','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','down','CMIP6_Lmon','ESM1.5','net_primary_productivity_of_biomass_expressed_as_carbon','map_land_ESM1.5'); -INSERT INTO mapping VALUES('nwdFracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1],nwd=1)','1','time pseudo_level_1 lat lon','mon','land','area: time: mean','','CMIP6_Emon','CM2','SURFACE TILE FRACTIONS','map_land_CM2'); -INSERT INTO mapping VALUES('nwdFracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1],nwd=1)','1','time pseudo_level_1 lat lon','mon','land','area: time: mean','','CMIP6_Emon','ESM1.5','SURFACE TILE FRACTIONS','map_land_ESM1.5'); -INSERT INTO mapping VALUES('obvfsq','bv_freq','var[0]**2','s-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','square_of_brunt_vaisala_frequency_in_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('ocontempdiff','temp_vdiffuse_diff_cbt','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing','map_ocean_OM2'); -INSERT INTO mapping VALUES('ocontemppadvect','neutral_gm_temp','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection','map_ocean_OM2'); -INSERT INTO mapping VALUES('ocontemppmdiff','neutral_diffusion_temp','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_OM2'); -INSERT INTO mapping VALUES('ocontemppsmadvect','temp_submeso','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_OM2'); -INSERT INTO mapping VALUES('ocontemprmadvect','temp_advection neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_OM2'); -INSERT INTO mapping VALUES('ocontemprmadvect','temp_sweby_advect neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_OM2'); -INSERT INTO mapping VALUES('ocontemptend','temp_tendency','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content','map_ocean_OM2'); -INSERT INTO mapping VALUES('od440aer','fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303','optical_depth(var,2)','1','time pseudo_level_0 lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_CM2'); -INSERT INTO mapping VALUES('od550aer','fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303','optical_depth(var,3)','1','time pseudo_level_0 lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_CM2'); -INSERT INTO mapping VALUES('od550lt1aer','fld_s02i300 fld_s02i301 fld_s02i303','optical_depth(var,3)','1','time pseudo_level_0 lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles','map_aerosol_CM2'); -INSERT INTO mapping VALUES('omldamax','hblt_max','','m','time yt_ocean xt_ocean','mon','ocean','area: time: max','','CM2_Omon','OM2','ocean_mixed_layer_thickness_defined_by_mixing_scheme','map_ocean_OM2'); -INSERT INTO mapping VALUES('orog','fld_s00i033','var[0].isel(time=0)','m','time_1 lat lon','1hrPt','land','area: time: point','','CMIP6_fx','AUS2200','surface_altitude','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('orog','fld_s00i033','var[0].isel(time=0)','m','time lat lon','mon','land','area: mean','','CMIP6_fx','CM2','surface_altitude','map_land_CM2'); -INSERT INTO mapping VALUES('orog','fld_s00i033','var[0].isel(time=0)','m','time lat lon','mon','land','area: mean','','CMIP6_fx','ESM1.5','surface_altitude','map_land_ESM1.5'); -INSERT INTO mapping VALUES('orog','surface_altitude','','m','time lat lon','mon','land','area: time: mean','','CMIP6_fx','CM2','surface_altitude','map_land_CM2'); -INSERT INTO mapping VALUES('orog','surface_altitude','','m','time lat lon','mon','land','area: time: mean','','CMIP6_fx','ESM1.5','surface_altitude','map_land_ESM1.5'); -INSERT INTO mapping VALUES('osaltdiff','salt_vdiffuse_diff_cbt','','kg m-2 -s','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing','map_ocean_OM2'); -INSERT INTO mapping VALUES('osaltpadvect','neutral_gm_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection','map_ocean_OM2'); -INSERT INTO mapping VALUES('osaltpmdiff','neutral_diffusion_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_OM2'); -INSERT INTO mapping VALUES('osaltpsmadvect','salt_submeso','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_OM2'); -INSERT INTO mapping VALUES('osaltrmadvect','salt_advection neutral_gm_salt salt_submeso','sum_vars(var)','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection','map_ocean_OM2'); -INSERT INTO mapping VALUES('osalttend','salt_tendency','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content','map_ocean_OM2'); -INSERT INTO mapping VALUES('pbo','pbot_t','var[0]*10000.','dbar','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_pressure_at_sea_floor','map_ocean_OM2'); -INSERT INTO mapping VALUES('pfull','fld_s00i408','level_to_height(var[0],levs=(0,66))','Pa','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_pressure','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('pfull','fld_s00i408','','Pa','time model_theta_level_number lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('phalf','fld_s00i407','level_to_height(var[0],levs=(0,66))','Pa','time model_rho_level_number_0 lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_pressure','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('phalf','fld_s00i407','','Pa','time model_rho_level_number lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time_0 lat lon','3hr','atmos','area: time: mean','','CMIP6_3hr','CM2','precipitation_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','precipitation_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','day','atmos','area: time: mean','','CMIP6_day','CM2','precipitation_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('pralsns','fld_s04i202','','kg m-2','time_0 lat lon','10min','atmos','area: time: sum','','AUS2200_A10min','AUS2200','stratiform_snowfall_amount','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('pralsprof','fld_s04i201','','kg m-2','time_0 lat lon','10min','atmos','area: time: sum','','AUS2200_A10min','AUS2200','stratiform_rainfall_amount','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time_0 lat lon','3hr','atmos','','','CMIP6_3hr','CM2',' includes both liquid and solid phases','map_atmos_CM2'); -INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2',' includes both liquid and solid phases','map_atmos_CM2'); -INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time lat lon','day','atmos','','','CMIP6_day','CM2',' includes both liquid and solid phases','map_atmos_CM2'); -INSERT INTO mapping VALUES('prlsns','fld_s04i204','','kg m-2 s-1','time lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','stratiform_snowfall_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('prlsprof','fld_s04i203','','kg m-2 s-1','time lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','stratiform_rainfall_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('prra','fld_s05i214','','kg m-2 s-1','time lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','rainfall_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('prra','fld_s05i214','','kg m-2 s-1','time_0 lat lon','3hr','atmos','area: time: mean','','CMIP6_E3hr','CM2','rainfall_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('prra','lprec','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','rainfall_flux','map_ocean_OM2'); -INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time_0 lat lon','3hr','atmos','area: time: mean','','CMIP6_3hr','CM2','snowfall_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','snowfall_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','day','atmos','area: time: mean','','CMIP6_day','CM2','snowfall_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('prsn','fprec','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','snowfall_flux','map_ocean_OM2'); -INSERT INTO mapping VALUES('prw','fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406','var[0]-sum_vars(var[1:])','kg m-2','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('prw','fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406','var[0]-(var[1]+var[2]+var[3])','kg m-2','time lat lon','mon','atmos','area: time: point','','CMIP6_Amon','CM2','','map_atmos_CM2'); -INSERT INTO mapping VALUES('prw','fld_s30i461','','kg m-2','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','TOTAL COLUMN Q (WATER VAPOUR PATH)','map_atmos_CM2'); -INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','surface_air_pressure','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','surface_air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','3hrPt','atmos','area: time: point','','CMIP6_E3hrPt','CM2','surface_air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','air_pressure_at_sea_level','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time_0 lat lon','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','air_pressure_at_sea_level','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('pslev1','fld_s00i408','','Pa','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','air_pressure','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('pso','patm_t','','Pa','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_pressure_at_sea_water_surface','map_ocean_OM2'); -INSERT INTO mapping VALUES('ra','fld_s03i263','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','up','CMIP6_Lmon','CM2','plant_respiration_carbon_flux','map_land_CM2'); -INSERT INTO mapping VALUES('ra','fld_s03i263','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','up','CMIP6_Lmon','ESM1.5','plant_respiration_carbon_flux','map_land_ESM1.5'); -INSERT INTO mapping VALUES('rainmxrat','fld_s00i272','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_rain_in_air','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('refl','fld_s04i118','level_to_height(var[0],levs=(0,66))','dBZ','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','radar_reflectivity_due_to_all_hydrometeor_species','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('refl24','fld_s04i118 fld_s00i408','plevinterp(var[0], var[1], 24)','dBZ','time model_theta_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','radar_reflectivity_due_to_all_hydrometeor_species','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('reflmax','fld_s04i111','','dBZ','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','maximum_radar_reflectivity_in_the_grid_column_due_to_all_hydrometeors','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('residualFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev=''typeresidual'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('residualFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev=''typeresidual'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('rh','fld_s03i293','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','up','CMIP6_Lmon','CM2','soil_respiration_carbon_flux','map_land_CM2'); -INSERT INTO mapping VALUES('rh','fld_s03i293','','kg m-2 s-1','time lat lon','mon','land','area: time: mean','up','CMIP6_Lmon','ESM1.5','soil_respiration_carbon_flux','map_land_ESM1.5'); -INSERT INTO mapping VALUES('rho','fld_s15i102','level_to_height(var[0],levs=(0,66))','m','time_0 model_rho_level_number lat lon_0','1hrPt','atmos','area: time: point','','','AUS2200','height_above_reference_ellipsoid','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rho0','pot_rho_0','','kg m-3','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CM2_Omon','OM2','sea_water_potential_density','map_ocean_OM2'); -INSERT INTO mapping VALUES('rinum','fld_s03i468','level_to_height(var[0])','1','time model_theta_level_number_0 lat lon_0','1hrPt','atmos','area: time: point','','','AUS2200','GRADIENT RICHARDSON NUMBER','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downwelling_longwave_flux_in_air','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_downwelling_longwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_longwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_downwelling_longwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time_1 lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time lat lon','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time lat lon','day','atmos','area: time: mean','down','CMIP6_CFday','CM2','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlntds','lw_heat','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_net_downward_longwave_flux','map_ocean_OM2'); -INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_net_downward_longwave_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','down','CM2_3hr','CM2','surface_net_downward_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','mon','atmos','area: time: mean','down','CMIP6_Emon','CM2','surface_net_downward_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_net_downward_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time_0 lat lon','3hr','atmos','','up','CMIP6_3hr','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time lat lon','day','atmos','','up','CMIP6_day','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','toa_outgoing_longwave_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','up','CMIP6_E3hr','CM2','toa_outgoing_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time lat lon','day','atmos','area: time: mean','up','CMIP6_day','CM2','toa_outgoing_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','up','CMIP6_E3hr','CM2','toa_outgoing_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','day','atmos','area: time: mean','up','CMIP6_day','CM2','toa_outgoing_longwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlutcs','fld_s02i206','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_longwave_flux_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rlutcs','fld_s02i206','','W m-2','time lat lon','day','atmos','area: time: mean','up','CMIP6_CFday','CM2','toa_outgoing_longwave_flux_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsdo','sw_heat','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downwelling_shortwave_flux_in_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downwelling_shortwave_flux_in_air','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_downwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_downwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time_1 lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time lat lon','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsdsdiff','fld_s01i216','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_diffuse_downwelling_shortwave_flux_in_air','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rsdsdiff','fld_s01i216','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_diffuse_downwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsdsdir','fld_s01i215','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_direct_along_beam_shortwave_flux_in_air ','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rsdt','fld_s01i207','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','toa_incoming_shortwave_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rsdt','fld_s01i207','','W m-2','time lat lon','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','toa_incoming_shortwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsntds','swflx','','W m-2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','net_downward_shortwave_flux_at_sea_water_surface','map_ocean_OM2'); -INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','down','CM2_3hr','CM2','surface_net_downward_shortwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','mon','atmos','area: time: mean','down','CMIP6_Emon','CM2','surface_net_downward_shortwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_net_downward_shortwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rss','fld_s01i202','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_net_downward_shortwave_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time lat lon','day','atmos','area: time: mean','up','CMIP6_day','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsuscs','fld_s01i211','','W m-2','time_0 lat lon','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsuscs','fld_s01i211','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsut','fld_s01i205','','W m-2','time_0 lat lon','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','toa_outgoing_shortwave_flux','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('rsut','fld_s01i208','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_shortwave_flux','map_atmos_CM2'); -INSERT INTO mapping VALUES('rsutcs','fld_s01i209','','W m-2','time lat lon','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_shortwave_flux_assuming_clear_sky','map_atmos_CM2'); -INSERT INTO mapping VALUES('rtmt','fld_s01i207 fld_s01i208 fld_s03i332','var[0]-var[1]-var[2]','W m-2','time lat lon','mon','atmos','area: time:mean','down','CMIP6_Amon','CM2','net_downward_radiative_flux_at_top_of_atmosphere_model','map_atmos_CM2'); -INSERT INTO mapping VALUES('rv850','fld_s30i455','','s-1','time lat_v lon_u','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','atmosphere_relative_vorticity','map_atmos_CM2'); -INSERT INTO mapping VALUES('sbl','fld_s03i298','','kg m-2 s-1','time lat lon','mon','landIce','area: mean where land time: mean','','CMIP6_LImon','CM2','surface_snow_and_ice_sublimation_flux','map_land_CM2'); -INSERT INTO mapping VALUES('sbl','fld_s03i298','','kg m-2 s-1','time lat lon','mon','landIce','area: mean where land time: mean','','CMIP6_LImon','ESM1.5','surface_snow_and_ice_sublimation_flux','map_land_ESM1.5'); -INSERT INTO mapping VALUES('sbl','fld_s03i331 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2 s-1','time pseudo_level_1 lat lon','mon','landIce','area: mean where land time: mean','','CMIP6_LImon','CM2','surface_snow_and_ice_sublimation_flux','map_land_CM2'); -INSERT INTO mapping VALUES('sci','fld_s05i270','','1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','shallow convection indicator','map_atmos_CM2'); -INSERT INTO mapping VALUES('sfcWind','fld_s03i230','','m s-1','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','wind_speed','map_atmos_CM2'); -INSERT INTO mapping VALUES('sfcWind','fld_s03i230','','m s-1','time lat lon','day','atmos','area: time: mean','','CMIP6_day','CM2','wind_speed','map_atmos_CM2'); -INSERT INTO mapping VALUES('sfcWindmax','fld_s03i230_max','','m s-1','time lat lon','day','atmos','area: time: maximum','','CMIP6_day','CM2','wind_speed','map_atmos_CM2'); -INSERT INTO mapping VALUES('sfdsi','sfc_salt_flux_ice','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downward_sea_ice_basal_salt_flux','map_ocean_OM2'); -INSERT INTO mapping VALUES('sfriver','sfc_salt_flux_runoff','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','salt_flux_into_sea_water_from_rivers','map_ocean_OM2'); -INSERT INTO mapping VALUES('sftgif','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],17,landfrac=var[1])','1','time pseudo_level_1 lat lon','mon','land','area: mean','','CMIP6_LImon','CM2','land_ice_area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('sftgif','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],17,landfrac=var[1])','1','time pseudo_level_1 lat lon','mon','land','area: mean','','CMIP6_LImon','ESM1.5','land_ice_area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('sftlf','fld_s03i395','','1','time lat lon','mon','atmos','area: time: mean','','CMIP6_fx','CM2','land_area_fraction','map_atmos_CM2'); -INSERT INTO mapping VALUES('shrubFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[5,8],landfrac=var[1],lev=''typeshrub'')','1','time lat lon','mon','land','','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('shrubFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[5,8],landfrac=var[1],lev=''typeshrub'')','1','time lat lon','mon','land','','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('siconca','fld_s00i031','','1','time lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','sea_ice_area_fraction','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('sifllatstop','fld_s03i234 fld_s00i031','maskSeaIce(var[0],var[1])','W m-2','time lat lon','1hrPt','seaIce','area: time: point','up','AUS2200_A1hr','AUS2200','','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('snm','fld_s08i231','','kg m-2 s-1','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_melt_flux_where_land','map_land_CM2'); -INSERT INTO mapping VALUES('snm','fld_s08i231','','kg m-2 s-1','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_melt_flux_where_land','map_land_ESM1.5'); -INSERT INTO mapping VALUES('snm','fld_s08i237 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2 s-1','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_melt_flux_where_land','map_land_CM2'); -INSERT INTO mapping VALUES('snm','fld_s08i237 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2 s-1','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_melt_flux_where_land','map_land_ESM1.5'); -INSERT INTO mapping VALUES('snw','fld_s00i023','','kg m-2','time lat lon','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','surface_snow_amount','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('snw','fld_s08i023','','kg m-2','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_amount','map_land_CM2'); -INSERT INTO mapping VALUES('snw','fld_s08i023','','kg m-2','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_amount','map_land_ESM1.5'); -INSERT INTO mapping VALUES('snw','fld_s08i236 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_amount','map_land_CM2'); -INSERT INTO mapping VALUES('snw','fld_s08i236 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2','time lat lon','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_amount','map_land_ESM1.5'); -INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_salinity','map_ocean_OM2'); -INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_salinity','map_ocean_OM2'); -INSERT INTO mapping VALUES('sob','bottom_salt','','psu','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_salinity_at_sea_floor','map_ocean_OM2'); -INSERT INTO mapping VALUES('sos','sss','','psu','time yt_ocean xt_ocean','day','ocean','area: time: mean','','CMIP6_Oday','OM2','sea_surface_salinity','map_ocean_OM2'); -INSERT INTO mapping VALUES('sos','sss','','psu','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_surface_salinity','map_ocean_OM2'); -INSERT INTO mapping VALUES('storm','fld_s21i101','','1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','flag_for_location_of_storms','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('ta','fld_s16i004','level_to_height(var[0],levs=(0,66))','K','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('ta','fld_s30i204','','K','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','6hrPt','atmos','area: time: point','','CM2_6hr','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','day','atmos','area: time: mean','','CMIP6_Eday','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','day','atmos','area: time: mean','','CMIP6_day','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('ta24','fld_s16i004 fld_s00i408','plevinterp(var[0], var[1], 24)','K','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200',' air_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','air_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time_0 lat lon','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','air_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','3hrPt','atmos','area: time: point','','CM2_3hr','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','mon','atmos','area: time: mean','','CM2_Amon','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','day','atmos','area: time: mean','','CM2_day','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('tasmax','fld_s03i236_max','','K','time_0 lat lon','1hr','atmos','area: time: maximum','','AUS2200_A1hr','AUS2200','air_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tasmax','fld_s03i236_max','','K','time lat lon','day','atmos','area: time: maximum','','CM2_day','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('tasmin','fld_s03i236_min','','K','time_0 lat lon','1hr','atmos','area: time: minimum','','AUS2200_A1hr','AUS2200','air_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tasmin','fld_s03i236_min','','K','time lat lon','day','atmos','area: time: minimum','','CM2_day','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('tauu','fld_s03i460','','Pa','time lat lon_0','1hrPt','atmos','area: time: point','down','AUS2200_A1hr','AUS2200','surface_downward_eastward_stress','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tauu','fld_s03i460','','Pa','time lat lon_u','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downward_eastward_stress','map_atmos_CM2'); -INSERT INTO mapping VALUES('tauu','fld_s03i460_0','','Pa','time_0 lat lon_0','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downward_eastward_stress','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tauuo','tau_x','','N m-2','time yu_ocean xu_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downward_x_stress_at_sea_water_surface','map_ocean_OM2'); -INSERT INTO mapping VALUES('tauv','fld_s03i461','','Pa','time lat_v lon','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downward_northward_stress','map_atmos_CM2'); -INSERT INTO mapping VALUES('tauv','fld_s03i461_0','','Pa','time_0 lat_0 lon','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downward_northward_stress','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tauv_Pt','fld_s03i461','','Pa','time lat_0 lon','1hrPt','atmos','area: time: point','down','AUS2200_A1hr','AUS2200','surface_downward_northward_stress','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tauvgrid','fld_s30i204','','K','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','air_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('tauvo','tau_y','','N m-2','time yu_ocean xu_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downward_y_stress_at_sea_water_surface','map_ocean_OM2'); -INSERT INTO mapping VALUES('tdps','fld_s03i250','','K','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','dew_point_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tdps','fld_s03i250','','K','time lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','dew_point_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tendkpp','temp_nonlocal_KPP','','W m-2','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CM2_mon','OM2','cp*rho*dzt*nonlocal tendency from KPP','map_ocean_OM2'); -INSERT INTO mapping VALUES('theta','fld_s00i004','level_to_height(var[0],levs=(0,66))','K','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_potential_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('theta','fld_s00i004','','K','time model_theta_level_number lat lon','mon','atmos','area: time: mean','','CM2_mon','CM2','air_potential_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('theta24','fld_s00i004 fld_s00i408','plevinterp(var[0], var[1], 24)','K','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','air_potential_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_potential_temperature','map_ocean_OM2'); -INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_potential_temperature','map_ocean_OM2'); -INSERT INTO mapping VALUES('thkcello','dht','','m','time st_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','cell_thickness','map_ocean_OM2'); -INSERT INTO mapping VALUES('tke','fld_s03i473','level_to_height(var[0])','J m-2','time model_theta_level_number_0 lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','TURBULENT KINETIC ENERGY','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','6hr','ocean','area: time: mean','','CM2_6hr','OM2','sea_surface_temperature','map_ocean_OM2'); -INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','day','ocean','area: time: mean','','CMIP6_Oday','OM2','sea_surface_temperature','map_ocean_OM2'); -INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_surface_temperature','map_ocean_OM2'); -INSERT INTO mapping VALUES('treeFrac','fld_s03i317','extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev=''typetree'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('treeFrac','fld_s03i317','extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev=''typetree'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('treeFracBdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],4,landfrac=var[1],lev=''typetreebd'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('treeFracBdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],4,landfrac=var[1],lev=''typetreebd'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('treeFracBdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],2,landfrac=var[1],lev=''typetreebe'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('treeFracBdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],2,landfrac=var[1],lev=''typetreebe'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('treeFracNdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],3,landfrac=var[1],lev=''typetreend'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('treeFracNdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],3,landfrac=var[1],lev=''typetreend'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('treeFracNdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],1,landfrac=var[1],lev=''typetreene'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('treeFracNdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],1,landfrac=var[1],lev=''typetreene'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('ts','fld_s00i024','','K','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','surface_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('ts','fld_s00i024','','K','time lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','surface_temperature','map_atmos_CM2'); -INSERT INTO mapping VALUES('tsl','fld_s08i225','topsoil_tsl(var[0])','K','time depth lat lon','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','soil_temperature','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('tsl','fld_s08i225','','K','time depth lat lon','mon','land','area: time: mean','','CMIP6_Lmon','CM2','soil_temperature','map_land_CM2'); -INSERT INTO mapping VALUES('tsl','fld_s08i225','','K','time depth lat lon','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','soil_temperature','map_land_ESM1.5'); -INSERT INTO mapping VALUES('ua','fld_s00i002','level_to_height(var[0],levs=(0,66))','m s-1','time model_rho_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','eastward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','6hrPt','atmos','area: time: point','','CM2_6hr','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','day','atmos','area: time: mean','','CMIP6_Eday','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','day','atmos','area: time: mean','','CMIP6_day','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('ua24','fld_s00i002 fld_s00i407','plevinterp(var[0], var[1], 24)','m s-1','time model_rho_level_number lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','eastward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_0','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','eastward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time_0 lat lon_0','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','eastward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','3hrPt','atmos','area: time: point','','CMIP6_3hr','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','day','atmos','area: time: mean','','CMIP6_day','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('uauvgrid','fld_s30i201','','m s-1','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','eastward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('umo','tx_trans','','kg/s','time st_ocean yt_ocean xu_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','ocean_x_mass_transport','map_ocean_OM2'); -INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_x_velocity','map_ocean_OM2'); -INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_x_velocity','map_ocean_OM2'); -INSERT INTO mapping VALUES('va','fld_s00i003','level_to_height(var[0],levs=(0,66))','m s-1','time model_rho_level_number lat_0 lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','northward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','6hrPt','atmos','area: time: point','','CM2_6hr','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','day','atmos','area: time: mean','','CMIP6_Eday','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','day','atmos','area: time: mean','','CMIP6_day','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('va24','fld_s00i003 fld_s00i407','plevinterp(var[0], var[1], 24)','m s-1','time model_rho_level_number lat_0 lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','northward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_0 lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','northward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time_0 lat_0 lon','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','northward_wind','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','3hrPt','atmos','area: time: point','','CMIP6_3hr','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','day','atmos','area: time: mean','','CMIP6_day','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('vauvgrid','fld_s30i202','','m s-1','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','northward_wind','map_atmos_CM2'); -INSERT INTO mapping VALUES('vegFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev=''typeveg'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('vegFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev=''typeveg'')','1','time lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('vmo','ty_trans','','kg/s','time st_ocean yu_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','ocean_y_mass_transport','map_ocean_OM2'); -INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_y_velocity','map_ocean_OM2'); -INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_y_velocity','map_ocean_OM2'); -INSERT INTO mapping VALUES('wa','fld_s00i150','level_to_height(var[0],levs=(0,66))','m s-1','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','upward_air_velocity','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('wa19uvgrid','fld_s30i203','','m s-1','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','upward_air_velocity','map_atmos_CM2'); -INSERT INTO mapping VALUES('wa24','fld_s00i150 fld_s00i408','plevinterp(var[0], var[1], 24)','m s-1','time model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','upward_air_velocity','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','day','atmos','area: time: mean','','CMIP6_Eday','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','day','atmos','area: time: mean','','CMIP6_day','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('wapuvgrid','fld_s30i208','','Pa s-1','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2'); -INSERT INTO mapping VALUES('wetlandFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],11,landfrac=var[1],lev=''typewetla'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2'); -INSERT INTO mapping VALUES('wetlandFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],11,landfrac=var[1],lev=''typewetla'')','1','time pseudo_level_1 lat lon','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5'); -INSERT INTO mapping VALUES('wetss','fld_s38i241','0.05844*sum_vars(var).sum(dim=''model_theta_level_number'')','kg m-2 s-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition','mappings/map_aerosol_CM2'); -INSERT INTO mapping VALUES('wetss','fld_s38i241 fld_s38i242 fld_s38i265 fld_s38i266','calc_depositions(var)','kg m-2 s-1','time model_theta_level_number lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition','map_aerosol_CM2'); -INSERT INTO mapping VALUES('wfo','pme_river','','kg m-2 s-1','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water','map_ocean_OM2'); -INSERT INTO mapping VALUES('wmo','tz_trans','','kg s-1','time sw_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','upward_ocean_mass_transport','map_ocean_OM2'); -INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','day','ocean','area: time: mean','','CM2_day','OM2','upward_sea_water_velocity','map_ocean_OM2'); -INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','upward_sea_water_velocity','map_ocean_OM2'); -INSERT INTO mapping VALUES('wsgmax10m','fld_s03i463','','m s-1','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','wind_speed_of_gust','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('wsgmax10m','fld_s03i463','','m s-1','time_0 lat lon','1hr','atmos','area: time: maximum','','AUS2200_A1hr','AUS2200','wind_speed_of_gust','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('wsgmax10m_max','fld_s03i463_max','','m s-1','time_0 lat lon','10min','atmos','area: time: maximum','','AUS2200_A10min','AUS2200','WIND GUST','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('z0','fld_s00i026','','m','time lat lon','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','ROUGHNESS LENGTH AFTER TIMESTEP','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('zfull','fld_s15i101','level_to_height(var[0],levs=(0,66))','m','time_0 model_theta_level_number lat lon_0','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','height_above_reference_ellipsoid','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('zfull','fld_s15i101','','m','time model_theta_level_number lat lon','mon','atmos','area: time: mean','','CMIP6_fx','CM2','height_above_reference_ellipsoid','map_atmos_CM2'); -INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','geopotential_height','map_atmos_CM2'); -INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','day','atmos','area: time: mean','','CMIP6_Eday','CM2','geopotential_height','map_atmos_CM2'); -INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','day','atmos','area: time: mean','','CMIP6_day','CM2','geopotential_height','map_atmos_CM2'); -INSERT INTO mapping VALUES('zg16','fld_s16i202','','m','time pressure lat lon','3hrPt','atmos','area: time: point','','AUS2200_A3hr','AUS2200','geopotential_height','AUS2200'); -INSERT INTO mapping VALUES('zg500','fld_s30i297','','m','time pressure lat lon','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','geopotential_height','map_atmos_CM2'); -INSERT INTO mapping VALUES('zg500','fld_s30i297','var[0].sel(pressure=500)','m','time pressure lat lon','day','aerosol','area: time: mean','','CMIP6_AERday','CM2','geopotential_height','map_aerosol_CM2'); -INSERT INTO mapping VALUES('zguvgrid','fld_s30i207','','m','time pressure lat_v lon_u','mon','atmos','area: time: mean','','CM2_mon','CM2','geopotential_height','map_atmos_CM2'); -INSERT INTO mapping VALUES('zmla','fld_s00i025','','m','time lat lon','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_boundary_layer_thickness','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('zmla','fld_s00i025','','m','time_0 lat lon','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','atmosphere_boundary_layer_thickness','mappings/map_AUS2200'); -INSERT INTO mapping VALUES('zos','sea_level','','m','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_surface_height_above_geoid','map_ocean_OM2'); -INSERT INTO mapping VALUES('zossq','sea_level_sq','','m2','time yt_ocean xt_ocean','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','square_of_sea_surface_height_above_geoid','map_ocean_OM2'); -INSERT INTO mapping VALUES('ztp','fld_s30i453','','m','time lat lon','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','tropopause_altitude','map_aerosol_CM2'); +INSERT INTO mapping VALUES('abs550aer','fld_s02i240 fld_s02i241 fld_s02i242 fld_s02i243 fld_s02i585','optical_depth(var,3)','1','time pseudo_level_0 lat lon','longitude latitude time lambda550nm','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_absorption_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('advectsweby','temp_sweby_advec','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','CM2','cp*rho*dzt*sweby advect tendency','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('advectsweby','temp_sweby_advec','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','ESM1.5','cp*rho*dzt*sweby advect tendency','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('advectsweby','temp_sweby_advec','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','OM2','cp*rho*dzt*sweby advect tendency','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('agesno','fld_s03i832 fld_s03i317','average_tile(var[0],tilefrac=var[1])','mon','time pseudo_level_1 lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','age_of_surface_snow','map_land_CM2.csv'); +INSERT INTO mapping VALUES('agesno','fld_s03i832 fld_s03i317','average_tile(var[0],tilefrac=var[1])','mon','time pseudo_level_1 lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','age_of_surface_snow','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('agessc','age_global','','yr','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_age_since_surface_contact','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('agessc','age_global','','yr','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_age_since_surface_contact','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('agessc','age_global','','yr','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_age_since_surface_contact','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('amdry','fld_s30i403','','kg m-2','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_mass_per_unit_area','map_AUS2200.csv'); +INSERT INTO mapping VALUES('amdry','fld_s30i403','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','AM3','TOTAL COLUMN DRY MASS RHO GRID','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('amdry','fld_s30i403','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','CM2','atmosphere_mass_per_unit_area','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('amdry','fld_s30i403','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','atmosphere_mass_per_unit_area','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('amwet','fld_s30i404','','kg m-2','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_mass_per_unit_area','map_AUS2200.csv'); +INSERT INTO mapping VALUES('amwet','fld_s30i404','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','AM3','atmosphere_mass_per_unit_area','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('amwet','fld_s30i404','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','CM2','atmosphere_mass_per_unit_area','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('amwet','fld_s30i404','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','atmosphere_mass_per_unit_area','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('areacello','area_t','get_areacello(area_t=var[0])','m-2','yt_ocean xt_ocean','longitude latitude','mon','ocean','area: sum','','CMIP6_Ofx','CM2','cell_area','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('areacello','area_t','get_areacello(area_t=var[0])','m-2','yt_ocean xt_ocean','longitude latitude','mon','ocean','area: sum','','CMIP6_Ofx','ESM1.5','cell_area','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('areacello','area_t','get_areacello(area_t=var[0])','m-2','yt_ocean xt_ocean','longitude latitude','mon','ocean','area: sum','','CMIP6_Ofx','OM2','cell_area','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('areacello','dummy','get_areacello()','1','time st_ocean yt_ocean xt_ocean','longitude latitude','mon','ocean','area: sum','','CMIP6_Ofx','CM2','cell_area','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('areacello','dummy','get_areacello()','1','time st_ocean yt_ocean xt_ocean','longitude latitude','mon','ocean','area: sum','','CMIP6_Ofx','ESM1.5','cell_area','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('areacello','dummy','get_areacello()','1','time st_ocean yt_ocean xt_ocean','longitude latitude','mon','ocean','area: sum','','CMIP6_Ofx','OM2','cell_area','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('baresoilFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],14,landfrac=var[1],lev=''typebare'')','1','time lat lon','longitude latitude time typebare','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('baresoilFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],14,landfrac=var[1],lev=''typebare'')','1','time lat lon','longitude latitude time typebare','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('bigthetao','temp','','deg_C','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_conservative_temperature','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('bigthetao','temp','','deg_C','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_conservative_temperature','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('bigthetao','temp','','deg_C','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_conservative_temperature','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('c3PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev=''typec3pft'')','1','time pseudo_level_1 lat lon','longitude latitude time typec3pft','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('c3PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,8,9,11],landfrac=var[1],lev=''typec3pft'')','1','time pseudo_level_1 lat lon','longitude latitude time typec3pft','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('c4PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1],lev=''typec4pft'')','1','time pseudo_level_1 lat lon','longitude latitude time typec4pft','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('c4PftFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1],lev=''typec4pft'')','1','time pseudo_level_1 lat lon','longitude latitude time typec4pft','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('ci','fld_s05i269','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','deep convection indicator','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('ci','fld_s05i269','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','deep convection indicator','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ci','fld_s05i269','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','deep convection indicator','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('cl','fld_s00i265','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','cloud_area_fraction_in_atmosphere_layer','map_AUS2200.csv'); +INSERT INTO mapping VALUES('cl','fld_s02i261','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','cloud_area_fraction_in_atmosphere_layer','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('cl','fld_s02i261','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','cloud_area_fraction_in_atmosphere_layer','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('cl','fld_s02i261','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','cloud_area_fraction_in_atmosphere_layer','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('clhigh','fld_s09i205','','1','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','high_type_cloud_area_fraction','map_AUS2200.csv'); +INSERT INTO mapping VALUES('cli','fld_s00i012','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_cloud_ice_in_air','map_AUS2200.csv'); +INSERT INTO mapping VALUES('cli','fld_s02i309','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','mass_fraction_of_stratiform_cloud_ice_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('cli','fld_s02i309','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','mass_fraction_of_stratiform_cloud_ice_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('clivi','fld_s30i406','','kg m-2','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_cloud_ice_content','map_AUS2200.csv'); +INSERT INTO mapping VALUES('clivi','fld_s30i406','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','atmosphere_cloud_ice_content','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('clivi','fld_s30i406','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','atmosphere_cloud_ice_content','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('clivi','fld_s30i406','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','atmosphere_cloud_ice_content','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('clivol','fld_s00i268','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','ice_cloud_volume_fraction_in_atmosphere_layer','map_AUS2200.csv'); +INSERT INTO mapping VALUES('cllow','fld_s09i203','','1','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','low_type_cloud_area_fraction','map_AUS2200.csv'); +INSERT INTO mapping VALUES('clmed','fld_s09i204','','1','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','medium_type_cloud_area_fraction','map_AUS2200.csv'); +INSERT INTO mapping VALUES('clmxro','fld_s09i217','','1','time_0 lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','cloud_area_fraction','map_AUS2200.csv'); +INSERT INTO mapping VALUES('clmxro','fld_s09i217','','1','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','cloud_area_fraction','map_AUS2200.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_3hr','CM2','cloud_area_fraction','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_3hr','ESM1.5','cloud_area_fraction','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','%','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','cloud_area_fraction','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','cloud_area_fraction','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','cloud_area_fraction','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','%','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','AM3','cloud_area_fraction','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','CM2','cloud_area_fraction','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('clt','fld_s02i204','','1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','cloud_area_fraction','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('clw','fld_s00i254','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_cloud_liquid_water_in_air','map_AUS2200.csv'); +INSERT INTO mapping VALUES('clw','fld_s02i308','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','mass_fraction_of_stratiform_cloud_liquid_water_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('clw','fld_s02i308','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','mass_fraction_of_stratiform_cloud_liquid_water_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('clwvol','fld_s00i267','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','liquid_cloud_volume_fraction_in_atmosphere_layer','map_AUS2200.csv'); +INSERT INTO mapping VALUES('cmor_var','input_vars','calculation','units','dimensions','axes','frequency','realm','cell_methods','positive','cmor_table','version','standard_name','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('cropFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typecrop'')','1','time lat lon','longitude latitude time typecrop','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('cropFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typecrop'')','1','time lat lon','longitude latitude time typecrop','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('cropFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typec3crop'')','1','time pseudo_level_1 lat lon','longitude latitude time typec3crop','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('cropFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],9,landfrac=var[1],lev=''typec3crop'')','1','time pseudo_level_1 lat lon','longitude latitude time typec3crop','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('cw','fld_s08i209','','kg m-2','time lat lon','longitude latitude time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','canopy_water_amount','map_AUS2200.csv'); +INSERT INTO mapping VALUES('cw','fld_s08i209','','kg m-2','time lat lon','longitude latitude time','mon','land','area: time: mean','','CM2_mon','AM3','canopy_water_amount','map_land_AM3.csv'); +INSERT INTO mapping VALUES('cw','fld_s08i209','','kg m-2','time lat lon','longitude latitude time','mon','land','area: time: mean','','CM2_mon','CM2','canopy_water_amount','map_land_CM2.csv'); +INSERT INTO mapping VALUES('cw','fld_s08i209','','kg m-2','time lat lon','longitude latitude time','mon','land','area: time: mean','','CM2_mon','ESM1.5','canopy_water_amount','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('deptho','ht','','m','yt_ocean xt_ocean','longitude latitude','mon','ocean','area: time: point','','CMIP6_Ofx','CM2','sea_floor_depth_below_geoid','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('deptho','ht','','m','yt_ocean xt_ocean','longitude latitude','mon','ocean','area: time: point','','CMIP6_Ofx','ESM1.5','sea_floor_depth_below_geoid','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('deptho','ht','','m','yt_ocean xt_ocean','longitude latitude','mon','ocean','area: time: point','','CMIP6_Ofx','OM2','sea_floor_depth_below_geoid','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('difvho','diff_cbt_t','','m2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','CM2','ocean_vertical_heat_diffusivity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('difvho','diff_cbt_t','','m2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','ESM1.5','ocean_vertical_heat_diffusivity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('difvho','diff_cbt_t','','m2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','OM2','ocean_vertical_heat_diffusivity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('dryss','fld_s38i218 fld_s38i219','calc_depositions(var)','kg m-2 s-1','time model_theta_level_number lat lon','longitude latitude time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_dry_deposition','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('eow','fld_s03i232','','kg m-2 s-1','time_0 lat lon','longitude latitude time','1hr','land','area: time: mean','','AUS2200_A1hr','AUS2200','Evaporation flux from open sea','map_AUS2200.csv'); +INSERT INTO mapping VALUES('eow','fld_s03i232','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CM2_mon','AM3','Evaporation flux from open sea','map_land_AM3.csv'); +INSERT INTO mapping VALUES('eow','fld_s03i232','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CM2_mon','CM2','Evaporation flux from open sea','map_land_CM2.csv'); +INSERT INTO mapping VALUES('eow','fld_s03i232','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CM2_mon','ESM1.5','Evaporation flux from open sea','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('estot','fld_s03i229','','kg m-2','time_0 lat lon','longitude latitude time','1hr','land','area: time: sum','','AUS2200_A1hr','AUS2200','EVAP FROM SOIL SURF -AMOUNT KG/M2/TS','map_AUS2200.csv'); +INSERT INTO mapping VALUES('evs','evap','','kg m-2 -s','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','water_evaporation_flux','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('evs','evap','','kg m-2 -s','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','water_evaporation_flux','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('evs','evap','','kg m-2 -s','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_evaporation_flux','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('evspsbl','fld_s03i223','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','water_evaporation_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('evspsbl','fld_s03i223','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','water_evaporation_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('evspsbl','fld_s03i223','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','water_evaporation_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('evspsbl','fld_s03i223_0','','kg m-2 s-1','time lat lon','longitude latitude time','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','water_evaporation_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('evspsbl_Pt','fld_s03i223','','kg m-2 s-1','time lat lon','longitude latitude time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','water_evaporation_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('evspsblpot','fld_s03i335','','kg m-2 s-1','time pseudo_level lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','water_potential_evaporation_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('evspsblsoi','fld_s03i296','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','up','CMIP6_Lmon','ESM1.5','water_evaporation_flux_from_soil','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('evspsblsoi','fld_s03i296 fld_s03i331 fld_s03i317','var[0] + average_tile(var[1],tilefrac=var[2],lfrac=0)','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','up','CMIP6_Lmon','CM2','water_evaporation_flux_from_soil','map_land_CM2.csv'); +INSERT INTO mapping VALUES('evspsblveg','fld_s03i297','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','AM3','water_evaporation_flux_from_canopy','map_land_AM3.csv'); +INSERT INTO mapping VALUES('evspsblveg','fld_s03i297','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','CM2','water_evaporation_flux_from_canopy','map_land_CM2.csv'); +INSERT INTO mapping VALUES('evspsblveg','fld_s03i297','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','water_evaporation_flux_from_canopy','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('ficeberg2d','ice_calving','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','water_flux_into_sea_water_from_icebergs','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ficeberg2d','ice_calving','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','water_flux_into_sea_water_from_icebergs','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ficeberg2d','ice_calving','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water_from_icebergs','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('flashrate','fld_s21i100','','s-1','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','lightning_flash_rate','map_AUS2200.csv'); +INSERT INTO mapping VALUES('fracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1])','1','time pseudo_level_1 lat lon','longitude latitude landUse time','mon','land','area: time: mean','','CMIP6_Emon','CM2','SURFACE TILE FRACTIONS','map_land_CM2.csv'); +INSERT INTO mapping VALUES('fracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1])','1','time pseudo_level_1 lat lon','longitude latitude landUse time','mon','land','area: time: mean','','CMIP6_Emon','ESM1.5','SURFACE TILE FRACTIONS','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('friver','runoff','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','water_flux_into_sea_water_from_rivers','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('friver','runoff','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','water_flux_into_sea_water_from_rivers','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('friver','runoff','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water_from_rivers','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('fsitherm','melt','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','water_flux_into_sea_water_due_to_sea_ice_thermodynamics','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('fsitherm','melt','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','water_flux_into_sea_water_due_to_sea_ice_thermodynamics','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('fsitherm','melt','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water_due_to_sea_ice_thermodynamics','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('gpp','fld_s03i261','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','down','CMIP6_Lmon','AM3','gross_primary_productivity_of_biomass_expressed_as_carbon','map_land_AM3.csv'); +INSERT INTO mapping VALUES('gpp','fld_s03i261','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','down','CMIP6_Lmon','CM2','gross_primary_productivity_of_biomass_expressed_as_carbon','map_land_CM2.csv'); +INSERT INTO mapping VALUES('gpp','fld_s03i261','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','down','CMIP6_Lmon','ESM1.5','gross_primary_productivity_of_biomass_expressed_as_carbon','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('grassFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[6,7],landfrac=var[1],lev=''typenatgr'')','1','time pseudo_level_1 lat lon','longitude latitude time typenatgr','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('grassFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[6,7],landfrac=var[1],lev=''typenatgr'')','1','time pseudo_level_1 lat lon','longitude latitude time typenatgr','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('grassFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],6,landfrac=var[1],lev=''typec3natg'')','1','time lat lon','longitude latitude time typec3natg','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('grassFracC3','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],6,landfrac=var[1],lev=''typec3natg'')','1','time lat lon','longitude latitude time typec3natg','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('grassFracC4','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1],lev=''typec4natg'')','1','time pseudo_level_1 lat lon','longitude latitude time typec4natg','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('grassFracC4','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],7,landfrac=var[1],lev=''typec4natg'')','1','time pseudo_level_1 lat lon','longitude latitude time typec4natg','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('grplmxrat','fld_s00i273','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_graupel_in_air','map_AUS2200.csv'); +INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d','sum_vars(var[:3])+ var[3].sum(dim=''st_ocean'')','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','surface_downward_heat_flux_in_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d','sum_vars(var[:3])+ var[3].sum(dim=''st_ocean'')','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','surface_downward_heat_flux_in_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d','sum_vars(var[:3])+ var[3].sum(dim=''st_ocean'')','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_heat_flux_in_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z','sum_vars(var)','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','surface_downward_heat_flux_in_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z','sum_vars(var)','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','surface_downward_heat_flux_in_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfds','sfc_hflux_from_runoff sfc_hflux_coupler sfc_hflux_pme frazil_3d_int_z','sum_vars(var)','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_heat_flux_in_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfdsn','fld_s08i202','','W m-2','time lat lon','longitude latitude time','mon','landIce','area: mean where land time: mean','down','CMIP6_LImon','CM2','surface_downward_heat_flux_in_snow','map_land_CM2.csv'); +INSERT INTO mapping VALUES('hfdsn','fld_s08i202','','W m-2','time lat lon','longitude latitude time','mon','landIce','area: mean where land time: mean','down','CMIP6_LImon','ESM1.5','surface_downward_heat_flux_in_snow','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfevapds','sfc_hflux_from_water_evap','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfevapds','sfc_hflux_from_water_evap','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfevapds','sfc_hflux_from_water_evap','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfibthermds2d','calving_melt_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','heat_flux_into_sea_water_due_to_iceberg_thermodynamics','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfibthermds2d','calving_melt_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','heat_flux_into_sea_water_due_to_iceberg_thermodynamics','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfibthermds2d','calving_melt_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_iceberg_thermodynamics','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upward_latent_heat_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','ESM1.5','surface_upward_latent_heat_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','surface_upward_latent_heat_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upward_latent_heat_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','surface_upward_latent_heat_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','AM3','surface_upward_latent_heat_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','CM2','surface_upward_latent_heat_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','ESM1.5','surface_upward_latent_heat_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfls','fld_s03i234_0','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','surface_upward_latent_heat_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('hfls_Pt','fld_s03i234','','W m-2','time lat lon','longitude latitude time1','1hrPt','atmos','area: time: point','up','AUS2200_A1hr','AUS2200','surface_upward_latent_heat_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('hflso','evap_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','surface_downward_latent_heat_flux','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hflso','evap_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','surface_downward_latent_heat_flux','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hflso','evap_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_latent_heat_flux','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfrainds','sfc_hflux_from_water_prec','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfrainds','sfc_hflux_from_water_prec','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfrainds','sfc_hflux_from_water_prec','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfrunoffds2d','sfc_hflux_from_runoff','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfrunoffds2d','sfc_hflux_from_runoff','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfrunoffds2d','sfc_hflux_from_runoff','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfsifrazil','frazil_3d','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfsifrazil','frazil_3d','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfsifrazil','frazil_3d','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfsifrazil2d','frazil_3d','var[0].sum(dim=''st_ocean'')','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfsifrazil2d','frazil_3d','var[0].sum(dim=''st_ocean'')','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfsifrazil2d','frazil_3d','var[0].sum(dim=''st_ocean'')','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_freezing_of_frazil_ice','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfsnthermds2d','fprec_melt_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','heat_flux_into_sea_water_due_to_snow_thermodynamics','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfsnthermds2d','fprec_melt_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','heat_flux_into_sea_water_due_to_snow_thermodynamics','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfsnthermds2d','fprec_melt_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','heat_flux_into_sea_water_due_to_snow_thermodynamics','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upward_sensible_heat_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','ESM1.5','surface_upward_sensible_heat_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','surface_upward_sensible_heat_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upward_sensible_heat_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','surface_upward_sensible_heat_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','AM3','surface_upward_sensible_heat_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','CM2','surface_upward_sensible_heat_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','ESM1.5','surface_upward_sensible_heat_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfss','fld_s03i217_0','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','surface_upward_sensible_heat_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('hfss_Pt','fld_s03i217','','W m-2','time lat lon','longitude latitude time1','1hrPt','atmos','area: time: point','up','AUS2200_A1hr','AUS2200','surface_upward_sensible_heat_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('hfsso','sens_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','surface_downward_sensible_heat_flux','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('hfsso','sens_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','surface_downward_sensible_heat_flux','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('hfsso','sens_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_downward_sensible_heat_flux','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('hur','fld_s30i296','','%','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hur','fld_s30i296','','%','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hur17','fld_s30i296','','%','time pressure lat lon','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','relative_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hur17uvgrid','fld_s30i206','','%','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','relative_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hur19','fld_s30i296','','%','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CM2_day','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hur19','fld_s30i296','','%','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CM2_day','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hur19uvgrid','fld_s30i206','','%','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hur19uvgrid','fld_s30i206','','%','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time1 height1.5m','3hrPt','atmos','area: time: point','','CM2_3hr','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time1 height1.5m','3hrPt','atmos','area: time: point','','CM2_3hr','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','AM3','relative_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','AM3','relative_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hurs','fld_s03i245','','%','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hursmax','fld_s03i245_max','','%','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: maximum','','CM2_day','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hursmax','fld_s03i245_max','','%','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: maximum','','CM2_day','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hursmin','fld_s03i245_min','','%','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: minimum','','CM2_day','CM2','relative_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hursmin','fld_s03i245_min','','%','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: minimum','','CM2_day','ESM1.5','relative_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hus','fld_s00i010','level_to_height(var[0],levs=(0,66))','1','time model_theta_level_number lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','specific_humidity','map_AUS2200.csv'); +INSERT INTO mapping VALUES('hus','fld_s00i010','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_CFmon','AM3','specific_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hus','fld_s00i010','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_CFmon','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hus','fld_s00i010','level_to_height(var[0])','1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CMIP6_CFmon','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hus','fld_s30i295','','1','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hus17','fld_s30i295','','1','time pressure lat lon','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','specific_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hus17uvgrid','fld_s30i205','','1','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','specific_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('hus19uvgrid','fld_s30i205','','1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('hus19uvgrid','fld_s30i205','','1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('hus24','fld_s00i010 fld_s00i408','plevinterp(var[0], var[1], 24)','1','time model_theta_level_number lat lon','longitude latitude plev24 time1','1hrPt','atmos','area: time: mean','','AUS2200_A1hrPlev','AUS2200','specific_humidity','map_AUS2200.csv'); +INSERT INTO mapping VALUES('huslev1','fld_s00i010','','1','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','surface_specific_humidity','map_AUS2200.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time1 height1.5m','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','specific_humidity','map_AUS2200.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time_0 lat lon','longitude latitude time height1.5m','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','specific_humidity','map_AUS2200.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','3hrPt','atmos','area: time: point','','CM2_3hr','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','3hrPt','atmos','area: time: point','','CM2_3hr','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','AM3','specific_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','AM3','specific_humidity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','CM2','specific_humidity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('huss','fld_s03i237','','1','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','specific_humidity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('intuaw','fld_s30i428','','kg m-1 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Emon','AM3','dry mass col int u*q per unit area','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('intuaw','fld_s30i428','','kg m-1 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Emon','CM2','eastward_atmosphere_water_transport_across_unit_distance','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('intuaw','fld_s30i428','','kg m-1 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Emon','ESM1.5','eastward_atmosphere_water_transport_across_unit_distance','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('intvaw','fld_s30i429','','kg m-1 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Emon','AM3','dry mass col int v*q per unit area','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('intvaw','fld_s30i429','','kg m-1 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Emon','CM2','northward_atmosphere_water_transport_across_unit_distance','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('intvaw','fld_s30i429','','kg m-1 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Emon','ESM1.5','northward_atmosphere_water_transport_across_unit_distance','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('landCoverFrac','fld_s03i317 fld_s03i395','calc_landcover(var, ''cable'')','1','time pseudo_level_1 lat lon','longitude latitude vegtype time','mon','land','area: time: mean','','CMIP6_Lmon','CM2','SURFACE TILE FRACTIONS','map_land_CM2.csv'); +INSERT INTO mapping VALUES('landCoverFrac','fld_s03i317 fld_s03i395','calc_landcover(var, ''cable'')','1','time pseudo_level_1 lat lon','longitude latitude vegtype time','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','SURFACE TILE FRACTIONS','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('lmask','fld_s00i030','var[0].isel(time=0).astype(int)','%','time lat lon','longitude latitude','mon','land','area: time: mean','','AUS2200_fx','AM3','land_binary_mask','map_land_AM3.csv'); +INSERT INTO mapping VALUES('lmask','fld_s00i030','var[0].isel(time=0).astype(int)','1','time_1 lat lon','longitude latitude','1hrPt','land','area: time: point','','AUS2200_fx','AUS2200','land_binary_mask','map_AUS2200.csv'); +INSERT INTO mapping VALUES('lmask','fld_s00i030','var[0].isel(time=0).astype(int)','1','time lat lon','longitude latitude','mon','land','area: time: point','','AUS2200_fx','CM2','land_binary_mask','map_land_CM2.csv'); +INSERT INTO mapping VALUES('lmask','fld_s00i030','var[0].isel(time=0).astype(int)','1','time lat lon','longitude latitude','mon','land','area: time: point','','AUS2200_fx','ESM1.5','land_binary_mask','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('lwp','fld_s30i405','','kg m-2','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_cloud_liquid_water_content','map_AUS2200.csv'); +INSERT INTO mapping VALUES('lwp','fld_s30i405','','kg m-2','time lat lon','longitude latitude time','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','atmosphere_cloud_liquid_water_content','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('lwp','fld_s30i405','','kg m-2','time lat lon','longitude latitude time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_cloud_liquid_water_content','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('masscello','rho_dzt','','kg m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_mass_per_unit_area','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('masscello','rho_dzt','','kg m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_mass_per_unit_area','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('masscello','rho_dzt','','kg m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_mass_per_unit_area','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('mc','fld_s05i250 fld_s05i251','level_to_height((var[0]-var[1])/9.80665)','kg m-2 s-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','','up','CM2_mon','CM2','atmosphere_net_upward_convective_mass_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('mc','fld_s05i250 fld_s05i251','level_to_height((var[0]-var[1])/9.80665)','kg m-2 s-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','','up','CM2_mon','ESM1.5','atmosphere_net_upward_convective_mass_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CM2_day','CM2','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CM2_day','ESM1.5','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CM2_day','OM2','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('mlotst','mld','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('mlotstsq','mld_sq','','m2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','square_of_ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('mlotstsq','mld_sq','','m2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','square_of_ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('mlotstsq','mld_sq','','m2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','square_of_ocean_mixed_layer_thickness_defined_by_sigma_t','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('mmrbc','fld_s34i105 fld_s34i109 fld_s34i115 fld_s34i120','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('mmrbc','fld_s34i105 fld_s34i109 fld_s34i115 fld_s34i120','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_elemental_carbon_dry_aerosol_particles_in_air','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('mmrdust','fld_s00i431 fld_s00i432 fld_s00i433 fld_s00i434 fld_s00i435 fld_s00i436','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','mass_fraction_of_dust_dry_aerosol_particles_in_air','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('mmrdust','fld_s00i431 fld_s00i432 fld_s00i433 fld_s00i434 fld_s00i435 fld_s00i436','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_dust_dry_aerosol_particles_in_air','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('mmroa','fld_s34i106 fld_s34i110 fld_s34i116 fld_s34i121 fld_s34i126','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('mmroa','fld_s34i106 fld_s34i110 fld_s34i116 fld_s34i121 fld_s34i126','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_particulate_organic_matter_dry_aerosol_particles_in_air','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('mmrso4','fld_s34i102 fld_s34i104 fld_s34i108 fld_s34i114','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','mass_fraction_of_sulfate_dry_aerosol_particles_in_air','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('mmrso4','fld_s34i102 fld_s34i104 fld_s34i108 fld_s34i114','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_sulfate_dry_aerosol_particles_in_air','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('mmrss','fld_s34i111 fld_s34i117','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','mass_fraction_of_sea_salt_dry_aerosol_particles_in_air','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('mmrss','fld_s34i111 fld_s34i117','level_to_height(sum_vars(var))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','mass_fraction_of_sea_salt_dry_aerosol_particles_in_air','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('mrfso','fld_s08i223 fld_s08i230','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','longitude latitude time','mon','land','area: mean where land time: mean','','CMIP6_Lmon','CM2','soil_frozen_water_content','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrfso','fld_s08i223 fld_s08i230','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','longitude latitude time','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','soil_frozen_water_content','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrfsofr','fld_s08i230','','1','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CM2_mon','AM3','mass_fraction_of_frozen_water_in_soil_moisture','map_land_AM3.csv'); +INSERT INTO mapping VALUES('mrfsofr','fld_s08i230','','1','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CM2_mon','CM2','mass_fraction_of_frozen_water_in_soil_moisture','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrfsofr','fld_s08i230','','1','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CM2_mon','ESM1.5','mass_fraction_of_frozen_water_in_soil_moisture','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrlqso','fld_s08i229','','1','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','AM3_Amon','AM3','mass_fraction_of_unfrozen_water_in_soil_moisture','map_land_AM3.csv'); +INSERT INTO mapping VALUES('mrlqso','fld_s08i229','','1','time depth lat lon','longitude latitude sdepth time','mon','land','area: mean where land time: mean','','AM3_Amon','CM2','mass_fraction_of_unfrozen_water_in_soil_moisture','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrlqso','fld_s08i229','','1','time depth lat lon','longitude latitude sdepth time','mon','land','area: mean where land time: mean','','AM3_Amon','ESM1.5','mass_fraction_of_unfrozen_water_in_soil_moisture','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrlso','fld_s08i223 fld_s08i229','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','longitude latitude time','mon','land','area: mean where land time: mean','','CMIP6_Emon','CM2','liquid_water_content_of_soil_layer','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrlso','fld_s08i223 fld_s08i229','(var[0]*var[1]).sum(dim=''depth'')','kg m-2','time depth lat lon','longitude latitude time','mon','land','area: mean where land time: mean','','CMIP6_Emon','ESM1.5','liquid_water_content_of_soil_layer','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrro','fld_s08i234 fld_s08i235','sum_vars(var)','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: mean where land time: mean','','CMIP6_Lmon','CM2','runoff_flux','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrro','fld_s08i234 fld_s08i235','sum_vars(var)','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','runoff_flux','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrrob','fld_s08i235','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','AM3_Amon','AM3','subsurface_runoff_flux','map_land_AM3.csv'); +INSERT INTO mapping VALUES('mrrob','fld_s08i235','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','AM3_Amon','CM2',' subsurface_runoff_flux','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrrob','fld_s08i235','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','AM3_Amon','ESM1.5',' subsurface_runoff_flux','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrros','fld_s08i234','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','AM3','surface_runoff_flux','map_land_AM3.csv'); +INSERT INTO mapping VALUES('mrros','fld_s08i234','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','CM2','surface_runoff_flux','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrros','fld_s08i234','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','surface_runoff_flux','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrsfl','fld_s08i223 fld_s08i230','var[0]*var[1]','kg m-2','time depth lat lon','longitude latitude sdepth time','mon','land','area: mean where land time: mean','','CMIP6_Emon','CM2','frozen_water_content_of_soil_layer','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrsfl','fld_s08i223 fld_s08i230','var[0]*var[1]','kg m-2','time depth lat lon','longitude latitude sdepth time','mon','land','area: mean where land time: mean','','CMIP6_Emon','ESM1.5','frozen_water_content_of_soil_layer','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrsll','fld_s08i223 fld_s08i229','var[0]*var[1]','kg m-2','time depth lat lon','longitude latitude sdepth time','mon','land','area: mean where land time: mean','','CMIP6_Emon','CM2','liquid_water_content_of_soil_layer','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrsll','fld_s08i223 fld_s08i229','var[0]*var[1]','kg m-2','time depth lat lon','longitude latitude sdepth time','mon','land','area: mean where land time: mean','','CMIP6_Emon','ESM1.5','liquid_water_content_of_soil_layer','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrso','fld_s08i208','','kg m-2','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','CM2','mass_content_of_water_in_soil','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrso','fld_s08i223','var[0].sum(dim=''depth'')','kg m-2','time depth lat lon','longitude latitude time1','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','','map_AUS2200.csv'); +INSERT INTO mapping VALUES('mrso','fld_s08i223','var[0].sum(dim=''depth'')','kg m-2','time depth lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','AM3','mass_content_of_water_in_soil_layer','map_land_AM3.csv'); +INSERT INTO mapping VALUES('mrso','fld_s08i223','var[0].sum(dim=''depth'')','kg m-2','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','CM2','mass_content_of_water_in_soil','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrso','fld_s08i223','var[0].sum(dim=''depth'')','kg m-2','time lat lon','longitude latitude time','mon','land','area: time: mean','','CMIP6_Lmon','ESM1.5','mass_content_of_water_in_soil','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrsol','fld_s08i223','','kg m-2','time depth lat lon','longitude latitude sdepth time1','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','mass_content_of_water_in_soil_layer','map_AUS2200.csv'); +INSERT INTO mapping VALUES('mrsol','fld_s08i223','','kg m-2','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CMIP6_Emon','AM3','mass_content_of_water_in_soil_layer','map_land_AM3.csv'); +INSERT INTO mapping VALUES('mrsol','fld_s08i223','','kg m-2','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CMIP6_Emon','CM2','mass_content_of_water_in_soil_layer','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrsol','fld_s08i223','','kg m-2','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CMIP6_Emon','ESM1.5','mass_content_of_water_in_soil_layer','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('mrsos','fld_s08i223','calc_top_soil(var[0])','kg m-2','time depth lat lon','longitude latitude time1 sdepth1','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','','map_AUS2200.csv'); +INSERT INTO mapping VALUES('mrsos','fld_s08i223','calc_topsoil(var[0])','kg m-2','time depth lat lon','longitude latitude time sdepth1','mon','land','area: time: mean','','CMIP6_Lmon','AM3','mass_content_of_water_in_soil_layer','map_land_AM3.csv'); +INSERT INTO mapping VALUES('mrsos','fld_s08i223','calc_topsoil(var[0])','kg m-2','time depth lat lon','longitude latitude time sdepth1','mon','land','area: mean where land time: mean','','CMIP6_Lmon','CM2','mass_content_of_water_in_soil_layer','map_land_CM2.csv'); +INSERT INTO mapping VALUES('mrsos','fld_s08i223','calc_topsoil(var[0])','kg m-2','time depth lat lon','longitude latitude time sdepth1','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','mass_content_of_water_in_soil_layer','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('msftmrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','latitude rho basin time','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','CM2','ocean_meridional_overturning_mass_streamfunction','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('msftmrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','latitude rho basin time','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','ESM1.5','ocean_meridional_overturning_mass_streamfunction','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('msftmrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','latitude rho basin time','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','OM2','ocean_meridional_overturning_mass_streamfunction','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('msftmz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','latitude olevel basin time','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','CM2','ocean_meridional_overturning_mass_streamfunction','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('msftmz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','latitude olevel basin time','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','ESM1.5','ocean_meridional_overturning_mass_streamfunction','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('msftmz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','latitude olevel basin time','mon','ocean','longitude: sum depth: sum time: mean','','CMIP6_Omon','OM2','ocean_meridional_overturning_mass_streamfunction','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('msftyrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','gridlatitude rho basin time','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','CM2','ocean_y_overturning_mass_streamfunction','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('msftyrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','gridlatitude rho basin time','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','ESM1.5','ocean_y_overturning_mass_streamfunction','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('msftyrho','ty_trans_rho ty_trans_rho_gm','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','gridlatitude rho basin time','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','OM2','ocean_y_overturning_mass_streamfunction','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('msftyz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','gridlatitude olevel basin time','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','CM2','ocean_y_overturning_mass_streamfunction','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('msftyz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','gridlatitude olevel basin time','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','ESM1.5','ocean_y_overturning_mass_streamfunction','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('msftyz','ty_trans ty_trans_gm ty_trans_submeso','calc_overt(var)','kg s-1','time potrho grid_yu_ocean grid_xt_ocean','gridlatitude olevel basin time','mon','ocean','time: mean grid_longitude: mean','','CMIP6_Omon','OM2','ocean_y_overturning_mass_streamfunction','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('nep','fld_s03i262 fld_s03i293','var[0]-var[1]','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: mean where land time: mean','down','CMIP6_Emon','CM2','surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change','map_land_CM2.csv'); +INSERT INTO mapping VALUES('nep','fld_s03i262 fld_s03i293','var[0]-var[1]','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: mean where land time: mean','down','CMIP6_Emon','ESM1.5','surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('nflash','fld_s21i104','','1','time_0 lat lon','longitude latitude time','10min','atmos','area: time: sum','','AUS2200_A10min','AUS2200','Number_of_lightning_flashes','map_AUS2200.csv'); +INSERT INTO mapping VALUES('npp','fld_s03i262','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','down','CMIP6_Lmon','CM2','net_primary_productivity_of_biomass_expressed_as_carbon','map_land_CM2.csv'); +INSERT INTO mapping VALUES('npp','fld_s03i262','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','down','CMIP6_Lmon','ESM1.5','net_primary_productivity_of_biomass_expressed_as_carbon','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('nwdFracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1],nwd=1)','1','time pseudo_level_1 lat lon','longitude latitude landUse time typenwd','mon','land','area: time: mean','','CMIP6_Emon','CM2','SURFACE TILE FRACTIONS','map_land_CM2.csv'); +INSERT INTO mapping VALUES('nwdFracLut','fld_s03i317 fld_s03i395','landuse_frac(var[0],landfrac=var[1],nwd=1)','1','time pseudo_level_1 lat lon','longitude latitude landUse time typenwd','mon','land','area: time: mean','','CMIP6_Emon','ESM1.5','SURFACE TILE FRACTIONS','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('obvfsq','bv_freq','var[0]**2','s-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','square_of_brunt_vaisala_frequency_in_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('obvfsq','bv_freq','var[0]**2','s-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','square_of_brunt_vaisala_frequency_in_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('obvfsq','bv_freq','var[0]**2','s-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','square_of_brunt_vaisala_frequency_in_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ocontempdiff','temp_vdiffuse_diff_cbt','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ocontempdiff','temp_vdiffuse_diff_cbt','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ocontempdiff','temp_vdiffuse_diff_cbt','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_dianeutral_mixing','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ocontemppadvect','neutral_gm_temp','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ocontemppadvect','neutral_gm_temp','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ocontemppadvect','neutral_gm_temp','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ocontemppmdiff','neutral_diffusion_temp','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ocontemppmdiff','neutral_diffusion_temp','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ocontemppmdiff','neutral_diffusion_temp','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ocontemppsmadvect','temp_submeso','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ocontemppsmadvect','temp_submeso','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ocontemppsmadvect','temp_submeso','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ocontemprmadvect','temp_advection neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ocontemprmadvect','temp_advection neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ocontemprmadvect','temp_advection neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ocontemprmadvect','temp_sweby_advect neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ocontemprmadvect','temp_sweby_advect neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ocontemprmadvect','temp_sweby_advect neutral_gm_temp temp_submeso','sum_vars(var)','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ocontemptend','temp_tendency','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('ocontemptend','temp_tendency','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('ocontemptend','temp_tendency','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_conservative_temperature_expressed_as_heat_content','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('od440aer','fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303','optical_depth(var,2)','1','time pseudo_level_0 lat lon','longitude latitude time','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','atmosphere_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('od440aer','fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303','optical_depth(var,2)','1','time pseudo_level_0 lat lon','longitude latitude time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('od550aer','fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303','optical_depth(var,3)','1','time pseudo_level_0 lat lon','longitude latitude time lambda550nm','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','atmosphere_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('od550aer','fld_s02i285 fld_s02i300 fld_s02i301 fld_s02i302 fld_s02i303','optical_depth(var,3)','1','time pseudo_level_0 lat lon','longitude latitude time lambda550nm','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_optical_thickness_due_to_ambient_aerosol_particles','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('od550lt1aer','fld_s02i300 fld_s02i301 fld_s02i303','optical_depth(var,3)','1','time pseudo_level_0 lat lon','longitude latitude time lambda550nm','mon','aerosol','area: time: mean','','CMIP6_AERmon','AM3','atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('od550lt1aer','fld_s02i300 fld_s02i301 fld_s02i303','optical_depth(var,3)','1','time pseudo_level_0 lat lon','longitude latitude time lambda550nm','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','atmosphere_optical_thickness_due_to_pm1_ambient_aerosol_particles','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('omldamax','hblt_max','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: max','','CM2_mon','CM2','ocean_mixed_layer_thickness_defined_by_mixing_scheme','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('omldamax','hblt_max','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: max','','CM2_mon','ESM1.5','ocean_mixed_layer_thickness_defined_by_mixing_scheme','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('omldamax','hblt_max','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: max','','CM2_mon','OM2','ocean_mixed_layer_thickness_defined_by_mixing_scheme','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('orog','fld_s00i033','var[0].isel(time=0)','m','time lat lon','longitude latitude','mon','land','area: time: mean','','CMIP6_fx','AM3','surface_altitude','map_land_AM3.csv'); +INSERT INTO mapping VALUES('orog','fld_s00i033','var[0].isel(time=0)','m','time_1 lat lon','longitude latitude','1hrPt','land','area: time: point','','CMIP6_fx','AUS2200','surface_altitude','map_AUS2200.csv'); +INSERT INTO mapping VALUES('orog','fld_s00i033','var[0].isel(time=0)','m','time lat lon','longitude latitude','mon','land','area: mean','','CMIP6_fx','CM2','surface_altitude','map_land_CM2.csv'); +INSERT INTO mapping VALUES('orog','fld_s00i033','var[0].isel(time=0)','m','time lat lon','longitude latitude','mon','land','area: mean','','CMIP6_fx','ESM1.5','surface_altitude','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('orog','surface_altitude','','m','time lat lon','longitude latitude','mon','land','area: time: mean','','CMIP6_fx','CM2','surface_altitude','map_land_CM2.csv'); +INSERT INTO mapping VALUES('orog','surface_altitude','','m','time lat lon','longitude latitude','mon','land','area: time: mean','','CMIP6_fx','ESM1.5','surface_altitude','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('osaltdiff','salt_vdiffuse_diff_cbt','','kg m-2 -s','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('osaltdiff','salt_vdiffuse_diff_cbt','','kg m-2 -s','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('osaltdiff','salt_vdiffuse_diff_cbt','','kg m-2 -s','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_dianeutral_mixing','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('osaltpadvect','neutral_gm_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('osaltpadvect','neutral_gm_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('osaltpadvect','neutral_gm_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('osaltpmdiff','neutral_diffusion_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('osaltpmdiff','neutral_diffusion_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('osaltpmdiff','neutral_diffusion_salt','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_eddy_diffusion','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('osaltpsmadvect','salt_submeso','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('osaltpsmadvect','salt_submeso','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('osaltpsmadvect','salt_submeso','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_submesoscale_eddy_advection','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('osaltrmadvect','salt_advection neutral_gm_salt salt_submeso','sum_vars(var)','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('osaltrmadvect','salt_advection neutral_gm_salt salt_submeso','sum_vars(var)','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('osaltrmadvect','salt_advection neutral_gm_salt salt_submeso','sum_vars(var)','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('osalttend','salt_tendency','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','CM2','tendency_of_sea_water_salinity_expressed_as_salt_content','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('osalttend','salt_tendency','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','ESM1.5','tendency_of_sea_water_salinity_expressed_as_salt_content','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('osalttend','salt_tendency','','kg m-2 s-1','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Emon','OM2','tendency_of_sea_water_salinity_expressed_as_salt_content','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('pbo','pbot_t','var[0]*10000.','dbar','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_pressure_at_sea_floor','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('pbo','pbot_t','var[0]*10000.','dbar','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_pressure_at_sea_floor','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('pbo','pbot_t','var[0]*10000.','dbar','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_pressure_at_sea_floor','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('pfull','fld_s00i408','level_to_height(var[0],levs=(0,66))','Pa','time model_theta_level_number lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_pressure','map_AUS2200.csv'); +INSERT INTO mapping VALUES('pfull','fld_s00i408','level_to_height(var[0])','Pa','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CM2_mon','AM3','air_pressure','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('pfull','fld_s00i408','level_to_height(var[0])','Pa','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CM2_mon','CM2','air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('pfull','fld_s00i408','level_to_height(var[0])','Pa','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('phalf','fld_s00i407','level_to_height(var[0],levs=(0,66))','Pa','time model_rho_level_number_0 lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_pressure','map_AUS2200.csv'); +INSERT INTO mapping VALUES('phalf','fld_s00i407','level_to_height(var[0])','Pa','time model_rho_level_number lat lon','longitude latitude alevhalf time2','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','air_pressure','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('phalf','fld_s00i407','level_to_height(var[0])','Pa','time model_rho_level_number lat lon','longitude latitude alevhalf time2','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('phalf','fld_s00i407','level_to_height(var[0])','Pa','time model_rho_level_number lat lon','longitude latitude alevhalf time2','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_3hr','CM2','precipitation_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_3hr','ESM1.5','precipitation_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','precipitation_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','precipitation_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','precipitation_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','AM3','precipitation_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','CM2','precipitation_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('pr','fld_s05i216','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','precipitation_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('pralsns','fld_s04i202','','kg m-2','time_0 lat lon','longitude latitude time','10min','atmos','area: time: sum','','AUS2200_A10min','AUS2200','stratiform_snowfall_amount','map_AUS2200.csv'); +INSERT INTO mapping VALUES('pralsprof','fld_s04i201','','kg m-2','time_0 lat lon','longitude latitude time','10min','atmos','area: time: sum','','AUS2200_A10min','AUS2200','stratiform_rainfall_amount','map_AUS2200.csv'); +INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','','','CMIP6_3hr','CM2','convective_precipitation_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','','','CMIP6_3hr','ESM1.5','convective_precipitation_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','convective_precipitation_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','convective_precipitation_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','','','CMIP6_day','CM2','convective_precipitation_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prc','fld_s05i205 fld_s05i206','var[0]+var[1]','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','','','CMIP6_day','ESM1.5','convective_precipitation_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prlsns','fld_s04i204','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','AM3','stratiform_snowfall_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('prlsns','fld_s04i204','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','CM2','stratiform_snowfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prlsns','fld_s04i204','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','stratiform_snowfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prlsprof','fld_s04i203','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','AM3','stratiform_rainfall_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('prlsprof','fld_s04i203','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','CM2','stratiform_rainfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prlsprof','fld_s04i203','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','stratiform_rainfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prra','fld_s05i214','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','AM3','rainfall_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('prra','fld_s05i214','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','CM2','rainfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prra','fld_s05i214','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','rainfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prra','fld_s05i214','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_E3hr','CM2','rainfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prra','fld_s05i214','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_E3hr','ESM1.5','rainfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prra','lprec','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','rainfall_flux','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('prra','lprec','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','rainfall_flux','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('prra','lprec','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','rainfall_flux','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('prrc','fld_s05i205','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','CM2','convective_rainfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prrc','fld_s05i205','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','convective_rainfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prrc','fld_s05i205','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_E3hr','CM2','convective_rainfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prrc','fld_s05i205','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_E3hr','ESM1.5','convective_rainfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prrc','fld_s05i205','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','convective_rainfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prrc','fld_s05i205','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','convective_rainfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_3hr','CM2','snowfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_3hr','ESM1.5','snowfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','snowfall_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','snowfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','snowfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','AM3','snowfall_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','CM2','snowfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prsn','fld_s05i215','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','snowfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prsn','fprec','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','snowfall_flux','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('prsn','fprec','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','snowfall_flux','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('prsn','fprec','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','snowfall_flux','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('prsnc','fld_s05i206','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','CM2','convective_snowfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prsnc','fld_s05i206','','kg m-2 s-1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','convective_snowfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prsnc','fld_s05i206','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_E3hr','CM2','convective_snowfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prsnc','fld_s05i206','','kg m-2 s-1','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','','CMIP6_E3hr','ESM1.5','convective_snowfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prsnc','fld_s05i206','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','convective_snowfall_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prsnc','fld_s05i206','','kg m-2 s-1','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','convective_snowfall_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prw','fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406','var[0]-sum_vars(var[1:])','kg m-2','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','','map_AUS2200.csv'); +INSERT INTO mapping VALUES('prw','fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406','var[0]-(var[1]+var[2]+var[3])','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: point','','CMIP6_Amon','CM2','','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prw','fld_s30i404 fld_s30i403 fld_s30i405 fld_s30i406','var[0]-(var[1]+var[2]+var[3])','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: point','','CMIP6_Amon','ESM1.5','','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('prw','fld_s30i461','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','TOTAL COLUMN Q (WATER VAPOUR PATH)','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('prw','fld_s30i461','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','TOTAL COLUMN Q (WATER VAPOUR PATH)','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('prw','fld_s30i461','','kg m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','TOTAL COLUMN Q (WATER VAPOUR PATH)','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','surface_air_pressure','map_AUS2200.csv'); +INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','surface_air_pressure','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','surface_air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','surface_air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','longitude latitude time1','3hrPt','atmos','area: time: point','','CMIP6_E3hrPt','CM2','surface_air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ps','fld_s00i409','','Pa','time lat lon','longitude latitude time1','3hrPt','atmos','area: time: point','','CMIP6_E3hrPt','ESM1.5','surface_air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','air_pressure_at_sea_level','map_AUS2200.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','air_pressure_at_sea_level','map_AUS2200.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','longitude latitude time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','air_pressure_at_sea_level','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','longitude latitude time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','ESM1.5','air_pressure_at_sea_level','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','air_pressure_at_sea_level','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','air_pressure_at_sea_level','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','CM2','air_pressure_at_sea_level','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('psl','fld_s16i222','','Pa','time lat lon','longitude latitude time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','air_pressure_at_sea_level','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('pslev1','fld_s00i408','','Pa','time lat lon','longitude latitude alevel1 time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','air_pressure','map_AUS2200.csv'); +INSERT INTO mapping VALUES('pso','patm_t','','Pa','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_pressure_at_sea_water_surface','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('pso','patm_t','','Pa','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_pressure_at_sea_water_surface','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('pso','patm_t','','Pa','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_pressure_at_sea_water_surface','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ra','fld_s03i263','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','up','CMIP6_Lmon','CM2','plant_respiration_carbon_flux','map_land_CM2.csv'); +INSERT INTO mapping VALUES('ra','fld_s03i263','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','up','CMIP6_Lmon','ESM1.5','plant_respiration_carbon_flux','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('rainmxrat','fld_s00i272','level_to_height(var[0],levs=(0,66))','kg kg-1','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','mass_fraction_of_rain_in_air','map_AUS2200.csv'); +INSERT INTO mapping VALUES('refl','fld_s04i118','level_to_height(var[0],levs=(0,66))','dBZ','time model_theta_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','radar_reflectivity_due_to_all_hydrometeor_species','map_AUS2200.csv'); +INSERT INTO mapping VALUES('refl24','fld_s04i118 fld_s00i408','plevinterp(var[0], var[1], 24)','dBZ','time model_theta_level_number lat lon','longitude latitude plev24 time1','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','radar_reflectivity_due_to_all_hydrometeor_species','map_AUS2200.csv'); +INSERT INTO mapping VALUES('reflmax','fld_s04i111','','dBZ','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','maximum_radar_reflectivity_in_the_grid_column_due_to_all_hydrometeors','map_AUS2200.csv'); +INSERT INTO mapping VALUES('residualFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev=''typeresidual'')','1','time pseudo_level_1 lat lon','longitude latitude time typeresidual','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('residualFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[15,16,17],landfrac=var[1],lev=''typeresidual'')','1','time pseudo_level_1 lat lon','longitude latitude time typeresidual','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('rh','fld_s03i293','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','up','CMIP6_Lmon','AM3','soil_respiration_carbon_flux','map_land_AM3.csv'); +INSERT INTO mapping VALUES('rh','fld_s03i293','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','up','CMIP6_Lmon','CM2','soil_respiration_carbon_flux','map_land_CM2.csv'); +INSERT INTO mapping VALUES('rh','fld_s03i293','','kg m-2 s-1','time lat lon','longitude latitude time','mon','land','area: time: mean','up','CMIP6_Lmon','ESM1.5','soil_respiration_carbon_flux','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('rho0','pot_rho_0','','kg m-3','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','CM2','sea_water_potential_density','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('rho0','pot_rho_0','','kg m-3','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','ESM1.5','sea_water_potential_density','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('rho0','pot_rho_0','','kg m-3','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','OM2','sea_water_potential_density','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downwelling_longwave_flux_in_air','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_downwelling_longwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','ESM1.5','surface_downwelling_longwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','AM3','surface_downwelling_longwave_flux_in_air','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_longwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','ESM1.5','surface_downwelling_longwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','AM3','surface_downwelling_longwave_flux_in_air','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_downwelling_longwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlds','fld_s02i207','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','ESM1.5','surface_downwelling_longwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time_1 lat lon','longitude latitude time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','AM3','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','ESM1.5','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_CFday','CM2','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rldscs','fld_s02i208','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_CFday','ESM1.5','surface_downwelling_longwave_flux_in_air_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlntds','lw_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','surface_net_downward_longwave_flux','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('rlntds','lw_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','surface_net_downward_longwave_flux','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlntds','lw_heat','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','surface_net_downward_longwave_flux','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_net_downward_longwave_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CM2_3hr','CM2','surface_net_downward_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CM2_3hr','ESM1.5','surface_net_downward_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Emon','AM3','surface_net_downward_longwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Emon','CM2','surface_net_downward_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Emon','ESM1.5','surface_net_downward_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','AM3','surface_net_downward_longwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_net_downward_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rls','fld_s02i201','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','ESM1.5','surface_net_downward_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','','up','CMIP6_3hr','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','','up','CMIP6_3hr','ESM1.5','surface_upwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','surface_upwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time lat lon','longitude latitude time','day','atmos','','up','CMIP6_day','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlus','fld_s02i207 fld_s02i201 fld_s03i332 fld_s02i205','var[0]-var[1]+var[2]-var[3]','W m-2','time lat lon','longitude latitude time','day','atmos','','up','CMIP6_day','ESM1.5','surface_upwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','toa_outgoing_longwave_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','toa_outgoing_longwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','toa_outgoing_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_E3hr','CM2','toa_outgoing_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_E3hr','ESM1.5','toa_outgoing_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','CM2','toa_outgoing_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlut','fld_s02i205','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','ESM1.5','toa_outgoing_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','toa_outgoing_longwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','toa_outgoing_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_E3hr','CM2','toa_outgoing_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_E3hr','ESM1.5','toa_outgoing_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','AM3','toa_outgoing_longwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','CM2','toa_outgoing_longwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlut','fld_s03i332','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','ESM1.5','toa_outgoing_longwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlutcs','fld_s02i206','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','toa_outgoing_longwave_flux_assuming_clear_sky','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rlutcs','fld_s02i206','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_longwave_flux_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlutcs','fld_s02i206','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','toa_outgoing_longwave_flux_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rlutcs','fld_s02i206','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_CFday','CM2','toa_outgoing_longwave_flux_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rlutcs','fld_s02i206','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_CFday','ESM1.5','toa_outgoing_longwave_flux_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsdo','sw_heat','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','downwelling_shortwave_flux_in_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('rsdo','sw_heat','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','downwelling_shortwave_flux_in_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsdo','sw_heat','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downwelling_shortwave_flux_in_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downwelling_shortwave_flux_in_air','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_downwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','ESM1.5','surface_downwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','AM3','surface_downwelling_shortwave_flux_in_air','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','ESM1.5','surface_downwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','AM3','surface_downwelling_shortwave_flux_in_air','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_downwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsds','fld_s01i235','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','ESM1.5','surface_downwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time_1 lat lon','longitude latitude time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','ESM1.5','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','AM3','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsdscs','fld_s01i210','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','ESM1.5','surface_downwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsdsdiff','fld_s01i216','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_diffuse_downwelling_shortwave_flux_in_air','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rsdsdiff','fld_s01i216','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','CM2','surface_diffuse_downwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsdsdiff','fld_s01i216','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CMIP6_3hr','ESM1.5','surface_diffuse_downwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsdsdir','fld_s01i215','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_direct_along_beam_shortwave_flux_in_air ','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rsdt','fld_s01i207','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','toa_incoming_shortwave_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rsdt','fld_s01i207','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','AM3','toa_incoming_shortwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rsdt','fld_s01i207','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','toa_incoming_shortwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsdt','fld_s01i207','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','ESM1.5','toa_incoming_shortwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsntds','swflx','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','net_downward_shortwave_flux_at_sea_water_surface','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('rsntds','swflx','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','net_downward_shortwave_flux_at_sea_water_surface','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsntds','swflx','','W m-2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','net_downward_shortwave_flux_at_sea_water_surface','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CM2_3hr','CM2','surface_net_downward_shortwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','down','CM2_3hr','ESM1.5','surface_net_downward_shortwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Emon','AM3','surface_net_downward_shortwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Emon','CM2','surface_net_downward_shortwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Emon','ESM1.5','surface_net_downward_shortwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','AM3','surface_net_downward_shortwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','CM2','surface_net_downward_shortwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i201','','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','down','CMIP6_day','ESM1.5','surface_net_downward_shortwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rss','fld_s01i202','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_net_downward_shortwave_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','ESM1.5','surface_upwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','surface_upwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','CM2','surface_upwelling_shortwave_flux_in_air','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsus','fld_s01i235 fld_s01i201','var[0]-var[1]','W m-2','time lat lon','longitude latitude time','day','atmos','area: time: mean','up','CMIP6_day','ESM1.5','surface_upwelling_shortwave_flux_in_air','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsuscs','fld_s01i211','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','CM2','surface_upwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsuscs','fld_s01i211','','W m-2','time_0 lat lon','longitude latitude time','3hr','atmos','area: time: mean','up','CMIP6_3hr','ESM1.5','surface_upwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsuscs','fld_s01i211','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','surface_upwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rsuscs','fld_s01i211','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','surface_upwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsuscs','fld_s01i211','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','surface_upwelling_shortwave_flux_in_air_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsut','fld_s01i205','','W m-2','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','up','AUS2200_A1hr','AUS2200','toa_outgoing_shortwave_flux','map_AUS2200.csv'); +INSERT INTO mapping VALUES('rsut','fld_s01i208','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','toa_outgoing_shortwave_flux','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rsut','fld_s01i208','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_shortwave_flux','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsut','fld_s01i208','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','toa_outgoing_shortwave_flux','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rsutcs','fld_s01i209','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','AM3','toa_outgoing_shortwave_flux_assuming_clear_sky','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('rsutcs','fld_s01i209','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','CM2','toa_outgoing_shortwave_flux_assuming_clear_sky','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rsutcs','fld_s01i209','','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time: mean','up','CMIP6_Amon','ESM1.5','toa_outgoing_shortwave_flux_assuming_clear_sky','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rtmt','fld_s01i207 fld_s01i208 fld_s03i332','var[0]-var[1]-var[2]','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time:mean','down','CMIP6_Amon','CM2','net_downward_radiative_flux_at_top_of_atmosphere_model','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rtmt','fld_s01i207 fld_s01i208 fld_s03i332','var[0]-var[1]-var[2]','W m-2','time lat lon','longitude latitude time','mon','atmos','area: time:mean','down','CMIP6_Amon','ESM1.5','net_downward_radiative_flux_at_top_of_atmosphere_model','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('rv850','fld_s30i455','','s-1','time lat_v lon_u','longitude latitude time1 p850','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','atmosphere_relative_vorticity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('rv850','fld_s30i455','','s-1','time lat_v lon_u','longitude latitude time1 p850','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','ESM1.5','atmosphere_relative_vorticity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('sbl','fld_s03i298','','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce','area: time: mean','','CMIP6_LImon','AM3','surface_snow_and_ice_sublimation_flux','map_land_AM3.csv'); +INSERT INTO mapping VALUES('sbl','fld_s03i298','','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce','area: mean where land time: mean','','CMIP6_LImon','CM2','surface_snow_and_ice_sublimation_flux','map_land_CM2.csv'); +INSERT INTO mapping VALUES('sbl','fld_s03i298','','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce','area: mean where land time: mean','','CMIP6_LImon','ESM1.5','surface_snow_and_ice_sublimation_flux','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('sbl','fld_s03i331 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2 s-1','time pseudo_level_1 lat lon','longitude latitude time','mon','landIce','area: mean where land time: mean','','CMIP6_LImon','CM2','surface_snow_and_ice_sublimation_flux','map_land_CM2.csv'); +INSERT INTO mapping VALUES('sci','fld_s05i270','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','shallow convection indicator','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('sci','fld_s05i270','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','shallow convection indicator','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('sci','fld_s05i270','','1','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','shallow convection indicator','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('sfcWind','fld_s03i230','','m s-1','time lat lon','longitude latitude time height10m','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','wind_speed','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('sfcWind','fld_s03i230','','m s-1','time lat lon','longitude latitude time height10m','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','wind_speed','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('sfcWind','fld_s03i230','','m s-1','time lat lon','longitude latitude time height10m','day','atmos','area: time: mean','','CMIP6_day','CM2','wind_speed','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('sfcWind','fld_s03i230','','m s-1','time lat lon','longitude latitude time height10m','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','wind_speed','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('sfcWindmax','fld_s03i230_max','','m s-1','time lat lon','longitude latitude time height10m','day','atmos','area: time: maximum','','CMIP6_day','CM2','wind_speed','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('sfcWindmax','fld_s03i230_max','','m s-1','time lat lon','longitude latitude time height10m','day','atmos','area: time: maximum','','CMIP6_day','ESM1.5','wind_speed','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('sfdsi','sfc_salt_flux_ice','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','downward_sea_ice_basal_salt_flux','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('sfdsi','sfc_salt_flux_ice','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','downward_sea_ice_basal_salt_flux','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('sfdsi','sfc_salt_flux_ice','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downward_sea_ice_basal_salt_flux','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('sfdsi','siflsaltbot','','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','downward_sea_ice_basal_salt_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sfriver','sfc_salt_flux_runoff','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','salt_flux_into_sea_water_from_rivers','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('sfriver','sfc_salt_flux_runoff','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','salt_flux_into_sea_water_from_rivers','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('sfriver','sfc_salt_flux_runoff','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','salt_flux_into_sea_water_from_rivers','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('sftgif','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],17,landfrac=var[1])','1','time pseudo_level_1 lat lon','longitude latitude time','mon','land','area: mean','','CMIP6_LImon','CM2','land_ice_area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('sftgif','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],17,landfrac=var[1])','1','time pseudo_level_1 lat lon','longitude latitude time','mon','land','area: mean','','CMIP6_LImon','ESM1.5','land_ice_area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('sftlf','fld_s03i395','','1','time lat lon','longitude latitude','mon','atmos','area: time: mean','','CMIP6_fx','CM2','land_area_fraction','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('sftlf','fld_s03i395','','1','time lat lon','longitude latitude','mon','atmos','area: time: mean','','CMIP6_fx','ESM1.5','land_area_fraction','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('shrubFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[5,8],landfrac=var[1],lev=''typeshrub'')','1','time lat lon','longitude latitude time typeshrub','mon','land','','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('shrubFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[5,8],landfrac=var[1],lev=''typeshrub'')','1','time lat lon','longitude latitude time typeshrub','mon','land','','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('siage','siage','','s','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','age_of_sea_ice','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siareaacrossline','aice uvel vvel','icearealineTransports(var[0],var[1],var[2])','m2 s-1','time nj ni','siline time','mon','seaIce','area: time: mean','','SImon','CM2','sea_ice_area_transport_across_line','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siarean','aice tarea','calc_hemi_seaice(var[0],var[1],''north'')','m2','time nj ni','time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_area','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siareas','aice tarea','calc_hemi_seaice(var[0],var[1],''south'')','m2','time nj ni','time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_area','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sicompstren','sicompstren','','N m-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','compressive_strength_of_sea_ice','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siconc','aice','','1','time nj ni','longitude latitude time typesi','day','seaIce','area: time: mean','','SIday','CM2','sea_ice_area_fraction','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siconca','fld_s00i031','','1','time lat lon','longitude latitude time1 typesi','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','sea_ice_area_fraction','map_AUS2200.csv'); +INSERT INTO mapping VALUES('sidconcdyn','sidconcdyn','var[0]*100','s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_area_fraction_due_to_dynamics','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidconcth','sidconcth','var[0]*100','s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_area_fraction_due_to_thermodynamics','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidivvel','sidivvel','','s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','','','divergence_of_sea_ice_velocity','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmassdyn','sidmassdyn','','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_sea_ice_dynamics','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmassevapsubl','sidmassevapsubl','var[0]*-1','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','water_evapotranspiration_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmassgrowthbot','sidmassgrowthbot','var[0]/1800','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmassgrowthwat','sidmassgrowthwat','var[0]/1800','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_frazil_ice_accumulation_in_leads','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmasslat','sidmasslat','var[0]/-1800.','kg m-2 s-1','longitude latitude time','time nj ni','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_lateral_melting','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmassmeltbot','sidmassmeltbot','var[0]/1800','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_basal_melting','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmassmelttop','sidmassmelttop','var[0]/1800','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_surface_melting','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmasssi','sidmasssi','var[0]/1800','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_conversion_of_snow_to_sea_ice','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmassth','sidmassth','','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_sea_ice_amount_due_to_sea_ice_thermodynamics','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmasstranx','sidmasstranx','','kg/s','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_x_transport','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sidmasstrany','sidmasstrany','','kg/s','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_y_transport','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siextentn','aice tarea','calc_hemi_seaice(var[0],var[1],''north'',extent=True)','m2','time nj ni','time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_extent','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siextents','aice tarea','calc_hemi_seaice(var[0],var[1],''south'',extent=True)','m2','time nj ni','time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_extent','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sifb','sifb','','m','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_freeboard','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflcondbot','siflcondbot','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','basal_downward_heat_flux_in_sea_ice','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflcondtop','siflcondtop','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','surface_downward_sensible_heat_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflfwbot','siflfwbot','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','water_flux_into_sea_water_due_to_sea_ice_thermodynamics','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sifllatstop','fld_s03i234 fld_s00i031','maskSeaIce(var[0],var[1])','W m-2','time lat lon','longitude latitude time1','1hrPt','seaIce','area: time: point','up','AUS2200_A1hr','AUS2200','','map_AUS2200.csv'); +INSERT INTO mapping VALUES('sifllatstop','sifllatstop','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','up','CMIP6_SImon','CM2','surface_upward_latent_heat_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sifllwdtop','sifllwdtop','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','surface_downwelling_longwave_flux_in_air','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sifllwutop','sifllwutop','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','up','CMIP6_SImon','CM2','surface_upwelling_longwave_flux_in_air','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflsenstop','siflsenstop','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','up','CMIP6_SImon','CM2','surface_upward_sensible_heat_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflsensupbot','siflsensupbot','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','up','CMIP6_SImon','CM2','upward_sea_ice_basal_heat_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflswdbot','siflswdbot','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','downwelling_shortwave_flux_in_sea_water_at_sea_ice_base','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflswdtop','siflswdtop','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','down shortwave flux over sea ice','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siflswutop','siflswutop','','W m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','up','CMIP6_SImon','CM2','upward shortwave flux over sea ice','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siforcecoriolx','siforcecoriolx','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_x_force_per_unit_area_due_to_coriolis_effect','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siforcecorioly','siforcecorioly','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_y_force_per_unit_area_due_to_coriolis_effect','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siforceintstrx','siforceintstrx','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_x_internal_stress','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siforceintstry','siforceintstry','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_y_internal_stress','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siforcetiltx','siforcetiltx','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_x_force_per_unit_area_due_to_sea_surface_tilt','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siforcetilty','siforcetilty','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_y_force_per_unit_area_due_to_sea_surface_tilt','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sihc','sihc','','J m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_temperature_expressed_as_heat_content','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siitdsnconc','snowfracn','','1','time nc nj ni','longitude latitude iceband time','mon','seaIce','area: time: mean','','','','surface_snow_area_fraction','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siitdsnthick','vsnon','','m','time nc nj ni','longitude latitude iceband time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','surface_snow_thickness','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siitdthick','vicen','','m','time nc nj ni','longitude latitude iceband time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_thickness','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('simass','hi hs','var[0]*917+var[1]*330','kg m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_amount','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('simassacrossline','hi uvel vvel','icelineTransports(var[0],var[1],var[2])','kg s-1','time nj ni','siline time','mon','seaIce','area: time: mean','','SImon','CM2','sea_ice_transport_across_line','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('simpconc','apond_ai aice','maskSeaIce(var[0],var[1])','1','time nj ni','longitude latitude time typemp','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','area_fraction','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sipr','sipr','','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','rainfall_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sisaltmass','sisaltmass','','kg m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_mass_content_of_salt','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sisnconc','sisnconc','','%','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','surface_snow_area_fraction','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sisnhc','sisnhc','maskSeaIce(var[0],var[1])','J m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','thermal_energy_content_of_surface_snow','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sisnmass','hs aice','maskSeaIce(var[0]*330,var[1])','m','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','liquid_water_content_of_surface_snow','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sisnthick','sisnthick','','m','time nj ni','longitude latitude time','day','seaIce','area: time: mean','','CMIP6_SIday','CM2','surface_snow_thickness','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sispeed','sispeed','','m s-1','time nj ni','longitude latitude time','day','seaIce','area: time: mean','','CMIP6_SIday','CM2','sea_ice_speed','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sistrxdtop','sistrxdtop','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','surface_downward_x_stress','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sistrxubot','sistrxubot','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','up','CMIP6_SImon','CM2','upward_x_stress_at_sea_ice_base','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sistrydtop','sistrydtop','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','down','CMIP6_SImon','CM2','surface_downward_y_stress','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sistryubot','sistryubot','','N m-2','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','up','CMIP6_SImon','CM2','upward_y_stress_at_sea_ice_base','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sitempbot','sitempbot','','K','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_basal_temperature','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sitempsnic','sitempsnic','K_degC(var[0],inverse=True)','K','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_surface_temperatureCMIP6_SImon','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sitemptop','sitemptop','K_degC(var[0],inverse=True)','K','time nj ni','longitude latitude time','day','seaIce','area: time: mean','','CMIP6_SIday','CM2','sea_ice_surface_temperature','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sithick','sithick','','m','time nj ni','longitude latitude time','day','seaIce','area: time: mean','','CMIP6_SIday','CM2','sea_ice_thickness','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siu','siu','','m s-1','time nj ni','longitude latitude time','day','seaIce','area: time: mean','','CMIP6_SIday','CM2','sea_ice_x_velocity','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siu','uvel','','m s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_x_velocity','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siv','siv','','m s-1','time nj ni','longitude latitude time','day','seaIce','area: time: mean','','CMIP6_SIday','CM2','sea_ice_y_velocity','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('siv','vvel','','m s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','sea_ice_y_velocity','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sivol','hi','','m','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_thickness','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sivoln','hi tarea','calc_hemi_seaice(var[0],var[1],''north'')','m3','time nj ni','time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_volume','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sivols','hi tarea','calc_hemi_seaice_area_vol(var[0],var[1],''south'')','m3','time nj ni','time','mon','seaIce','area: time: mean','','CMIP6_SIMon','CM2','sea_ice_volume','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sndmassdyn','dvsdtd aice','maskSeaIce((var[0]*330/8.64e6),var[1])',' kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_surface_snow_amount_due_to_sea_ice_dynamics','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sndmassmelt','sndmassmelt','var[0]*-1/1800','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','surface_snow_melt_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sndmasssi','sidmasssi','(var[0]*-1*330)/(1800*917)','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','tendency_of_surface_snow_amount_due_to_conversion_of_snow_to_sea_ice','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sndmasssnf','sndmasssnf','var[0]/1800','kg m-2 s-1','time nj ni','longitude latitude time','mon','seaIce','area: time: mean','','CMIP6_SImon','CM2','snowfall_flux','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('snm','fld_s08i231','','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','AM3','surface_snow_melt_flux_where_land','map_land_AM3.csv'); +INSERT INTO mapping VALUES('snm','fld_s08i231','','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_melt_flux_where_land','map_land_CM2.csv'); +INSERT INTO mapping VALUES('snm','fld_s08i231','','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_melt_flux_where_land','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('snm','fld_s08i237 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_melt_flux_where_land','map_land_CM2.csv'); +INSERT INTO mapping VALUES('snm','fld_s08i237 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2 s-1','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_melt_flux_where_land','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('snmassacrossline','hs uvel vvel','snowlineTransports(var[0],var[1],var[2])','kg s-1','time nj ni','siline time','mon','seaIce','area: time: mean','','SImon','CM2','snow_transport_across_line_due_to_sea_ice_dynamics','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('snw','fld_s00i023','','kg m-2','time lat lon','longitude latitude time1','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','surface_snow_amount','map_AUS2200.csv'); +INSERT INTO mapping VALUES('snw','fld_s08i023','','kg m-2','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','AM3','surface_snow_amount','map_land_AM3.csv'); +INSERT INTO mapping VALUES('snw','fld_s08i023','','kg m-2','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_amount','map_land_CM2.csv'); +INSERT INTO mapping VALUES('snw','fld_s08i023','','kg m-2','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_amount','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('snw','fld_s08i236 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','CM2','surface_snow_amount','map_land_CM2.csv'); +INSERT INTO mapping VALUES('snw','fld_s08i236 fld_s03i317','average_tile(var[0],tilefrac=var[1],lfrac=0)','kg m-2','time lat lon','longitude latitude time','mon','landIce land','area: time: mean','','CMIP6_LImon','ESM1.5','surface_snow_amount','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','CM2','sea_water_salinity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','ESM1.5','sea_water_salinity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_salinity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_salinity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_salinity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('so','salt','','psu','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_salinity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('sob','bottom_salt','','psu','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_salinity_at_sea_floor','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('sob','bottom_salt','','psu','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_salinity_at_sea_floor','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('sob','bottom_salt','','psu','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_salinity_at_sea_floor','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('sos','sss','','psu','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CMIP6_Oday','CM2','sea_surface_salinity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('sos','sss','','psu','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CMIP6_Oday','ESM1.5','sea_surface_salinity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('sos','sss','','psu','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CMIP6_Oday','OM2','sea_surface_salinity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('sos','sss','','0.001','time nj ni','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea surface salinity','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('sos','sss','','psu','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_surface_salinity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('sos','sss','','psu','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_surface_salinity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('storm','fld_s21i101','','1','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','flag_for_location_of_storms','map_AUS2200.csv'); +INSERT INTO mapping VALUES('ta','fld_s16i004','level_to_height(var[0],levs=(0,66))','K','time model_theta_level_number lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i204','','K','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i204','','K','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev3 time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev3 time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ta','fld_s30i294','','K','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ta17','fld_s30i294','','K','time pressure lat lon','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','air_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('ta17uvgrid','fld_s30i204','','K','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','air_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('ta19','fld_s30i294','','K','time pressure lat lon','longitude latitude plev19 time1','6hrPt','atmos','area: time: point','','CM2_6hr','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ta19','fld_s30i294','','K','time pressure lat lon','longitude latitude plev19 time1','6hrPt','atmos','area: time: point','','CM2_6hr','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ta19uvgrid','fld_s30i204','','K','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ta19uvgrid','fld_s30i204','','K','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ta24','fld_s16i004 fld_s00i408','plevinterp(var[0], var[1], 24)','K','time model_theta_level_number lat lon_0','longitude latitude plev24 time1','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200',' air_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time1 height1.5m','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','air_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time_0 lat lon','longitude latitude time height1.5m','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','air_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','3hrPt','atmos','area: time: point','','CM2_3hr','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','3hrPt','atmos','area: time: point','','CM2_3hr','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','AM3','air_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: mean','','CM2_day','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','AM3','air_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('tas','fld_s03i236','','K','time lat lon','longitude latitude time height1.5m','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tasmax','fld_s03i236_max','','K','time_0 lat lon','longitude latitude time height1.5m','1hr','atmos','area: time: maximum','','AUS2200_A1hr','AUS2200','air_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tasmax','fld_s03i236_max','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: maximum','','CM2_day','AM3','air_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('tasmax','fld_s03i236_max','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: maximum','','CM2_day','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('tasmax','fld_s03i236_max','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: maximum','','CM2_day','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tasmin','fld_s03i236_min','','K','time_0 lat lon','longitude latitude time height1.5m','1hr','atmos','area: time: minimum','','AUS2200_A1hr','AUS2200','air_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tasmin','fld_s03i236_min','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: minimum','','CM2_day','AM3','air_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('tasmin','fld_s03i236_min','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: minimum','','CM2_day','CM2','air_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('tasmin','fld_s03i236_min','','K','time lat lon','longitude latitude time height1.5m','day','atmos','area: time: minimum','','CM2_day','ESM1.5','air_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tauu','fld_s03i460','','Pa','time lat lon_0','longitude latitude time','1hrPt','atmos','area: time: point','down','AUS2200_A1hr','AUS2200','surface_downward_eastward_stress','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tauu','fld_s03i460','','Pa','time lat lon_u','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','AM3','surface_downward_eastward_stress','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('tauu','fld_s03i460','','Pa','time lat lon_u','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downward_eastward_stress','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('tauu','fld_s03i460','','Pa','time lat lon_u','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','ESM1.5','surface_downward_eastward_stress','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tauu','fld_s03i460_0','','Pa','time_0 lat lon_0','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downward_eastward_stress','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tauuo','tau_x','','N m-2','time yu_ocean xu_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','downward_x_stress_at_sea_water_surface','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('tauuo','tau_x','','N m-2','time yu_ocean xu_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','downward_x_stress_at_sea_water_surface','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('tauuo','tau_x','','N m-2','time yu_ocean xu_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downward_x_stress_at_sea_water_surface','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('tauv','fld_s03i461','','Pa','time lat_v lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','AM3','surface_downward_northward_stress','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('tauv','fld_s03i461','','Pa','time lat_v lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','CM2','surface_downward_northward_stress','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('tauv','fld_s03i461','','Pa','time lat_v lon','longitude latitude time','mon','atmos','area: time: mean','down','CMIP6_Amon','ESM1.5','surface_downward_northward_stress','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tauv','fld_s03i461_0','','Pa','time_0 lat_0 lon','longitude latitude time','1hr','atmos','area: time: mean','down','AUS2200_A1hr','AUS2200','surface_downward_northward_stress','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tauv_Pt','fld_s03i461','','Pa','time lat_0 lon','longitude latitude time1','1hrPt','atmos','area: time: point','down','AUS2200_A1hr','AUS2200','surface_downward_northward_stress','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tauvo','tau_y','','N m-2','time yu_ocean xu_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','downward_y_stress_at_sea_water_surface','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('tauvo','tau_y','','N m-2','time yu_ocean xu_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','downward_y_stress_at_sea_water_surface','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('tauvo','tau_y','','N m-2','time yu_ocean xu_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','downward_y_stress_at_sea_water_surface','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('tdps','fld_s03i250','','K','time lat lon','longitude latitude height1.5m time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','dew_point_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tdps','fld_s03i250','','K','time lat lon','longitude latitude time','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','dew_point_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tendkpp','temp_nonlocal_KPP','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','CM2','cp*rho*dzt*nonlocal tendency from KPP','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('tendkpp','temp_nonlocal_KPP','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','ESM1.5','cp*rho*dzt*nonlocal tendency from KPP','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('tendkpp','temp_nonlocal_KPP','','W m-2','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CM2_mon','OM2','cp*rho*dzt*nonlocal tendency from KPP','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('theta','fld_s00i004','level_to_height(var[0],levs=(0,66))','K','time model_theta_level_number lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','air_potential_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('theta','fld_s00i004','level_to_height(var[0])','K','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CM2_mon','AM3','air_potential_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('theta','fld_s00i004','level_to_height(var[0])','K','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CM2_mon','CM2','air_potential_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('theta','fld_s00i004','level_to_height(var[0])','K','time model_theta_level_number lat lon','longitude latitude alevel time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','air_potential_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('theta24','fld_s00i004 fld_s00i408','plevinterp(var[0], var[1], 24)','K','time model_theta_level_number lat lon_0','longitude latitude plev24 time1','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','air_potential_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','CM2','sea_water_potential_temperature','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','ESM1.5','sea_water_potential_temperature','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_potential_temperature','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_potential_temperature','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_potential_temperature','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('thetao','pot_temp','K_degC(var[0])','K','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_potential_temperature','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('thkcello','dht','','m','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','cell_thickness','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('thkcello','dht','','m','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','cell_thickness','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('thkcello','dht','','m','time st_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','cell_thickness','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('tke','fld_s03i473','level_to_height(var[0])','J m-2','time model_theta_level_number_0 lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','TURBULENT KINETIC ENERGY','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time1','6hr','ocean','area: time: mean','','CM2_6hr','CM2','sea_surface_temperature','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time1','6hr','ocean','area: time: mean','','CM2_6hr','ESM1.5','sea_surface_temperature','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time1','6hr','ocean','area: time: mean','','CM2_6hr','OM2','sea_surface_temperature','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CMIP6_Oday','CM2','sea_surface_temperature','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CMIP6_Oday','ESM1.5','sea_surface_temperature','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time','day','ocean','area: time: mean','','CMIP6_Oday','OM2','sea_surface_temperature','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','degC','time nj ni','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea surface temperature','map_seaice_CM2.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_surface_temperature','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('tos','sst','K_degC(var[0])','K','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_surface_temperature','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('treeFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev=''typetree'')','%','time pseudo_level_0 lat lon','longitude latitude time typetree','mon','land','area: time: mean','','CMIP6_Lmon','AM3','SURFACE TILE FRACTIONS','map_land_AM3.csv'); +INSERT INTO mapping VALUES('treeFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev=''typetree'')','1','time pseudo_level_1 lat lon','longitude latitude time typetree','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('treeFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4],landfrac=var[1],lev=''typetree'')','1','time pseudo_level_1 lat lon','longitude latitude time typetree','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Lmon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('treeFracBdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],4,landfrac=var[1],lev=''typetreebd'')','1','time pseudo_level_1 lat lon','longitude latitude time typetreebd','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('treeFracBdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],4,landfrac=var[1],lev=''typetreebd'')','1','time pseudo_level_1 lat lon','longitude latitude time typetreebd','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('treeFracBdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],2,landfrac=var[1],lev=''typetreebe'')','1','time pseudo_level_1 lat lon','longitude latitude time typetreebe','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('treeFracBdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],2,landfrac=var[1],lev=''typetreebe'')','1','time pseudo_level_1 lat lon','longitude latitude time typetreebe','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('treeFracNdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],3,landfrac=var[1],lev=''typetreend'')','1','time pseudo_level_1 lat lon','longitude latitude time typetreend','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('treeFracNdlDcd','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],3,landfrac=var[1],lev=''typetreend'')','1','time pseudo_level_1 lat lon','longitude latitude time typetreend','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('treeFracNdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],1,landfrac=var[1],lev=''typetreene'')','1','time lat lon','longitude latitude time typetreene','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('treeFracNdlEvg','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],1,landfrac=var[1],lev=''typetreene'')','1','time lat lon','longitude latitude time typetreene','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('ts','fld_s00i024','','K','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','surface_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('ts','fld_s00i024','','K','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','AM3','surface_temperature','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('ts','fld_s00i024','','K','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','surface_temperature','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ts','fld_s00i024','','K','time lat lon','longitude latitude time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','surface_temperature','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('tsl','fld_s08i225','topsoil_tsl(var[0])','K','time depth lat lon','longitude latitude time1 sdepth1','1hrPt','land','area: time: point','','AUS2200_A1hr','AUS2200','soil_temperature','map_AUS2200.csv'); +INSERT INTO mapping VALUES('tsl','fld_s08i225','','K','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CMIP6_Lmon','AM3','soil_temperature','map_land_AM3.csv'); +INSERT INTO mapping VALUES('tsl','fld_s08i225','','K','time depth lat lon','longitude latitude sdepth time','mon','land','area: time: mean','','CMIP6_Lmon','CM2','soil_temperature','map_land_CM2.csv'); +INSERT INTO mapping VALUES('tsl','fld_s08i225','','K','time depth lat lon','longitude latitude sdepth time','mon','land','area: mean where land time: mean','','CMIP6_Lmon','ESM1.5','soil_temperature','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('ua','fld_s00i002','level_to_height(var[0],levs=(0,66))','m s-1','time model_rho_level_number lat lon','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','eastward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev3 time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev3 time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ua','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ua17','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','eastward_wind','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('ua17uvgrid','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','eastward_wind','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('ua19','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time1','6hrPt','atmos','area: time: point','','CM2_6hr','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ua19','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time1','6hrPt','atmos','area: time: point','','CM2_6hr','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ua19uvgrid','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('ua19uvgrid','fld_s30i201','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('ua24','fld_s00i002 fld_s00i407','plevinterp(var[0], var[1], 24)','m s-1','time model_rho_level_number lat lon','longitude latitude plev24 time1','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','eastward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_0','longitude latitude time1 height10m','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','eastward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time_0 lat lon_0','longitude latitude time height10m','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','eastward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','longitude latitude time1 height10m','3hrPt','atmos','area: time: point','','CMIP6_3hr','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','longitude latitude time1 height10m','3hrPt','atmos','area: time: point','','CMIP6_3hr','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','longitude latitude time height10m','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','longitude latitude time height10m','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','longitude latitude time height10m','day','atmos','area: time: mean','','CMIP6_day','CM2','eastward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('uas','fld_s03i209','','m s-1','time lat lon_u','longitude latitude time height10m','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','eastward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('umo','tx_trans','','kg/s','time st_ocean yt_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','ocean_x_mass_transport','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('umo','tx_trans','','kg/s','time st_ocean yt_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','ocean_x_mass_transport','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('umo','tx_trans','','kg/s','time st_ocean yt_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','ocean_x_mass_transport','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','CM2','sea_water_x_velocity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','ESM1.5','sea_water_x_velocity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_x_velocity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_x_velocity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_x_velocity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('uo','u','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_x_velocity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('va','fld_s00i003','level_to_height(var[0],levs=(0,66))','m s-1','time model_rho_level_number lat_0 lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','northward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev3 time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev3 time1','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('va','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('va17','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','northward_wind','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('va17uvgrid','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','northward_wind','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('va19','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','6hrPt','atmos','area: time: point','','CM2_6hr','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('va19','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','6hrPt','atmos','area: time: point','','CM2_6hr','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('va19uvgrid','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('va19uvgrid','fld_s30i202','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('va24','fld_s00i003 fld_s00i407','plevinterp(var[0], var[1], 24)','m s-1','time model_rho_level_number lat_0 lon_0','longitude latitude plev24 time1','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','northward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_0 lon','longitude latitude time1 height10m','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','northward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time_0 lat_0 lon','longitude latitude time height10m','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','northward_wind','map_AUS2200.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','longitude latitude time1 height10m','3hrPt','atmos','area: time: point','','CMIP6_3hr','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','longitude latitude time1 height10m','3hrPt','atmos','area: time: point','','CMIP6_3hr','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','longitude latitude time height10m','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','longitude latitude time height10m','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','longitude latitude time height10m','day','atmos','area: time: mean','','CMIP6_day','CM2','northward_wind','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('vas','fld_s03i210','','m s-1','time lat_v lon','longitude latitude time height10m','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','northward_wind','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('vegFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev=''typeveg'')','1','time lat lon','longitude latitude time typeveg','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('vegFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],[1,2,3,4,5,6,7,8,9,10,11,12,13],landfrac=var[1],lev=''typeveg'')','1','time lat lon','longitude latitude time typeveg','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('vmo','ty_trans','','kg/s','time st_ocean yu_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','ocean_y_mass_transport','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('vmo','ty_trans','','kg/s','time st_ocean yu_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','ocean_y_mass_transport','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('vmo','ty_trans','','kg/s','time st_ocean yu_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','ocean_y_mass_transport','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','CM2','sea_water_y_velocity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','ESM1.5','sea_water_y_velocity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','OM2','sea_water_y_velocity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_water_y_velocity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_water_y_velocity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('vo','v','','m s-1','time st_ocean yu_ocean xu_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_water_y_velocity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('wa','fld_s00i150','level_to_height(var[0],levs=(0,66))','m s-1','time model_theta_level_number lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','upward_air_velocity','map_AUS2200.csv'); +INSERT INTO mapping VALUES('wa17uvgrid','fld_s30i203','','m s-1','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','upward_air_velocity','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('wa19uvgrid','fld_s30i203','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','upward_air_velocity','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('wa19uvgrid','fld_s30i203','','m s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','upward_air_velocity','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('wa24','fld_s00i150 fld_s00i408','plevinterp(var[0], var[1], 24)','m s-1','time model_theta_level_number lat lon_0','longitude latitude plev24 time1','1hrPt','atmos','area: time: point','','AUS2200_A1hrPlev','AUS2200','upward_air_velocity','map_AUS2200.csv'); +INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','lagrangian_tendency_of_air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','lagrangian_tendency_of_air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('wap','fld_s30i298','','Pa s-1','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','lagrangian_tendency_of_air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('wap17','fld_s30i298','','Pa s-1','time pressure lat lon','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','lagrangian_tendency_of_air_pressure','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('wap17uvgrid','fld_s30i208','','Pa s-1','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','lagrangian_tendency_of_air_pressure','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('wap19uvgrid','fld_s30i208','','Pa s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','lagrangian_tendency_of_air_pressure','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('wap19uvgrid','fld_s30i208','','Pa s-1','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','lagrangian_tendency_of_air_pressure','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('wetlandFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],11,landfrac=var[1],lev=''typewetla'')','1','time pseudo_level_1 lat lon','longitude latitude time typewetla','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','CM2','area_fraction','map_land_CM2.csv'); +INSERT INTO mapping VALUES('wetlandFrac','fld_s03i317 fld_s03i395','extract_tilefrac(var[0],11,landfrac=var[1],lev=''typewetla'')','1','time pseudo_level_1 lat lon','longitude latitude time typewetla','mon','land','area: mean where land over all_area_types time: mean','','CMIP6_Emon','ESM1.5','area_fraction','map_land_ESM1.5.csv'); +INSERT INTO mapping VALUES('wetss','fld_s38i241 fld_s38i242 fld_s38i265 fld_s38i266','calc_depositions(var)','kg m-2 s-1','time model_theta_level_number lat lon','longitude latitude time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','minus_tendency_of_atmosphere_mass_content_of_sea_salt_dry_aerosol_particles_due_to_wet_deposition','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('wfo','pme_river','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','water_flux_into_sea_water','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('wfo','pme_river','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','water_flux_into_sea_water','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('wfo','pme_river','','kg m-2 s-1','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','water_flux_into_sea_water','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('wmo','tz_trans','','kg s-1','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','upward_ocean_mass_transport','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('wmo','tz_trans','','kg s-1','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','upward_ocean_mass_transport','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('wmo','tz_trans','','kg s-1','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','upward_ocean_mass_transport','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','CM2','upward_sea_water_velocity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','ESM1.5','upward_sea_water_velocity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','day','ocean','area: time: mean','','CM2_day','OM2','upward_sea_water_velocity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','upward_sea_water_velocity','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','upward_sea_water_velocity','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('wo','wt','','m/sec','time sw_ocean yt_ocean xt_ocean','longitude latitude olevel time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','upward_sea_water_velocity','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('wsgmax10m','fld_s03i463','','m s-1','time lat lon','longitude latitude time1 height10m','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','wind_speed_of_gust','map_AUS2200.csv'); +INSERT INTO mapping VALUES('wsgmax10m','fld_s03i463','','m s-1','time_0 lat lon','longitude latitude time height10m','1hr','atmos','area: time: maximum','','AUS2200_A1hr','AUS2200','wind_speed_of_gust','map_AUS2200.csv'); +INSERT INTO mapping VALUES('wsgmax10m_max','fld_s03i463_max','','m s-1','time_0 lat lon','longitude latitude time height10m','10min','atmos','area: time: maximum','','AUS2200_A10min','AUS2200','wind_speed_of_gust','map_AUS2200.csv'); +INSERT INTO mapping VALUES('z0','fld_s00i026','','m','time lat lon','longitude latitude time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','surface_roughness_length','map_AUS2200.csv'); +INSERT INTO mapping VALUES('zfull','fld_s15i101','level_to_height(var[0],levs=(0,66))','m','time_0 model_theta_level_number lat lon_0','longitude latitude alevel time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','height_above_reference_ellipsoid','map_AUS2200.csv'); +INSERT INTO mapping VALUES('zfull','fld_s15i101','level_to_height(var[0])','m','time model_theta_level_number lat lon','longitude latitude alevel','mon','atmos','area: time: mean','','CMIP6_fx','CM2','height_above_reference_ellipsoid','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('zfull','fld_s15i101','level_to_height(var[0])','m','time model_theta_level_number lat lon','longitude latitude alevel','mon','atmos','area: time: mean','','CMIP6_fx','ESM1.5','height_above_reference_ellipsoid','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','CM2','geopotential_height','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','longitude latitude plev19 time','mon','atmos','area: time: mean','','CMIP6_Amon','ESM1.5','geopotential_height','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','CM2','geopotential_height','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','longitude latitude plev19 time','day','atmos','area: time: mean','','CMIP6_Eday','ESM1.5','geopotential_height','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','CM2','geopotential_height','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('zg','fld_s30i297','','m','time pressure lat lon','longitude latitude plev8 time','day','atmos','area: time: mean','','CMIP6_day','ESM1.5','geopotential_height','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('zg16','fld_s16i202','','m','time pressure lat lon','longitude latitude plev16 time1','3hrPt','atmos','area: time: point','','AUS2200_A3hr','AUS2200','geopotential_height','map_AUS2200.csv'); +INSERT INTO mapping VALUES('zg17','fld_s30i297','','m','time pressure lat lon','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','geopotential_height','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('zg17uvgrid','fld_s30i207','','m','time pressure lat_v lon_u','longitude latitude plev17 time','mon','atmos','area: time: mean','','AM3_Amon','AM3','geopotential_height','map_atmos_AM3.csv'); +INSERT INTO mapping VALUES('zg19uvgrid','fld_s30i207','','m','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','CM2','geopotential_height','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('zg19uvgrid','fld_s30i207','','m','time pressure lat_v lon_u','longitude latitude plev19 time','mon','atmos','area: time: mean','','CM2_mon','ESM1.5','geopotential_height','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('zg24','fld_s15i101 fld_s00i408','height_gpheight(var[0], pmod=var[1], levnum=24)','m','time_0 model_theta_level_number lat lon_0','longitude latitude plev24 time1','6hrPt','atmos','area: time: point','','AUS2200_A6hr','AUS2200','geopotential_height','map_AUS2200.csv'); +INSERT INTO mapping VALUES('zg500','fld_s30i297','','m','time pressure lat lon','longitude latitude time1 p500','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','CM2','geopotential_height','map_atmos_CM2.csv'); +INSERT INTO mapping VALUES('zg500','fld_s30i297','','m','time pressure lat lon','longitude latitude time1 p500','6hrPt','atmos','area: time: point','','CMIP6_6hrPlevPt','ESM1.5','geopotential_height','map_atmos_ESM1.5.csv'); +INSERT INTO mapping VALUES('zg500','fld_s30i297','var[0].sel(pressure=500)','m','time pressure lat lon','longitude latitude time p500','day','aerosol','area: time: mean','','CMIP6_AERday','AM3','geopotential_height','map_aerosol_AM3.csv'); +INSERT INTO mapping VALUES('zg500','fld_s30i297','var[0].sel(pressure=500)','m','time pressure lat lon','longitude latitude time p500','day','aerosol','area: time: mean','','CMIP6_AERday','CM2','geopotential_height','map_aerosol_CM2.csv'); +INSERT INTO mapping VALUES('zhalf','fld_s15i102','level_to_height(var[0],levs=(0,66))','m','time_0 model_rho_level_number lat lon_0','longitude latitude alevhalf time1','1hrPt','atmos','area: time: point','','AUS2200_A1hr','AUS2200','height_above_reference_ellipsoid','map_AUS2200.csv'); +INSERT INTO mapping VALUES('zmla','fld_s00i025','','m','time lat lon','longitude latitude time1','10minPt','atmos','area: time: point','','AUS2200_A10min','AUS2200','atmosphere_boundary_layer_thickness','map_AUS2200.csv'); +INSERT INTO mapping VALUES('zmla','fld_s00i025','','m','time_0 lat lon','longitude latitude time','1hr','atmos','area: time: mean','','AUS2200_A1hr','AUS2200','atmosphere_boundary_layer_thickness','map_AUS2200.csv'); +INSERT INTO mapping VALUES('zos','sea_level','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','sea_surface_height_above_geoid','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('zos','sea_level','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','sea_surface_height_above_geoid','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('zos','sea_level','','m','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','sea_surface_height_above_geoid','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('zossq','sea_level_sq','','m2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','CM2','square_of_sea_surface_height_above_geoid','map_ocean_CM2.csv'); +INSERT INTO mapping VALUES('zossq','sea_level_sq','','m2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','ESM1.5','square_of_sea_surface_height_above_geoid','map_ocean_ESM1.5.csv'); +INSERT INTO mapping VALUES('zossq','sea_level_sq','','m2','time yt_ocean xt_ocean','longitude latitude time','mon','ocean','area: time: mean','','CMIP6_Omon','OM2','square_of_sea_surface_height_above_geoid','map_ocean_OM2.csv'); +INSERT INTO mapping VALUES('ztp','fld_s30i453','','m','time lat lon','longitude latitude time','mon','aerosol','area: time: mean','','CMIP6_AERmon','CM2','tropopause_altitude','map_aerosol_CM2.csv'); COMMIT; diff --git a/src/mopdata/axes_names.yaml b/src/mopdata/axes_names.yaml new file mode 100644 index 0000000..e0cba9a --- /dev/null +++ b/src/mopdata/axes_names.yaml @@ -0,0 +1,144 @@ +# List all currently available coordinates for vertical Z, pseudo and singleton axes +# Z axes are vertical coordinates +# pseudo axes are pseudo-vertical coordinates, they follow time axes if present +# so usually second in order, ex. basin +# singleton axes have one value given in coordinate definition, for ex typeveg +# cmor_axis call can be omitted for them +# Corresponding to what is in cmor_tables/ACDD_coordinates +# it includes all CMIP6_coordinates too as ACDD just adds on them +# If a new Z/pseudo coordinate is defined it should be added here + +Z_axes: + - alevel + - alevhalf + - alt16 + - alt40 + - depth0m + - depth100m + - depth2000m + - depth300m + - depth700m + - height100m + - height10m + - height1.5m + - height2m + - olayer100m + - olevel + - olevhalf + - p10 + - p100 + - p1000 + - p200 + - p220 + - p500 + - p560 + - p700 + - p840 + - p850 + - pl700 + - plev16 + - plev17 + - plev19 + - plev23 + - plev27 + - plev3 + - plev39 + - plev3h + - plev4 + - plev7c + - plev7h + - plev8 + - rho0 + - rho + - sdepth + - sdepth1 + - sdepth10 + - stempzero + - plev24 + +alevel: + - alternate_hybrid_sigma + - hybrid_height2 + - hybrid_height + - standard_hybrid_sigma + - standard_sigma + +alevhalf: + - alternate_hybrid_sigma_half + - hybrid_height_half + - standard_hybrid_sigma_half + - standard_sigma_half + +olevel: + - depth_coord + - ocean_sigma + - ocean_sigma_z + +olevhalf: + - depth_coord_half + - ocean_sigma_half + - ocean_sigma_z_half + +pseudo_axes: + - basin + - dbze + - effectRadIc + - effectRadLi + - iceband + - landUse + - oline + - scatratio + - siline + - site + - snowband + - soilpools + - spectband + - sza5 + - tau + - vegtype + - xant + - xgre + - yant + - ygre + +singleton_axes: + - lambda550nm + - scatter180 + - sithreshold + - soilpools + - typebare + - typeburnt + - typec3crop + - typec3natg + - typec3pastures + - typec3pft + - typec4crop + - typec4natg + - typec4pastures + - typec4pft + - typecloud + - typecrop + - typefis + - typegis + - typeland + - typeli + - typemp + - typenatgr + - typenwd + - typepasture + - typepdec + - typepever + - typeresidual + - typesdec + - typesea + - typesever + - typeshrub + - typesi + - typesirdg + - typetree + - typetreebd + - typetreebe + - typetreend + - typetreene + - typeveg + - typewetla diff --git a/src/mopdata/cmor_tables/ACDD_CV.json b/src/mopdata/cmor_tables/ACDD_CV.json index 72cff7a..3f0f40d 100755 --- a/src/mopdata/cmor_tables/ACDD_CV.json +++ b/src/mopdata/cmor_tables/ACDD_CV.json @@ -29,16 +29,22 @@ "institution_id": { "UNSW": "University of New South Wales", "UniMelb": "University of Melbourne", + "Monash": "Monash University", + "ANU": "Australian National University", "CSIR-Wits-CSIRO": "CSIR (Council for Scientific and Industrial Research - Natural Resources and the Environment, Pretoria, 0001, South Africa), Wits (University of the Witwatersrand - Global Change Institute, Johannesburg 2050, South Africa), CSIRO (Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia)Mailing address: Wits, Global Change Institute, Johannesburg 2050, South Africa", "CSIRO": "Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia", "CSIRO-ARCCSS": "CSIRO (Commonwealth Scientific and Industrial Research Organisation, Aspendale, Victoria 3195, Australia), ARCCSS (Australian Research Council Centre of Excellence for Climate System Science)", "CSIRO-COSIMA": "CSIRO (Commonwealth Scientific and Industrial Research Organisation, Australia), COSIMA (Consortium for Ocean-Sea Ice Modelling in Australia)", - "UTAS": "Institute for Marine and Antarctic Studies, University of Tasmania, Hobart, Tasmania 7001, Australia" + "UTAS": "Institute for Marine and Antarctic Studies, University of Tasmania, Hobart, Tasmania 7001, Australia", + "ACCESS-NRI": "ACCESS National Research Infrastructure" }, "source_id": { "AUS2200": { "source_id": "AUS2200", "source": "UM v12.2 at 2.2km resolution"}, + "ACCESS-AM3": { + "source_id": "ACCESS-AM3", + "source": "Atmosphere only run: UM v13.x with Jules, CABLE3, CABLE4"}, "ACCESS-CM2": { "source_id": "ACCESS-CM2", "source": "ACCESS-CM2 (2019): \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.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.2 (same grid as ocean)" diff --git a/src/mopdata/cmor_tables/ACDD_coordinate.json b/src/mopdata/cmor_tables/ACDD_coordinate.json index d5a3a7f..48dc40a 100755 --- a/src/mopdata/cmor_tables/ACDD_coordinate.json +++ b/src/mopdata/cmor_tables/ACDD_coordinate.json @@ -1406,6 +1406,47 @@ "bounds_values": "", "generic_level_name": "" }, + "plev17": { + "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." + ], + "requested_bounds": "", + "stored_direction": "decreasing", + "tolerance": "", + "type": "double", + "valid_max": "", + "valid_min": "", + "value": "", + "z_bounds_factors": "", + "z_factors": "", + "bounds_values": "", + "generic_level_name": "" + }, "plev19": { "standard_name": "air_pressure", "units": "Pa", diff --git a/src/mopdata/cmor_tables/AM3_A1hrClimMon.json b/src/mopdata/cmor_tables/AM3_A1hrClimMon.json new file mode 100644 index 0000000..e8929a7 --- /dev/null +++ b/src/mopdata/cmor_tables/AM3_A1hrClimMon.json @@ -0,0 +1,36 @@ +{ + "Header": { + "data_specs_version": "01.00.00", + "cmor_version": "3.5", + "table_id": "Table A1hrClimMon", + "realm": "atmos", + "table_date": "09 September 2024", + "missing_value": "1e20", + "int_missing_value": "-999", + "product": "model-output", + "approx_interval": "0.041667", + "generic_levels": "", + "mip_era": "", + "Conventions": "CF-1.7 CMIP-6.2" + }, + "variable_entry": { + "tas": { + "frequency": "1hrCM", + "modeling_realm": "atmos", + "standard_name": "air_temperature", + "units": "K", + "cell_methods": "area: mean time: mean within days time: mean over days", + "cell_measures": "area: areacella", + "long_name": "Air Temperature", + "comment": "Monthly Air Temperature averaged by hour of day", + "dimensions": "longitude latitude time3", + "out_name": "tas", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + } + } +} diff --git a/src/mopdata/cmor_tables/AM3_Amon.json b/src/mopdata/cmor_tables/AM3_Amon.json new file mode 100755 index 0000000..f159587 --- /dev/null +++ b/src/mopdata/cmor_tables/AM3_Amon.json @@ -0,0 +1,468 @@ +{ + "Header": { + "data_specs_version": "01.00.00", + "cmor_version": "3.5", + "table_id": "Table Amon", + "realm": "atmos atmosChem", + "table_date": "09 September 2024", + "missing_value": "1e20", + "int_missing_value": "-999", + "product": "model-output", + "approx_interval": "30.00000", + "generic_levels": "alevel alevhalf", + "mip_era": "", + "Conventions": "CF-1.7 CMIP-6.2" + }, + "variable_entry": { + "co217": { + "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 plev17 time", + "out_name": "co2", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "co2Clim17": { + "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 plev17 time2", + "out_name": "co2", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "hur17": { + "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 plev17 time", + "out_name": "hur", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "hus17": { + "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 humidity is the mass fraction of water vapor in (moist) air.", + "dimensions": "longitude latitude plev17 time", + "out_name": "hus", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "hus17uvgrid": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "specific_humidity", + "units": "%", + "cell_methods": "time: mean", + "cell_measures": "area: areacella", + "long_name": "Specific Humidity on pressure levels", + "comment": "Specific humidity is the mass fraction of water vapor in (moist) air. Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "hur", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "n2o17": { + "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 plev17 time", + "out_name": "n2o", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "n2oClim17": { + "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 plev17 time2", + "out_name": "n2o", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "o317": { + "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 plev17 time", + "out_name": "o3", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "o3Clim17": { + "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 plev17 time2", + "out_name": "o3", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "ta17": { + "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 plev17 time", + "out_name": "ta", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "ua17": { + "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": "Zonal wind (positive in a eastward direction).", + "dimensions": "longitude latitude plev17 time", + "out_name": "ua", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "va17": { + "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": "Meridional wind (positive in a northward direction).", + "dimensions": "longitude latitude plev17 time", + "out_name": "va", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "wap17": { + "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 plev17 time", + "out_name": "wap", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "zg17": { + "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 plev17 time", + "out_name": "zg", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "wa17": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "upward_air_velocity", + "units": "m s-1", + "cell_methods": "area: time: mean", + "cell_measures": "area: areacella", + "long_name": "Upward Air Velocity on pressure levels", + "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention.", + "dimensions": "longitude latitude plev17 time", + "out_name": "wa", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "wa17uvgrid": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "upward_air_velocity", + "units": "m s-1", + "cell_methods": "area: time: mean", + "cell_measures": "area: areacella", + "long_name": "Upward Air Velocity on pressure levels", + "comment": "A velocity is a vector quantity. 'Upward' indicates a vector component which is positive when directed upward (negative downward). Upward air velocity is the vertical component of the 3D air velocity vector. The standard name downward_air_velocity may be used for a vector component with the opposite sign convention. Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "wa", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "ua17uvgrid": { + "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 on pressure levels", + "comment": "Zonal wind (positive in a eastward direction). Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "ua", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "va17uvgrid": { + "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 on pressure levels", + "comment": "Meridional wind (positive in a northward direction). Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "va", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "ta17uvgrid": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "air_temperature", + "units": "K", + "cell_methods": "time: mean", + "cell_measures": "area: areacella", + "long_name": "Air Temperature on pressure levels", + "comment": "Air Temperature. Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "ta", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "hur17uvgrid": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "relative_humidity", + "units": "%", + "cell_methods": "time: mean", + "cell_measures": "area: areacella", + "long_name": "Relative Humidity on pressure levels", + "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "hur", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "hur17uvgrid": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "relative_humidity", + "units": "%", + "cell_methods": "time: mean", + "cell_measures": "area: areacella", + "long_name": "Relative Humidity on pressure levels", + "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "hur", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "wap17uvgrid": { + "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) on pressure levels", + "comment": "Omega (vertical velocity in pressure coordinates, positive downwards). Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "wap", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "mrlqso": { + "frequency": "mon", + "modeling_realm": "land", + "standard_name": "mass_fraction_of_unfrozen_water_in_soil_moisture", + "units": "1", + "cell_methods": "area: mean where land time: mean", + "cell_measures": "area: areacella", + "long_name": "Average Layer Fraction of Liquid Moisture", + "comment": "Fraction of soil moisture mass in the liquid phase in each user-defined soil layer (3D variable)", + "dimensions": "longitude latitude sdepth time", + "out_name": "mrlqso", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "mrrob": { + "frequency": "mon", + "modeling_realm": "land", + "standard_name": "subsurface_runoff_flux", + "units": "kg m-2 s-1", + "cell_methods": "area: mean where land time: mean", + "cell_measures": "area: areacella", + "long_name": "Subsurface Runoff", + "comment": "Runoff is the liquid water which drains from land. If not specified, 'runoff' refers to the sum of surface runoff and subsurface drainage. In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics.", + "dimensions": "longitude latitude time", + "out_name": "mrrob", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "zg17uvgrid": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "geopotential_height", + "units": "m", + "cell_methods": "time: mean", + "cell_measures": "area: areacella", + "long_name": "Geopotential Height on pressure levels", + "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. Defined on uv grid", + "dimensions": "longitude latitude plev17 time", + "out_name": "zg", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + } + } +} diff --git a/src/mopdata/cmor_tables/AUS2200_A10min.json b/src/mopdata/cmor_tables/AUS2200_A10min.json index 2cd05f7..b6189bc 100644 --- a/src/mopdata/cmor_tables/AUS2200_A10min.json +++ b/src/mopdata/cmor_tables/AUS2200_A10min.json @@ -32,6 +32,23 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, + "evspsblpot": { + "frequency": "subhrPt", + "modeling_realm": "land", + "standard_name": "water_potential_evaporation_flux", + "units": "kg m-2 s-1", + "cell_methods": "area: mean where land time: point", + "cell_measures": "area: areacella", + "long_name": "Potential Evapotranspiration", + "comment": "at surface; potential 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 time1", + "out_name": "evspsblpot", + "type": "real", + "positive": "", "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, "ts": { "frequency": "subhrPt", "modeling_realm": "atmos", diff --git a/src/mopdata/cmor_tables/AUS2200_A1hr.json b/src/mopdata/cmor_tables/AUS2200_A1hr.json index 6b5079f..1813098 100644 --- a/src/mopdata/cmor_tables/AUS2200_A1hr.json +++ b/src/mopdata/cmor_tables/AUS2200_A1hr.json @@ -1004,6 +1004,24 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, + "zhalf": { + "frequency": "1hrPt", + "modeling_realm": "atmos", + "standard_name": "height_above_reference_ellipsoid", + "units": "m", + "cell_methods": "area: mean time: point", + "cell_measures": "area: areacella", + "long_name": "Altitude of Model Half-Levels", + "comment": "Height of model half-levels above a reference ellipsoid. A reference ellipsoid is a mathematical figure that approximates the geoid. The geoid is a surface of constant geopotential with which mean sea level would coincide if the ocean were at rest. The ellipsoid is an approximation because the geoid is an irregular shape. A number of reference ellipsoids are defined for use in the field of geodesy. To specify which reference ellipsoid is being used, a grid_mapping variable should be attached to the data variable as described in Chapter 5.6 of the CF Convention.", + "dimensions": "longitude latitude alevhalf time1", + "out_name": "zhalf", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, "ta": { "frequency": "1hrPt", "modeling_realm": "atmos", diff --git a/src/mopdata/cmor_tables/AUS2200_A3hr.json b/src/mopdata/cmor_tables/AUS2200_A3hr.json index 99e6833..4f00dc3 100644 --- a/src/mopdata/cmor_tables/AUS2200_A3hr.json +++ b/src/mopdata/cmor_tables/AUS2200_A3hr.json @@ -1,6 +1,6 @@ { "Header": { - "data_specs_version": "01.00.00", + "data_specs_version": "01.00.01", "cmor_version": "3.5", "table_id": "Table A3hr", "realm": "atmos", diff --git a/src/mopdata/cmor_tables/AUS2200_A6hr.json b/src/mopdata/cmor_tables/AUS2200_A6hr.json index a17aed0..b3e4e52 100644 --- a/src/mopdata/cmor_tables/AUS2200_A6hr.json +++ b/src/mopdata/cmor_tables/AUS2200_A6hr.json @@ -1,6 +1,6 @@ { "Header": { - "data_specs_version": "01.00.00", + "data_specs_version": "01.00.01", "cmor_version": "3.5", "table_id": "Table A6hr", "realm": "atmos", @@ -122,7 +122,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "wbptemp": { + "wbptemp7h": { "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "wet_bulb_potential_temperature", @@ -193,6 +193,24 @@ "valid_max": "", "ok_min_mean_abs": "", "ok_max_mean_abs": "" + }, + "zg24": { + "frequency": "6hrPt", + "modeling_realm": "atmos", + "standard_name": "geopotential_height", + "units": "m", + "cell_methods": "area: mean time: point", + "cell_measures": "area: areacella", + "long_name": "Geopotential Height on pressure levels", + "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 plev24 time1", + "out_name": "zg", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" } } } diff --git a/src/mopdata/cmor_tables/CM2_3hr.json b/src/mopdata/cmor_tables/CM2_3hr.json index 34584c2..906e34b 100644 --- a/src/mopdata/cmor_tables/CM2_3hr.json +++ b/src/mopdata/cmor_tables/CM2_3hr.json @@ -1,6 +1,6 @@ { "Header": { - "data_specs_version": "01.00.00", + "data_specs_version": "01.00.01", "cmor_version": "3.5", "table_id": "Table 3hr", "realm": "atmos", diff --git a/src/mopdata/cmor_tables/CM2_6hr.json b/src/mopdata/cmor_tables/CM2_6hr.json index 18c781e..ae40745 100644 --- a/src/mopdata/cmor_tables/CM2_6hr.json +++ b/src/mopdata/cmor_tables/CM2_6hr.json @@ -14,7 +14,7 @@ "Conventions": "CF-1.7 CMIP-6.2" }, "variable_entry": { - "ua": { + "ua19": { "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "eastward_wind", @@ -32,7 +32,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "va": { + "va19": { "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "northward_wind", @@ -50,7 +50,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "zg": { + "zg19": { "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "geopotential_height", @@ -68,7 +68,25 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "ta": { + "tos": { + "frequency": "6hrPt", + "modeling_realm": "ocean", + "standard_name": "sea_surface_temperature", + "units": "degC", + "cell_methods": "area: mean where sea time: point", + "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 time1", + "out_name": "tos", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, + "ta19": { "frequency": "6hrPt", "modeling_realm": "atmos", "standard_name": "air_temperature", diff --git a/src/mopdata/cmor_tables/CM2_day.json b/src/mopdata/cmor_tables/CM2_day.json index 6082e8d..7cdcacd 100644 --- a/src/mopdata/cmor_tables/CM2_day.json +++ b/src/mopdata/cmor_tables/CM2_day.json @@ -338,7 +338,25 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "hur": { + "thetao": { + "frequency": "day", + "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": "" + }, + "hur19": { "frequency": "day", "modeling_realm": "atmos", "standard_name": "relative_humidity", diff --git a/src/mopdata/cmor_tables/CM2_mon.json b/src/mopdata/cmor_tables/CM2_mon.json index d15890f..f3642fa 100644 --- a/src/mopdata/cmor_tables/CM2_mon.json +++ b/src/mopdata/cmor_tables/CM2_mon.json @@ -32,7 +32,42 @@ "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 land time: mean", + "cell_measures": "area: areacella", + "long_name": "Rainfall Flux over Land", + "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": "" + }, + "prsnc": { + "frequency": "mon", + "modeling_realm": "atmos", + "standard_name": "convective_snowfall_flux", + "units": "kg m-2 s-1", + "cell_methods": "area: mean where land time: mean", + "cell_measures": "area: areacella", + "long_name": "Convective Snowfall Flux", + "comment": "convective precipitation of all forms of water in the solid phase.", + "dimensions": "longitude latitude time", + "out_name": "prsnc", + "type": "real", + "positive": "", + "valid_min": "", + "valid_max": "", + "ok_min_mean_abs": "", + "ok_max_mean_abs": "" + }, "eow": { "frequency": "mon", "modeling_realm": "land", @@ -60,7 +95,7 @@ "cell_measures": "area: areacella", "long_name": "Pressure at Model Full-Levels", "comment": "Air pressure on model levels", - "dimensions": "longitude latitude alevel time2", + "dimensions": "longitude latitude alevel time", "out_name": "pfull", "type": "real", "positive": "", @@ -265,7 +300,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "uauvgrid": { + "ua19uvgrid": { "frequency": "mon", "modeling_realm": "atmos", "standard_name": "eastward_wind", @@ -283,7 +318,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "vauvgrid": { + "va19uvgrid": { "frequency": "mon", "modeling_realm": "atmos", "standard_name": "northward_wind", @@ -301,7 +336,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "tauvgrid": { + "ta19uvgrid": { "frequency": "mon", "modeling_realm": "atmos", "standard_name": "air_temperature", @@ -319,7 +354,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "huruvgrid": { + "hur19uvgrid": { "frequency": "mon", "modeling_realm": "atmos", "standard_name": "relative_humidity", @@ -337,15 +372,15 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "huruvgrid": { + "hus19uvgrid": { "frequency": "mon", "modeling_realm": "atmos", - "standard_name": "relative_humidity", + "standard_name": "specific_humidity", "units": "%", "cell_methods": "time: mean", "cell_measures": "area: areacella", - "long_name": "Relative Humidity on pressure levels", - "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C. Defined on uv grid", + "long_name": "Specific Humidity on pressure levels", + "comment": "Specific humidity is the mass fraction of water vapor in (moist) air. Defined on uv grid", "dimensions": "longitude latitude plev19 time", "out_name": "hur", "type": "real", @@ -355,7 +390,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "wapuvgrid": { + "wap19uvgrid": { "frequency": "mon", "modeling_realm": "atmos", "standard_name": "lagrangian_tendency_of_air_pressure", @@ -373,7 +408,7 @@ "ok_min_mean_abs": "", "ok_max_mean_abs": "" }, - "zguvgrid": { + "zg19uvgrid": { "frequency": "mon", "modeling_realm": "atmos", "standard_name": "geopotential_height", diff --git a/src/mopdata/land_tiles.yaml b/src/mopdata/land_tiles.yaml index 0df6aa6..9a95320 100644 --- a/src/mopdata/land_tiles.yaml +++ b/src/mopdata/land_tiles.yaml @@ -2,27 +2,24 @@ # # Settings for land use # These have been placed here from app_functions.py - -land: - cmip6: ['primary_and_secondary_land', - 'pastures', - 'crops', - 'urban'] - - cable: ['Evergreen_Needleleaf', - 'Evergreen_Broadleaf', - 'Deciduous_Needleleaf', - 'Deciduous_Broadleaf', - 'Shrub', - 'C3_grass', - 'C4_grass', - 'Tundra', - 'C3_crop', - 'C4_crop', - 'Wetland', - '', - '', - 'Barren', - 'Urban', - 'Lakes', - 'Ice'] \ No newline at end of file +cmip6: ['primary_and_secondary_land', + 'pastures', + 'crops', + 'urban'] +cable: ['Evergreen_Needleleaf', + 'Evergreen_Broadleaf', + 'Deciduous_Needleleaf', + 'Deciduous_Broadleaf', + 'Shrub', + 'C3_grass', + 'C4_grass', + 'Tundra', + 'C3_crop', + 'C4_crop', + 'Wetland', + '', + '', + 'Barren', + 'Urban', + 'Lakes', + 'Ice'] diff --git a/src/mopdata/landtype.yaml b/src/mopdata/landtype.yaml index aa70910..3993560 100644 --- a/src/mopdata/landtype.yaml +++ b/src/mopdata/landtype.yaml @@ -1,6 +1,7 @@ mod_mapping: typebare: bare_ground typeburnt: burnt_vegetation + typec3pft: c3_plant_functional_types typec3crop: crops_of_c3_plant_functional_types typec3natg: natural_grasses_of_c3_plant_functional_types typec3pastures: pastures_of_c3_plant_functional_types @@ -29,4 +30,4 @@ mod_mapping: typesirdg: sea_ice_ridges typetree: trees typeveg: vegetation - typewetla: wetland \ No newline at end of file + typewetla: wetland diff --git a/src/mopdata/transport_lines.yaml b/src/mopdata/transport_lines.yaml index ac91c4b..afedf53 100644 --- a/src/mopdata/transport_lines.yaml +++ b/src/mopdata/transport_lines.yaml @@ -19,8 +19,8 @@ lines: 'mozambique_channel', 'taiwan_luzon_straits', 'windward_passage'] - ice_lines: ['fram_strait', - 'canadian_archipelago', - 'barents_opening', - 'bering_strait'] - gridfile: "cice_grid_20101208.nc" \ No newline at end of file + ice_lines: [ + {'fram_strait': {'lon1': -11.5, 'lat1': 81.3, 'lon2': 10.5, 'lat2': 79.6}, + 'canadian_archipelago': {'lon1': -128.2, 'lat1': 70.6, 'lon2': -59.3, 'lat2': 82.1}, + 'barents_opening': {'lon1': -16.8, 'lat1': 76.5, 'lon2': 19.5, 'lat2': 70.2}, + 'bering_strait': {'lon1': -171.0, 'lat1': 66.2, 'lon2': -166.0, 'lat2': 65.0}} diff --git a/src/mopdata/update_db.py.txt b/src/mopdata/update_db.py.txt index c1cb17d..0e5edf1 100644 --- a/src/mopdata/update_db.py.txt +++ b/src/mopdata/update_db.py.txt @@ -1,3 +1,25 @@ +#!/usr/bin/env python +# Copyright 2024 ARC Centre of Excellence for Climate Extremes (CLEX) +# Author: Paola Petrelli for CLEX +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# contact: paola.petrelli@utas.edu.au +# +# last updated 08/10/2024 +# +# Simple script to update file records in mopper.db database + import sqlite3 import json import sys @@ -6,28 +28,31 @@ import os def get_rows(conn, exp): cursor = conn.cursor() - cursor.execute("select filename,variable_id,ctable,calculation," - "vin,status,ROWID from filelist where " - + f"exp_id='{exp}'") + cursor.execute("""SELECT filename,variable_id,ctable,calculation, + vin,status,ROWID FROM filelist WHERE exp_id == ?""", + (exp,)) rows = cursor.fetchall() return rows def update_status(conn, varid, ctable, old, new): cur = conn.cursor() - cur.execute(f"UPDATE filelist SET status='{new}' where " - + f"status='{old}' and variable_id='{varid}'" - + f"and ctable='{ctable}'") + cur.execute("""UPDATE filelist SET status = ? where + status == ? and variable_id == ? and ctable == ?""", + (new, old, varid, ctable)) print(f"Updated {cur.rowcount} rows\n") conn.commit() return -def update_file(conn, varid, ctable, fdate, status): +def update_file(conn, varid, ctable, fdate, status, allrows=False): cur = conn.cursor() - cur.execute(f"UPDATE filelist SET status='{status}' where " - + f"variable_id='{varid}' and ctable='{ctable}'" - + f"and tstart='{fdate}'") + if allrows is True: + cur.execute(f"UPDATE filelist SET status='{status}'") + else: + cur.execute("""UPDATE filelist SET status = ? where + variable_id == ? and ctable == ? and tstart == ?""", + (status, varid, ctable, fdate)) updated = cur.rowcount conn.commit() return updated @@ -38,31 +63,39 @@ def update_map(conn, varid, ctable): update them in filelist """ keys = ['frequency','realm','timeshot','calculation', - 'positive', 'resample'] + 'positive', 'resample', 'axes'] keys2 = {'vin': 'input_vars', 'in_units': 'units'} fname = f"maps/{ctable}.json" with open(fname, 'r') as f: data = json.load(f) + found = False for row in data: if row['cmor_var'] == varid and row['cmor_table'] == ctable: + found = True break - args = {k: row[k] for k in keys} - for k,v in keys2.items(): - args[k] = row[v] - if 'datadir' in row.keys(): - paths = row['file_structure'].split() - infile = '' - for x in paths: - infile += f"{row['datadir']}/{x} " - args['infile'] = infile - cur = conn.cursor() - sql = f"UPDATE filelist SET" - for k,v in args.items(): - sql += f" {k}='{v}'," - sql = sql[:-1] + f" WHERE variable_id='{varid}' and ctable='{ctable}'" - cur.execute(sql) - print(f"Updated {cur.rowcount} rows\n") - conn.commit() + if found: + args = {k: row[k] for k in keys} + for k,v in keys2.items(): + args[k] = row[v] + if 'datadir' in row.keys(): + paths = row['file_structure'].split() + infile = '' + for x in paths: + infile += f"{row['datadir']}/{x} " + args['infile'] = infile + cur = conn.cursor() + values = [] + sql = f"UPDATE filelist SET" + for k,v in args.items(): + sql += f" {k} = ?," + values.append(v) + values.extend([varid, ctable]) + sql = sql[:-1] + f" WHERE variable_id == ? and ctable == ?" + cur.execute(sql, tuple(values)) + print(f"Updated {cur.rowcount} rows\n") + conn.commit() + else: + print(f"No match for {varid}, {ctable} in maps/{ctable}.json") return @@ -95,7 +128,7 @@ def get_summary(rows): def process_var(conn, flist, varname=None): - """For each variable ask if they want ton update status to + """For each variable ask if user want to update status to processed or unprocessed """ if varname is not None: @@ -123,35 +156,40 @@ def process_var(conn, flist, varname=None): return -def bulk_update(conn): - """ +def bulk_update(conn, unprocessed=False): + """Update status of all variables either using failed and success + files or reset all vars to unprocessed. """ - success = [] - failed = [] - suc_count = 0 - fail_count = 0 - if os.path.isfile('success.csv') is True: - with open('success.csv', 'r') as f: - reader = csv.reader(f, delimiter=',') - for row in reader: - success.append((row[1], row[0], row[2])) - for f in success: - st = update_file(conn,f[0],f[1],f[2],'processed') - suc_count += st - print(f"{len(success)} successful files and {suc_count} updated\n") + if unprocessed is True: + st = update_file(conn,'','','','unprocessed', allrows=True) + print(f"{st} files updated\n") else: - print("no success.csv file\n") - if os.path.isfile('failed.csv') is True: - with open('failed.csv', 'r') as f: - reader = csv.reader(f, delimiter=',') - for row in reader: - failed.append((row[1], row[0], row[2])) - for f in failed: - st = update_file(conn,f[0],f[1],f[2],'processing_failed') - fail_count += st - print(f"{len(failed)} failed files and {fail_count} updated\n") - else: - print("no failed.csv file\n") + success = [] + failed = [] + suc_count = 0 + fail_count = 0 + if os.path.isfile('success.csv') is True: + with open('success.csv', 'r') as f: + reader = csv.reader(f, delimiter=',') + for row in reader: + success.append((row[1], row[0], row[2])) + for f in success: + st = update_file(conn,f[0],f[1],f[2],'processed') + suc_count += st + print(f"{len(success)} successful files and {suc_count} updated\n") + else: + print("no success.csv file\n") + if os.path.isfile('failed.csv') is True: + with open('failed.csv', 'r') as f: + reader = csv.reader(f, delimiter=',') + for row in reader: + failed.append((row[1], row[0], row[2])) + for f in failed: + st = update_file(conn,f[0],f[1],f[2],'unprocessed') + fail_count += st + print(f"{len(failed)} failed files and {fail_count} updated\n") + else: + print("no failed.csv file\n") return exp = sys.argv[1] @@ -164,13 +202,17 @@ ans = input("Update db based on success/failed? (Y/N) ") if ans == 'Y': bulk_update(conn) else: - rows = get_rows(conn, exp) - flist = get_summary(rows) - ans = input("Update specific variable? (Y/N) ") + ans = input("Reset all variables to unprocessed? (Y/N) ") if ans == 'Y': - varname = input("Variable: ") - while varname != '': - process_var(conn, flist, varname=varname) - varname = input("Variable: (name or Enter to stop) ") - elif ans == 'N': - process_var(conn, flist) + bulk_update(conn, unprocessed=True) + else: + rows = get_rows(conn, exp) + flist = get_summary(rows) + ans = input("Update specific variable? (Y/N) ") + if ans == 'Y': + varname = input("Variable: ") + while varname != '': + process_var(conn, flist, varname=varname) + varname = input("Variable: (name or Enter to stop) ") + elif ans == 'N': + process_var(conn, flist) diff --git a/src/mopdb/mopdb.py b/src/mopdb/mopdb.py index 7e50bed..c55307e 100644 --- a/src/mopdb/mopdb.py +++ b/src/mopdb/mopdb.py @@ -16,7 +16,7 @@ # # contact: paola.petrelli@utas.edu.au # -# last updated 08/04/2024 +# last updated 08/10/2024 import click import logging @@ -27,35 +27,23 @@ from pathlib import Path from mopdb.mopdb_utils import (mapping_sql, cmorvar_sql, read_map, - read_map_app4, create_table, write_cmor_table, update_db) -from mopdb.utils import (config_log, db_connect, query, delete_record) + read_map_app4, write_cmor_table, update_db) +from mopdb.utils import (config_log, db_connect, query, create_table, + delete_record, MopException) from mopdb.mopdb_map import (write_varlist, write_map_template, write_catalogue, map_variables, load_vars, get_map_obj) def mopdb_catch(): """ """ - debug_logger = logging.getLogger('app_debug') + debug_logger = logging.getLogger('mopdb_log') debug_logger.setLevel(logging.CRITICAL) try: mopdb() except Exception as e: click.echo('ERROR: %s'%e) debug_logger.exception(e) - sys.exit(1) - - -def require_date(ctx, param, value): - """Changes match option in template command from optional to - required if fpath is a directory. - """ - names = [] - for i in range(len(ctx.command.params)): - names.append(ctx.command.params[i].name) - idx = names.index('match') - if Path(value).is_dir() and 'filelist' not in names: - ctx.command.params[idx].required = True - return value + raise MopException(e) def db_args(f): @@ -80,16 +68,13 @@ def map_args(f): """ constraints = [ click.option('--fpath', '-f', type=click.Path(exists=True), - required=True, callback=require_date, + required=True, help=("""Model output files path. For 'template' command can also be file generated by varlist step""")), - click.option('--match', '-m', type=str, required=False, - help=("""String to match output files. Most often - the timestamp from one of the output files""")), click.option('--version', '-v', required=True, - type=click.Choice(['ESM1.5', 'CM2', 'AUS2200', 'OM2']), + type=click.Choice(['ESM1.5', 'CM2', 'AUS2200', 'OM2', 'AM3']), show_default=True, - help="ACCESS version currently only CM2, ESM1.5, AUS2200, OM2"), + help="ACCESS version currently only CM2, ESM1.5, AUS2200, OM2, AM3"), click.option('--dbname', type=str, required=False, default='default', help="Database relative path by default is package access.db"), click.option('--alias', '-a', type=str, required=False, default='', @@ -158,10 +143,10 @@ def check_cmor(ctx, dbname): @mopdb.command(name='table') @db_args @click.option('--label', '-l', required=False, default='CMIP6', - type=click.Choice(['CMIP6', 'AUS2200', 'CM2', 'OM2']), + type=click.Choice(['CMIP6', 'AUS2200', 'CM2', 'OM2', 'AM3']), show_default=True, help='''Label indicating origin of CMOR variable definitions. - Currently only CMIP6, AUS2200, CM2 and OM2''') + Currently only CMIP6, AUS2200, CM2, OM2, AM3''') @click.pass_context def cmor_table(ctx, dbname, fname, alias, label): """Create CMIP style table containing new variable definitions @@ -264,7 +249,7 @@ def update_cmor(ctx, dbname, fname, alias): dbcentral = import_files('mopdata').joinpath('access.db') if dbname in [dbcentral, 'default']: mopdb_log.error("The package database cannot be updated") - sys.exit() + raise MopException("The package database cannot be updated") conn = db_connect(dbname, logname='mopdb_log') # create table if not existing table_sql = cmorvar_sql() @@ -294,7 +279,7 @@ def update_cmor(ctx, dbname, fname, alias): for r in vars_list: if len(r) != 19: mopdb_log.error(r) - sys.exit() + raise MopException(r) # insert new vars and update existing ones update_db(conn, 'cmorvar', vars_list) conn.close() @@ -305,7 +290,7 @@ def update_cmor(ctx, dbname, fname, alias): @mopdb.command(name='template') @map_args @click.pass_context -def map_template(ctx, fpath, match, dbname, version, alias): +def map_template(ctx, fpath, dbname, version, alias): """Writes a template of mapping file needed to run setup. First opens database and check if variables match any in mapping table. If not tries to partially match them. @@ -321,8 +306,6 @@ def map_template(ctx, fpath, match, dbname, version, alias): fpath : str Path of csv input file with output variables to map or of directory containing output files to scan - match : str - Date or other string to match to individuate one file per type dbname : str Database relative path (default is data/access.db) version : str @@ -349,7 +332,7 @@ def map_template(ctx, fpath, match, dbname, version, alias): mopdb_log.debug(f"File is mapping: {map_file}") else: mopdb_log.debug(f"Calling write_varlist() from template: {fpath}") - fname, vobjs, fobjs = write_varlist(conn, fpath, match, version, alias) + fname, vobjs, fobjs = write_varlist(conn, fpath, version, alias) if alias == '': alias = fname.split(".")[0] parsed = map_variables(conn, vobjs, version) @@ -365,7 +348,7 @@ def map_template(ctx, fpath, match, dbname, version, alias): required=False, default=None, help='Map or varlist csv file relative path') @click.pass_context -def write_intake(ctx, fpath, match, filelist, dbname, version, alias): +def write_intake(ctx, fpath, filelist, dbname, version, alias): """Writes an intake-esm catalogue. It can get as input the directory containing the output in @@ -378,8 +361,6 @@ def write_intake(ctx, fpath, match, filelist, dbname, version, alias): Click context object fpath : str Path of directory containing output files to scan - match : str - Date or other string to match to individuate one file per type filelist : str Map or varlist csv file path, optional (default is None) dbname : str @@ -404,9 +385,10 @@ def write_intake(ctx, fpath, match, filelist, dbname, version, alias): mopdb_log.error(f""" {fpath} should be absolute or relative path to model output. To pass a varlist or map file use --filelist/-fl""") + raise MopException(f"{fpath} should be path to model output)") elif filelist is None: mopdb_log.debug(f"Calling write_varlist() from intake: {fpath}") - fname, vobjs, fobjs = write_varlist(conn, fpath, match, version, alias) + fname, vobjs, fobjs = write_varlist(conn, fpath, version, alias) map_file = False else: flist = Path(filelist) @@ -432,9 +414,8 @@ def write_intake(ctx, fpath, match, filelist, dbname, version, alias): @db_args @click.pass_context def update_map(ctx, dbname, fname, alias): - """Open database and create/update populating with rows - mapping file passed as input - alias indicates origin: if old style use 'app4' + """Create/update mapping table, mapping file passed as input + alias used to label origin of mappings, if APP4 use 'app4' Parameters ---------- @@ -446,7 +427,7 @@ def update_map(ctx, dbname, fname, alias): Name of csv input file with mapping records alias : str Indicates origin of records to add, if '' csv filename - base is used instead + base is used instead, 'app4' for old style Returns ------- @@ -456,7 +437,7 @@ def update_map(ctx, dbname, fname, alias): dbcentral = import_files('mopdata').joinpath('access.db') if dbname in [dbcentral, 'default']: mopdb_log.error("The package database cannot be updated") - sys.exit() + raise MopException("The package database cannot be updated") conn = db_connect(dbname, logname='mopdb_log') # create table if not existing table_sql = mapping_sql() @@ -481,7 +462,7 @@ def update_map(ctx, dbname, fname, alias): @mopdb.command(name='varlist') @map_args @click.pass_context -def model_vars(ctx, fpath, match, dbname, version, alias): +def model_vars(ctx, fpath, dbname, version, alias): """Read variables from model output opens one file for each kind, save variable list as csv file @@ -491,8 +472,6 @@ def model_vars(ctx, fpath, match, dbname, version, alias): Click context object fpath : str Path for model output files - match : str - Date or other string to match to individuate one file per type dbname : str Database relative path (default is data/access.db) version : str @@ -509,7 +488,7 @@ def model_vars(ctx, fpath, match, dbname, version, alias): dbname = import_files('mopdata').joinpath('access.db') conn = db_connect(dbname, logname='mopdb_log') #mopdb_log = logging.getLogger('mopdb_log') - fname, vobjs, fobjs = write_varlist(conn, fpath, match, version, alias) + fname, vobjs, fobjs = write_varlist(conn, fpath, version, alias) conn.close() return None @@ -546,7 +525,7 @@ def remove_record(ctx, dbname, table, pair): dbcentral = import_files('mopdata').joinpath('access.db') if dbname == dbcentral: mopdb_log.error("The package database cannot be updated") - sys.exit() + raise MopException("The package database cannot be updated") conn = db_connect(dbname) conn = db_connect(dbname, logname='mopdb_log') # set which columns to show based on table diff --git a/src/mopdb/mopdb_class.py b/src/mopdb/mopdb_class.py index a36a6a4..22361b2 100644 --- a/src/mopdb/mopdb_class.py +++ b/src/mopdb/mopdb_class.py @@ -16,7 +16,7 @@ # # contact: paola.petrelli@utas.edu.au # -# last updated 06/07/2024 +# last updated 03/10/2024 from pathlib import Path @@ -144,7 +144,8 @@ def get_match(self): else: cmor_var = self.name match = (cmor_var, self.name, '', self.frequency, - self.realm, self.version, '', self.positive, self.units) + self.realm, self.version, '', self.positive, + self.units, self.dimensions) return match @@ -172,6 +173,7 @@ def __init__(self, match: list, vobj: Variable): if self.units == '': self.units = match[8] self.dimensions = vobj.dimensions + self.axes = match[9] self.cell_methods = vobj.cell_methods self.positive = match[7] self.long_name = vobj.long_name diff --git a/src/mopdb/mopdb_map.py b/src/mopdb/mopdb_map.py index cd26112..658a87c 100644 --- a/src/mopdb/mopdb_map.py +++ b/src/mopdb/mopdb_map.py @@ -16,7 +16,7 @@ # # contact: paola.petrelli@utas.edu.au # -# last updated 10/04/2024 +# last updated 03/10/2024 # import logging @@ -35,7 +35,7 @@ from mopdb.mopdb_class import FPattern, Variable, MapVariable from mopdb.utils import query, read_yaml from mopdb.mopdb_utils import (get_cell_methods, remove_duplicate, - get_realm, check_realm_units, get_date_pattern) + get_realm, check_realm_units, get_date_pattern, identify_patterns) def get_cmorname(conn, vobj, version): @@ -96,10 +96,9 @@ def get_file_frq(ds, fnext, int2frq): """ mopdb_log = logging.getLogger('mopdb_log') mopdb_log.debug(f"in get_file_frq fnext: {fnext}") - frq = {} + frq = {'time': 'NAfrq'} # retrieve all time axes time_axs = [d for d in ds.dims if 'time' in d] - #time_axs_len = set(len(ds[d]) for d in time_axs) time_axs.sort(key=lambda x: len(ds[x]), reverse=True) mopdb_log.debug(f"in get_file_frq, time_axs: {time_axs}") if len(time_axs) > 0: @@ -119,21 +118,25 @@ def get_file_frq(ds, fnext, int2frq): time_axs = [d for d in ds.dims if 'time' in d] time_axs.sort(key=lambda x: len(ds[x]), reverse=True) if max_len > 0: + interval_file = None for t in time_axs: mopdb_log.debug(f"len of time axis {t}: {len(ds[t])}") if len(ds[t]) > 1: interval = (ds[t][1]-ds[t][0]).values interval_file = (ds[t][-1] -ds[t][0]).values - else: + elif interval_file is not None: interval = interval_file + else: + interval = None mopdb_log.debug(f"interval 2 timesteps for {t}: {interval}") - for k,v in int2frq.items(): - if math.isclose(interval, v, rel_tol=0.05): - frq[t] = k - break + if interval is not None: + for k,v in int2frq.items(): + if math.isclose(interval, v, rel_tol=0.05): + frq[t] = k + break return frq -def write_varlist(conn, indir, match, version, alias): +def write_varlist(conn, indir, version, alias): """Based on model output files create a variable list and save it to a csv file. Main attributes needed to map output are provided for each variable @@ -145,7 +148,7 @@ def write_varlist(conn, indir, match, version, alias): vobj_list = [] fobj_list = [] patterns = [] - files = FPattern.list_files(indir, match) + files = FPattern.list_files(indir, '.nc') mopdb_log.debug(f"Files after sorting: {files}") if alias == '': alias = 'mopdb' @@ -155,18 +158,12 @@ def write_varlist(conn, indir, match, version, alias): fwriter.writerow(["name", "cmor_var", "units", "dimensions", "frequency", "realm", "cell_methods", "cmor_table", "vtype", "size", "nsteps", "fpattern", "long_name", "standard_name"]) - for fpath in files: - # get filename pattern until date match - mopdb_log.debug(f"Filename: {fpath.name}") - fpattern = fpath.name.split(match)[0] - if fpattern in patterns: - continue - patterns.append(fpattern) - fobj = FPattern(fpattern, fpath.parent) - #pattern_list = list_files(indir, f"{fpattern}*") + patterns = identify_patterns(files) + #for fpath in files: + for fpattern in patterns: + fobj = FPattern(fpattern, indir) nfiles = len(fobj.files) mopdb_log.debug(f"File pattern, number of files: {fpattern}, {nfiles}") - #fwriter.writerow([f"#{fpattern}"]) # get attributes for the file variables ds = xr.open_dataset(str(fobj.files[0]), decode_times=False) time_units = ds['time'].units.split()[0] @@ -212,7 +209,8 @@ def write_varlist(conn, indir, match, version, alias): # try to retrieve cmip name vobj = get_cmorname(conn, vobj, version) vobj.units = attrs.get('units', "") - vobj.long_name = attrs.get('long_name', "") + long_name = attrs.get('long_name', "") + vobj.long_name = long_name.replace(';',',') vobj.standard_name = attrs.get('standard_name', "") vobj.dimensions = " ".join(v.dims) vobj.vtype = v.dtype @@ -254,7 +252,7 @@ def match_var(vobj, version, mode, conn, records): found_match = False # build sql query based on mode sql_base = f"""SELECT cmor_var,input_vars,calculation,frequency, - realm,model,cmor_table,positive,units FROM mapping where + realm,model,cmor_table,positive,units,axes FROM mapping where input_vars='{vobj.name}'""" sql_frq = f" and frequency='{vobj.frequency}'" sql_ver = f" and model='{version}'" @@ -341,7 +339,9 @@ def add_var(vlist, vobj, match, stdnm=False): # assign cmor_var from match and swap place with input_vars mopdb_log.debug(f"Assign cmor_var: {match}") mopdb_log.debug(f"initial variable definition: {vobj}") + print(match) var = MapVariable(match, vobj) + print(var.axes) if stdnm: var.input_vars = vobj.name if len(var.cmor_var) == 1: @@ -378,11 +378,13 @@ def potential_vars(conn, vobjs, stash_vars, version): pot_varnames = set() for v in vobjs: sql = f"""SELECT cmor_var,input_vars,calculation,frequency, - realm,model,cmor_table,positive,units FROM mapping - WHERE input_vars like '%{v.name}%'""" + realm,model,cmor_table,positive,units,axes + FROM mapping WHERE input_vars like '%{v.name}%'""" results = query(conn, sql, first=False, logname='mopdb_log') mopdb_log.debug(f"In potential: var {v.name}, db results {results}") for r in results: + if 'typebare' in r[2]: + print(r) allinput = r[1].split(" ") mopdb_log.debug(f"{len(allinput)> 1}") mopdb_log.debug(all(f"{x}-{v.frequency}" in stash_vars for x in allinput)) @@ -392,6 +394,9 @@ def potential_vars(conn, vobjs, stash_vars, version): if r[5] == version and r[3] == v.frequency: pot_full = add_var(pot_full, v, r) else: + if 'typebare' in r[2]: + print(r) + print(v) pot_part = add_var(pot_part, v, r) pot_varnames.add(r[0]) return pot_full, pot_part, pot_varnames @@ -404,19 +409,19 @@ def write_map_template(conn, parsed, alias): name, cmor_var, units, dimensions, frequency, realm, cell_methods, cmor_table, vtype, size, nsteps, fpattern, long_name, standard_name Mapping db order: - cmor_var, input_vars, calculation, units, dimensions, frequency, realm, - cell_methods, positive, cmor_table, model, notes, origin + cmor_var, input_vars, calculation, units, dimensions, axes, frequency, + realm, cell_methods, positive, cmor_table, model, notes, origin for pot vars + vtype, size, nsteps, fpattern Final template order: - cmor_var, input_vars, calculation, units, dimensions, frequency, realm, - cell_methods, positive, cmor_table, version, vtype, size, nsteps, fpattern, - long_name, standard_name + cmor_var, input_vars, calculation, units, dimensions, axes, frequency, + realm, cell_methods, positive, cmor_table, version, vtype, size, + nsteps, fpattern, long_name, standard_name """ mopdb_log = logging.getLogger('mopdb_log') full, no_ver, no_frq, stdn, no_match, pot_full, pot_part = parsed keys = ['cmor_var', 'input_vars', 'calculation', 'units', - 'dimensions', 'frequency', 'realm', 'cell_methods', + 'dimensions', 'axes', 'frequency', 'realm', 'cell_methods', 'positive', 'cmor_table', 'version', 'vtype', 'size', 'nsteps', 'fpattern', 'long_name', 'standard_name'] @@ -435,8 +440,8 @@ def write_map_template(conn, parsed, alias): div = ("# Variables with different frequency: Use with" + " caution!") write_vars(no_ver, fwriter, div, conn=conn) - div = ("# Variables matched using standard_name: Use " + - "with caution!") + div = ("# Variables matched using standard_name: complete " + + "mapping or discard!") write_vars(stdn, fwriter, div, sortby='input_vars') div = "# Derived variables: Use with caution!" write_vars(pot_part, fwriter, div, conn=conn) @@ -449,7 +454,6 @@ def write_map_template(conn, parsed, alias): def write_vars(vlist, fwriter, div, conn=None, sortby='cmor_var'): """ """ - #mopdb_log = logging.getLogger('mopdb_log') if len(vlist) > 0: if type(div) is str: @@ -460,6 +464,7 @@ def write_vars(vlist, fwriter, div, conn=None, sortby='cmor_var'): fwriter.writerow(divrow) dlist = [] for var in vlist: + #mopdb_log.debug(f"before check realm {var.__dict__}") if conn: var = check_realm_units(conn, var) dlist.append( var.__dict__ ) diff --git a/src/mopdb/mopdb_utils.py b/src/mopdb/mopdb_utils.py index b3f8bf4..763a550 100644 --- a/src/mopdb/mopdb_utils.py +++ b/src/mopdb/mopdb_utils.py @@ -16,7 +16,7 @@ # # contact: paola.petrelli@utas.edu.au # -# last updated 10/04/2024 +# last updated 08/10/2024 # import logging @@ -26,8 +26,9 @@ from datetime import date from collections import Counter +from pathlib import Path -from mopdb.utils import query +from mopdb.utils import query, MopException def mapping_sql(): @@ -44,6 +45,7 @@ def mapping_sql(): calculation TEXT, units TEXT, dimensions TEXT, + axes TEXT, frequency TEXT, realm TEXT, cell_methods TEXT, @@ -56,6 +58,7 @@ def mapping_sql(): ) WITHOUT ROWID;""") return sql + def cmorvar_sql(): """Returns sql definition of cmorvar table @@ -86,6 +89,7 @@ def cmorvar_sql(): ok_max_mean_abs TEXT);""") return sql + def map_update_sql(): """Returns sql needed to update mapping table @@ -96,13 +100,14 @@ def map_update_sql(): should add RETURNING cmor_var at the end """ cols = ['cmor_var', 'input_vars', 'calculation', 'units', - 'dimensions', 'frequency', 'realm', 'cell_methods', + 'dimensions', 'axes', 'frequency', 'realm', 'cell_methods', 'positive', 'cmor_table', 'model', 'notes', 'origin'] sql = f"""REPLACE INTO mapping ({', '.join(cols)}) VALUES ({','.join(['?']*len(cols))}) ON CONFLICT DO UPDATE SET {', '.join(x+' = excluded.'+x for x in cols)}""" return sql + def cmor_update_sql(): """Returns sql needed to update cmorvar table @@ -121,22 +126,6 @@ def cmor_update_sql(): {', '.join(x+' = excluded.'+x for x in cols)}""" return sql -def create_table(conn, sql): - """Creates table if database is empty - - Parameters - ---------- - conn : connection object - sql : str - SQL style string defining table to create - """ - mopdb_log = logging.getLogger('mopdb_log') - try: - c = conn.cursor() - c.execute(sql) - except Exception as e: - mopdb_log.error(e) - return def update_db(conn, table, rows_list): """Adds to table new variables definitions @@ -156,7 +145,8 @@ def update_db(conn, table, rows_list): elif table == 'mapping': sql = map_update_sql() else: - mopdb_log.error("Provide an insert sql statement for table: {table}") + mopdb_log.error("Provide insert sql statement for table: {table}") + raise MopException("No insert sql statement for table: {table}") if len(rows_list) > 0: mopdb_log.info('Updating db ...') with conn: @@ -168,6 +158,7 @@ def update_db(conn, table, rows_list): mopdb_log.info('--- Done ---') return + def cmor_table_header(name, realm, frequency): """ """ @@ -191,6 +182,7 @@ def cmor_table_header(name, realm, frequency): } return header + def write_cmor_table(var_list, name): """ """ @@ -229,6 +221,7 @@ def write_cmor_table(var_list, name): json.dump(out, f, indent=4) return + def get_cell_methods(attrs, dims): """Get cell_methods from variable attributes. If cell_methods is not defined assumes values are instantaneous @@ -249,6 +242,7 @@ def get_cell_methods(attrs, dims): val = val.replace(time_axs[0], 'time') return val, frqmod + def read_map_app4(fname): """Reads APP4 style mapping """ #mopdb_log = logging.getLogger('mopdb_log') @@ -278,11 +272,11 @@ def read_map(fname, alias): """Reads complete mapping csv file and extract info necessary to create new records for the mapping table in access.db Fields from file: - cmor_var, input_vars, calculation, units, dimensions, frequency, + cmor_var, input_vars, calculation, units, dimensions, axes, frequency, realm, cell_methods, positive, cmor_table, version, vtype, size, nsteps, fpattern, long_name, standard_name Fields in table: - cmor_var, input_vars, calculation, units, dimensions, frequency, + cmor_var, input_vars, calculation, units, dimensions, axes, frequency, realm, cell_methods, positive, model, notes, origin NB model and version are often the same but version should eventually be defined in a CV """ @@ -297,15 +291,17 @@ def read_map(fname, alias): else: mopdb_log.debug(f"In read_map: {row[0]}") mopdb_log.debug(f"In read_map row length: {len(row)}") - if row[16] != '': - notes = row[16] + if row[17] != '': + notes = row[17] else: - notes = row[15] + notes = row[16] if alias == '': alias = fname.replace(".csv","") - var_list.append(row[:11] + [notes, alias]) + alias = fname.split("/")[-1] + var_list.append(row[:12] + [notes, alias]) return var_list + def remove_duplicate(vlist, extra=[], strict=True): """Returns list without duplicate variable definitions. @@ -333,11 +329,11 @@ def remove_duplicate(vlist, extra=[], strict=True): vid_list.append(vid) return final + def check_realm_units(conn, var): """Checks that realm and units are consistent with values in cmor table. """ - mopdb_log = logging.getLogger('mopdb_log') vname = f"{var.cmor_var}-{var.cmor_table}" if var.cmor_table is None or var.cmor_table == "": @@ -362,6 +358,7 @@ def check_realm_units(conn, var): mopdb_log.warning(f"Variable {vname} not found in cmor table") return var + def get_realm(version, ds): '''Try to retrieve realm if using path failed''' realm = 'NArealm' @@ -373,6 +370,7 @@ def get_realm(version, ds): mopdb_log.debug(f"Realm is {realm}") return realm + def check_varlist(rows, fname): """Checks that varlist written to file has sensible information for frequency and realm to avoid incorrect mapping to be produced. @@ -385,10 +383,9 @@ def check_varlist(rows, fname): rows : list(dict) list of variables to match """ - mopdb_log = logging.getLogger('mopdb_log') frq_list = ['min', 'hr', 'day', 'mon', 'yr'] - realm_list = ['ice', 'ocean', 'atmos', 'land'] + realm_list = ['seaIce', 'ocean', 'atmos', 'land'] for row in rows: if row['name'][0] == "#" or row['name'] == 'name': continue @@ -396,9 +393,10 @@ def check_varlist(rows, fname): or row['realm'] not in realm_list): mopdb_log.error(f""" Check frequency and realm in {fname}. Some values might be invalid and need fixing""") - sys.exit() + raise MopException(f"Check frequency, realm in {fname}") return + def get_date_pattern(fname, fpattern): """Try to build a date range for each file pattern based on its filename @@ -410,3 +408,68 @@ def get_date_pattern(fname, fpattern): n = len(fpattern) date_pattern[:n] = [False] * n return date_pattern + + +def identify_patterns(files): + """Returns unique patterns of input files; + + Files list should be sorted so all different patterns are already + divided in groups. + Uses first two files in each group to work what is the common stem, + after individuating timestamp. + Numbers and "T" are excuded as they could be part of timestamp. + "7" and "8" are allowed (unlikely that timestamp starts with them + to keep into acocunt UM "p7" and "p8" files. + Once a pattern is individuated all the files that starts with it are skipped. + + Parameters + ---------- + files : list(Path) + List of input files as pathlib objects + + Returns + ------- + patterns : list(str) + List of individuated patterns + + """ + mopdb_log = logging.getLogger('mopdb_log') + last_pattern = "thisistostart" + patterns = [] + n = 0 + while n < len(files): + if files[n].name.startswith(last_pattern): + pass + # if this is the last file it means there's only one so just add the all file + elif n == (len(files) - 1): + patterns.append(files[n].name) + else: + mopdb_log.debug(f"identify_patterns: found new {files[n]}") + first = files[n].name.replace('.nc','') + fnext = files[n+1].name + # should be possible to eventually removing this + labels = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', + 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] + for l in labels: + first = first.replace(l,'') + fnext = fnext.replace(l,'') + i = len(first) + while i >= 1: + i-=1 + st = first[i] + # ignoring "-", "T" to account for yyyy-mm, yyyymmddThhmm + if (fnext.startswith(first[:i]) + and not (st.isdigit() or st in ['-', 'T'])): + # if p7/p8 shift index + if first[i:i+2] in ['p7', 'p8']: + i+=1 + break + # if pattern lenght is 1 it means that it only has 1 file + if i == 0: + last_pattern = files[n].name + else: + last_pattern = first[:i+1] + patterns.append(last_pattern) + mopdb_log.debug(f"identify_patterns: last identified {last_pattern}") + n+=1 + return patterns diff --git a/src/mopdb/utils.py b/src/mopdb/utils.py index c71dc71..d7a0b62 100644 --- a/src/mopdb/utils.py +++ b/src/mopdb/utils.py @@ -16,7 +16,7 @@ # # contact: paola.petrelli@utas.edu.au # -# last updated 12/07/2024 +# last updated 08/10/2024 # import sqlite3 @@ -28,6 +28,9 @@ from datetime import date +class MopException(Exception): + pass + def config_log(debug, logname): """Configures log file""" # start a logger @@ -87,6 +90,7 @@ def create_table(conn, sql, logname='__name__'): c.execute(sql) except Exception as e: log.error(e) + raise MopException(e) return def query(conn, sql, tup=(), first=True, logname='__name__'): @@ -183,7 +187,7 @@ def read_yaml(fname, logname='__name__'): data = yaml.safe_load(yfile) except Exception as e: log.error(f"Check that {fname} exists and it is a valid yaml file") - log.error(f"Exception: {e}") + raise MopException(e) return data def write_yaml(data, fname, logname='__name__'): @@ -204,6 +208,6 @@ def write_yaml(data, fname, logname='__name__'): with open(fname, 'w') as f: yaml.dump(data, f) except Exception as e: - log.error(f"Exception: {e}") log.error(f"Check {data} exists and is yaml object") + raise MopException(e) return diff --git a/src/mopper/calc_atmos.py b/src/mopper/calc_atmos.py new file mode 100644 index 0000000..92a4e73 --- /dev/null +++ b/src/mopper/calc_atmos.py @@ -0,0 +1,280 @@ +#!/usr/bin/env python +# Copyright 2023 ARC Centre of Excellence for Climate Extremes +# author: Paola Petrelli +# author: Sam Green +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This is the ACCESS Model Output Post Processor, derived from the APP4 +# originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah +# ( https://doi.org/10.5281/zenodo.7703469 ) +# +# last updated 08/10/2024 +# +# This file contains a collection of functions to calculate atmospheric +# derived variables from ACCESS model output. +# Initial functions' definitions were based on APP4 modified to work with Xarray. +# +# To propose new calculations and/or update to existing ones see documentation: +# +# and open a new issue on github. + + +import click +import xarray as xr +import os +import json +import numpy as np +import dask +import logging +from metpy.calc import height_to_geopotential +from importlib.resources import files as import_files + +from mopdb.utils import read_yaml, MopException +from mopper.calc_utils import rename_coord, get_plev + +# Global Variables +#---------------------------------------------------------------------- + +ice_density = 900 #kg/m3 +snow_density = 300 #kg/m3 + +rd = 287.1 +cp = 1003.5 +p_0 = 100000.0 +g_0 = 9.8067 # gravity constant +R_e = 6.378E+06 + + +@click.pass_context +def height_gpheight(ctx, hslv, pmod=None, levnum=None): + """Returns geopotential height based on model levels height from + sea level, using metpy.height_to_geopotential() function + + See: https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.height_to_geopotential.html + If pmod and levnum are passed returns geopotential height interpolated on pressure levels. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + hslv : xarray.DataArray + Height of model levels from sea level + pmod : Xarray DataArray + Air pressure on model levels dims(lev, lat, lon), default None + levnum : int + Number of the pressure levels to load. NB these need to be + defined in the '_coordinates.yaml' file as 'plev#'. Default None + + Returns + ------- + gpheight : xarray.DataArray + Geopotential height on model or pressure levels + + """ + + var_log = logging.getLogger(ctx.obj['var_log']) + geopot = height_to_geopotential(hslv) + gpheight_vals = geopot / g_0 + gpheight = xr.zeros_like(hslv) + gpheight[:] = gpheight_vals + if pmod is not None: + if levnum is None: + var_log.error("Pressure levels need to be defined using levnum") + raise MopException("Pressure levels need to be defined using levnum") + else: + # check time axis gpheighe is same or interpolate + gpheight, override = rename_coord(pmod, gpheight, 0) + var_log.debug(f"override: {override}") + if override is True: + gpheight = gpheight.reindex_like(pmod, method='nearest') + gpheight = plevinterp(gpheight, pmod, levnum) + + return gpheight + + +@click.pass_context +def plevinterp(ctx, var, pmod, levnum): + """Interpolating var from model levels to pressure levels + + Based on function from Dale Roberts (currently ANU) + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + var : Xarray DataArray + The variable to interpolate dims(time, lev, lat, lon) + pmod : Xarray DataArray + Air pressure on model levels dims(lev, lat, lon) + levnum : str + Inidcates the pressure levels to load. NB these need to be + defined in the '_coordinates.yaml' file as 'plev#' + + Returns + ------- + interp : Xarray DataArray + The variable interpolated on pressure levels + + """ + + var_log = logging.getLogger(ctx.obj['var_log']) + # avoid dask warning + dask.config.set(**{'array.slicing.split_large_chunks': True}) + plev = get_plev(levnum) + lev = var.dims[1] + # if pmod is pressure on rho_level_0 and variable is on rho_level + # change name and remove last level + pmodlev = pmod.dims[1] + if pmodlev == lev + '_0': + pmod = pmod.isel({pmodlev:slice(0,-1)}) + pmod = pmod.rename({pmodlev: lev}) + # we can assume lon_0/lat_0 are same as lon/lat for this purpose + # if pressure and variable have different coordinates change name + pmod, override = rename_coord(var, pmod, 2) + pmod, override = rename_coord(var, pmod, 3, override=override) + var_log.debug(f"override: {override}") + if override is True: + pmod = pmod.reindex_like(var, method='nearest') + var_log.debug(f"pmod and var coordinates: {pmod.dims}, {var.dims}") + var = var.chunk({lev: -1}) + pmod = pmod.chunk({lev: -1}) + # temporarily making pressure values negative so they are in ascending + # order as required by numpy.interp final result it's same and + # we re-assign original plev to interp anyway + interp = xr.apply_ufunc( + np.interp, + -1 * plev, + -1 * pmod, + var, + kwargs = {'left': np.nan, 'right': np.nan}, + input_core_dims=[ ["plev"], [lev], [lev]], + output_core_dims=[ ["plev"] ], + exclude_dims=set((lev,)), + vectorize=True, + dask="parallelized", + output_dtypes=['float32'], + keep_attrs=True + ) + interp['plev'] = plev + interp['plev'] = interp['plev'].assign_attrs({'units': "Pa", + 'axis': "Z", 'standard_name': "air_pressure", + 'positive': ""}) + dims = list(var.dims) + dims[1] = 'plev' + interp = interp.transpose(*dims) + return interp + + +# Aerosol Calculations +#---------------------------------------------------------------------- + +def optical_depth(var, lwave): + """ + Calculates the optical depth. + First selects all variables at selected wavelength then sums them. + + Parameters + ---------- + var: DataArray + variable from Xarray dataset + lwave: int + level corresponding to desidered wavelength + + Returns + ------- + vout: DataArray + Optical depth + + """ + pseudo_level = var[0].dims[1] + var_list = [v.sel(pseudo_level=lwave) for v in var] + vout = sum_vars(var_list) + vout = vout.rename({pseudo_level: 'pseudo_level'}) + return vout + + +@click.pass_context +def calc_depositions(ctx, var, weight=None): + """Returns aerosol depositions + + At the moment is assuming sea salt will need more work to be + adapted for other depositions. + Original variables are mol s-1 output is kg m-2 s-1, so we + multiply by molecular weight. + Sea salt is assumed to be NaCl: 0.05844 kg.mol-1 + NB we are using only surface level as: "Dry deposition occurs + when aerosol bumps into something at surface level, so it doesn't + make sense for there to be data in the levels above" + (personal communication from M. Woodhouse) + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + var : list(xarray.DataArray) + List of input variables to sum + weight: float + Weight of 1 mole, default is None and it uses NaCl weight (to be updated) + + Returns + ------- + varout : xarray.DataArray + Areosol depositions + + """ + + #var_log = logging.getLogger(ctx.obj['var_log']) + varlist = [] + for v in var: + v0 = v.sel(model_theta_level_number=1).squeeze(dim='model_theta_level_number') + varlist.append(v0) + if weight is None: + weight = 0.05844 + deps = sum_vars(varlist) * weight + return deps + + +# Utilities +#---------------------------------------------------------------------- + +@click.pass_context +def level_to_height(ctx, var, levs=None): + """Returns model level variable with level height instead of + number as dimension + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + var : Xarray DataArray + Variable defined on model levels number + levs : tuple(str,str) + slice of levels to apply (optional, default is None) + + Returns + ------- + vout : Xarray DataArray + Same variable defined on model levels height + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + if levs is not None and type(levs) not in [tuple, list]: + var_log.error(f"level_to_height function: levs {levs} should be a tuple or list") + raise MopException(f"level_to_height function: levs {levs} should be a tuple or list") + zdim = var.dims[1] + zdim_height = zdim.replace('number', 'height').replace('model_','') + var = var.swap_dims({zdim: zdim_height}) + if levs is not None: + var = var.isel({zdim_height: slice(int(levs[0]), int(levs[1]))}) + return var diff --git a/src/mopper/calc_land.py b/src/mopper/calc_land.py new file mode 100644 index 0000000..d16cfaa --- /dev/null +++ b/src/mopper/calc_land.py @@ -0,0 +1,302 @@ +#!/usr/bin/env python +# Copyright 2024 ARC Centre of Excellence for Climate Extremes +# author: Paola Petrelli +# author: Sam Green +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This is the ACCESS Model Output Post Processor, derived from the APP4 +# originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah +# ( https://doi.org/10.5281/zenodo.7703469 ) +# +# last updated 10/10/2024 +# +# This file contains a collection of functions to calculate land derived variables +# from ACCESS model output. +# Initial functions' definitions were based on APP4 modified to work with Xarray. +# +# To propose new calculations and/or update to existing ones see documentation: +# +# and open a new issue on github. + +import click +import xarray as xr +import os +import json +import numpy as np +import dask +import logging +from importlib.resources import files as import_files + +from mopdb.utils import read_yaml, MopException +from mopper.calc_utils import get_ancil_var + +# Global Variables +#---------------------------------------------------------------------- + +ice_density = 900 #kg/m3 +snow_density = 300 #kg/m3 + +rd = 287.1 +cp = 1003.5 +p_0 = 100000.0 +g_0 = 9.8067 # gravity constant +R_e = 6.378E+06 +#---------------------------------------------------------------------- + + +@click.pass_context +def extract_tilefrac(ctx, tilefrac, tilenum, landfrac=None, lev=None): + """Calculates the land fraction of a specific type: crops, grass, + etc. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + tilefrac : Xarray DataArray + variable + tilenum : Int or [Int] + the number indicating the tile + landfrac : Xarray DataArray + Land fraction variable if None (default) is read from ancil file + lev: str + name of pseudo level to add to output array (default is None) + + Returns + ------- + vout : Xarray DataArray + land fraction of object + + Raises + ------ + Exception + tile number must be an integer or list + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + pseudo_level = tilefrac.dims[1] + tilefrac = tilefrac.rename({pseudo_level: 'pseudo_level'}) + vout = tilefrac.sel(pseudo_level=tilenum) + if isinstance(tilenum, int): + vout = tilefrac.sel(pseudo_level=tilenum) + elif isinstance(tilenum, list): + vout = tilefrac.sel(pseudo_level=tilenum).sum(dim='pseudo_level') + else: + raise Exception('E: tile number must be an integer or list') + if landfrac is None: + landfrac = get_ancil_var('land_frac', 'fld_s03i395') + vout = vout * landfrac + if lev: + fname = import_files('mopdata').joinpath('landtype.yaml') + data = read_yaml(fname) + type_dict = data['mod_mapping'] + var_log.debug(f"extract_tile with lev {lev}, type_dict: {type_dict}") + vout = vout.expand_dims(dim={lev: [type_dict[lev]]}) + return vout.fillna(0) + + +@click.pass_context +def landuse_frac(ctx, var, landfrac=None, nwd=0, tiles='cmip6'): + """Defines new tile fractions variables where + original model tiles are re-organised in 4 super-categories + + 0 - psl Primary and secondary land (includes forest, grasslands, + and bare ground) (1,2,3,4,5,6,7,11,14) or (6,7,11,14?) if nwd is true. + Possibly excluding barren soil is an error? + 1 - pst Pastureland (includes managed pastureland and rangeland) (2) or (7) if nwd + 2 - crp Cropland (9) or (7) if nwd + 3 - Urban settlement (15) or (14) if nwd is true?? + + Tiles in CABLE: + 1. Evergreen Needleleaf + 2. Evergreen Broadleaf + 3. Deciduous Needleleaf + 4. Deciduous Broadleaf + 5. Shrub + 6. C3 Grassland + 7. C4 Grassland + 8. Tundra + 9. C3 Cropland + 10. C4 Cropland + 11. Wetland + 12. empty + 13. empty + 14. Barren + 15. Urban + 16. Lakes + 17. Ice + + NB this is currently hardcoded for above definitions, but potentially + output could depend on different categories and land model used. + + Parameters + ---------- + var : Xarray DataArray + Tile variable + landfrac : Xarray DataArray + Land fraction variable if None (default) is read from ancil file + nwd : int + Indicates if only non-woody categories (1) or all (0 - default) + should be used + tiles : str + Tiles definition to use for landUse dimension, default is cmip + + Returns + ------- + vout : Xarray DataArray + Input tile variable redifined over 4 super-categories + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + pseudo_level = var.dims[1] + #nwd (non-woody vegetation only) - tiles 6,7,9,11 only + vout = xr.zeros_like(var[:, :4, :, :]) + vout = vout.rename({pseudo_level: 'landUse'}) + fname = import_files('mopdata').joinpath('land_tiles.yaml') + data = read_yaml(fname) + var_log.debug(f"model land tiles: {data}") + vout['landUse'] = data['cmip6'] + vout['landUse'].attrs['units'] = "" + var_log.debug(f"landUse: {vout['landUse']}, {vout['landUse'].attrs}") + # Define the tile indices for primary .. based on 'nwd' value + if nwd == 0: + tile_indices = [1, 2, 3, 4, 5, 6, 7, 11, 14] + elif nwd == 1: + tile_indices = [6, 7, 11, 14] # + for t in tile_indices: + vout.loc[dict(landUse='primary_and_secondary_land')] += var.sel({pseudo_level: t}) + # Pastureland not included in CABLE + # Crop tile 9 + vout.loc[dict(landUse='crops')] = var.sel({pseudo_level: 9}) + # Urban tile updated based on 'nwd' in app4 not sure why + #if nwd == 0: + vout.loc[dict(landUse='urban')] = var.sel({pseudo_level: 15}) + if landfrac is None: + landfrac = get_ancil_var('land_frac', 'fld_s03i395') + vout = vout * landfrac + # if nwdFracLut we want typenwd as an extra dimension as axis=0 + if nwd == 1: + vout = vout.expand_dims(typenwd=['herbaceous_vegetation']) + return vout + + +def average_tile(var, tilefrac=None, lfrac=1, landfrac=None, lev=None): + """Returns variable averaged over grid-cell, counting only + specific tile/s and land fraction when suitable. + + For example: nLitter is nitrogen mass in litter and should be + calculated only over land fraction and each tile type will have + different amounts of litter. + average = sum_over_tiles(N amount on tile * tilefrac) * landfrac + + Parameters + ---------- + var : Xarray DataArray + Variable to process defined opver tiles + tilefrac : Xarray DataArray, optional + Variable defining tiles' fractions (default is None) + if None, read from ancil file + lfrac : int, optional + Controls if landfrac is considered (1) or not (0) (deafault 1) + landfrac : Xarray DataArray + Variable defining land fraction (default is None) + If None, read from ancil file + lev: str + Name of pseudo level to add to output array (default is None) + + Returns + ------- + vout : Xarray DataArray + averaged input variable + + """ + pseudo_level = var.dims[1] + if tilefrac is None: + tilefrac = get_ancil_var('land_tile', 'fld_s03i317') + vout = var * tilefrac + vout = vout.sum(dim=pseudo_level) + if lfrac == 1: + if landfrac is None: + landfrac = get_ancil_var('land_frac', 'fld_s03i395') + vout = vout * landfrac + if lev: + fname = import_files('mopdata').joinpath('landtype.yaml') + data = read_yaml(fname) + type_dict = data['mod_mapping'] + vout = vout.expand_dims(dim={lev: type_dict[lev]}) + return vout + + +@click.pass_context +def calc_topsoil(ctx, soilvar): + """Returns the variable over the first 10cm of soil. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + soilvar : Xarray DataArray + Soil moisture over soil levels + + Returns + ------- + topsoil : Xarray DataArray + Variable defined on top 10cm of soil + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + depth = soilvar.depth + # find index of bottom depth level including the first 10cm of soil + maxlev = np.nanargmin(depth.where(depth >= 0.1).values) + var_log.debug(f"Max level of soil used is {maxlev}") + # calculate the fraction of maxlev which falls in first 10cm + fraction = (0.1 - depth[maxlev -1])/(depth[maxlev] - depth[maxlev-1]) + topsoil = soilvar.isel(depth=slice(0,maxlev)).sum(dim='depth') + topsoil = topsoil + fraction*soilvar.isel(depth=maxlev) + return topsoil + + +@click.pass_context +def calc_landcover(ctx, var, model): + """Returns land cover fraction variable + + Parameters + ---------- + ctx : click context obj + Dictionary including 'cmor' settings and attributes for experiment + var : list(xarray.DataArray) + List of input variables to sum + model: str + Name of land surface model to retrieve land tiles definitions + + Returns + ------- + vout : xarray.DataArray + Land cover faction variable + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + fname = import_files('mopdata').joinpath('land_tiles.yaml') + data = read_yaml(fname) + vegtype = data[model] + var_log.debug(f"vegtype used from {model}: {vegtype}") + pseudo_level = var[0].dims[1] + vout = (var[0]*var[1]).fillna(0) + vout = vout.rename({pseudo_level: 'vegtype'}) + vout['vegtype'] = vegtype + vout['vegtype'].attrs['units'] = "" + return vout + +# Utilities +#---------------------------------------------------------------------- diff --git a/src/mopper/calc_ocean.py b/src/mopper/calc_ocean.py new file mode 100644 index 0000000..515ab87 --- /dev/null +++ b/src/mopper/calc_ocean.py @@ -0,0 +1,314 @@ +#!/usr/bin/env python +# Copyright 2023 ARC Centre of Excellence for Climate Extremes +# author: Paola Petrelli +# author: Sam Green +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This is the ACCESS Model Output Post Processor, derived from the APP4 +# originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah +# ( https://doi.org/10.5281/zenodo.7703469 ) +# +# last updated 10/10/2024 +# +# This file contains a collection of functions to calculate ocean derived variables +# from ACCESS model output. +# Initial functions' definitions were based on APP4 modified to work with Xarray. +# +# To propose new calculations and/or update to existing ones see documentation: +# +# and open a new issue on github. + + +import click +import xarray as xr +import os +import json +import numpy as np +import dask +import logging +from importlib.resources import files as import_files + +from mopdb.utils import read_yaml, MopException +#from mopper.calc_utils import + +# Global Variables +#---------------------------------------------------------------------- + +ice_density = 900 #kg/m3 +snow_density = 300 #kg/m3 + +rd = 287.1 +cp = 1003.5 +p_0 = 100000.0 +g_0 = 9.8067 # gravity constant +R_e = 6.378E+06 +#---------------------------------------------------------------------- + + +@click.pass_context +def overturn_stream(ctx, varlist, sv=False): + """Returns ocean overturning mass streamfunction. + + Calculation is: + sum over the longitudes and cumulative sum over depth for ty_trans var + then sum these terms to get final values + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + varlist: list( DataArray ) + List of ocean overturning mass streamfunction variables (ty_trans vars) + From 1-3 if gm and/or submeso are present + sv: bool + If True units are sverdrup and they are converted to kg/s + (default is False) + + Returns + ------- + stream: DataArray + The ocean overturning mass streamfunction in kg s-1 + + :meta private: + """ + var_log = logging.getLogger(ctx.obj['var_log']) + londim = varlist[0].dims[3] + depdim = varlist[0].dims[1] + var_log.debug(f"Streamfunct lon, dep dims: {londim}, {depdim}") + # work out which variables are in list + var = {'ty': None, 'gm': None, 'subm': None} + for v in varlist: + if '_gm' in v.name: + var['gm'] = v + elif '_submeso' in v.name: + var['subm'] = v + else: + var['ty'] = v + # calculation + ty_lon = var['ty'].sum(londim) + stream = ty_lon.cumsum(depdim) + if var['gm'] is not None: + stream += var['gm'].sum(londim) + if var['subm'] is not None: + stream += var['subm'].sum(londim) + stream = stream - ty_lon.sum(depdim) + if sv is True: + stream = stream * 10**9 + return stream + + +def ocean_floor(var): + """Not sure.. + + Parameters + ---------- + var : Xarray dataset + pot_temp variable + + Returns + ------- + vout : Xarray dataset + ocean floor temperature? + + :meta private: + """ + lv = (~var.isnull()).sum(dim='st_ocean') - 1 + vout = var.take(lv, dim='st_ocean').squeeze() + return vout + + +def calc_global_ave_ocean(var, rho_dzt, area_t): + """Calculate global ocean mass transport. + + Parameters + ---------- + var : Xarray dataset + ocean variable + rho_dzt : Xarray dataset + density transport + area_t : Xarray dataset + area transport + + Returns + ------- + vnew : Xarray dataset + global ocean mass transport + + :meta private: + """ + mass = rho_dzt * area_t + #PP would be better to get the correct dimension from variable and use them + # rather than try and except + + try: + vnew = var.weighted(mass).mean(dim=('st_ocean', 'yt_ocean', 'xt_ocean'), skipna=True) + except Exception as e: + vnew = var.weighted(mass[:, 0, :, :]).mean(dim=('x', 'y'), skipna=True) + + return vnew + + +@click.pass_context +def calc_global_ave_ocean(ctx, var, rho_dzt): + """Returns global average ocean temperature + + NB needs checking + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + var : xarray.DataArray + Input variable + rho_dzt: Xarray DataArray + sea_water_mass_per_unit_area dimensions: (time, depth, lat, lon) + + Returns + ------- + vnew : xarray.DataArray + output + + :meta private: + """ + fname = f"{ctx.obj['ancils_path']}/{ctx.obj['grid_ocean']}" + ds = xr.open_dataset(fname) + area_t = ds['area_t'].reindex_like(rho_dzt, method='nearest') + mass = rho_dzt * area_t + try: + vnew = np.average(var, axis=(1,2,3), weights=mass) + except Exception as e: + vnew = np.average(var, axis=(1,2), weights=mass[:,0,:,:]) + + return vnew + + +@click.pass_context +def calc_overt(ctx, varlist, sv=False): + """Returns overturning mass streamfunction variable + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + varlist: list( DataArray ) + List of ocean transport variables (ty_trans vars) + From 1-3 if gm and/or submeso are present + sv: bool + If True units are sverdrup and they are converted to kg/s + (default is False) + varlist: list( DataArray ) + transport components to use to calculate streamfunction + + Returns + ------- + overt: DataArray + overturning mass streamfunction (time, basin, depth, gridlat) variable + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + var1 = varlist[0] + vlat, vlon = var1.dims[2:] + mask = get_basin_mask(vlat, vlon) + mlat = mask.dims[0] + mlon = mask.dims[1] + if [mlat, mlon] != [vlat, vlon]: + + # if mask uses different lat/lon interp mask to var dimesnions + #mask = mask.sel(mlat=vlat, mlon=vlon, method="nearest") + mask = mask.sel(**{mlat:var1[vlat], mlon:var1[vlon]}, method="nearest") + var_log.debug(f"Basin mask: {mask}") + # first calculate for global ocean + glb = overturn_stream(varlist) + # atlantic and arctic basin have mask values 2 and 4 #TODO double check this + var_masked = [ v.where(mask.isin([2, 4]), 0) for v in varlist] + atl = overturn_stream(var_masked) + #Indian and Pacific basin are given by mask values 3 and 5 #TODO double check this + var_masked = [ v.where(mask.isin([3, 5]), 0) for v in varlist] + ind = overturn_stream(var_masked) + # now add basin dimension to resulting array + glb = glb.expand_dims(dim={'basin': ['global_ocean']}, axis=1) + atl = atl.expand_dims(dim={'basin': ['atlantic_arctic_ocean']}, axis=1) + ind = ind.expand_dims(dim={'basin': ['indian_pacific_ocean']}, axis=1) + overt = xr.concat([atl, ind, glb], dim='basin', coords='minimal') + if ctx.obj['variable_id'][:5] == 'msfty': + overt = overt.rename({vlat: 'gridlat'}) + overt['basin'].attrs['units'] = "" + return overt + + +@click.pass_context +def get_areacello(ctx, area_t=None): + """Returns areacello + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + area_t: DataArray + area of t-cells (default None then is read from ancil file) + + Returns + ------- + areacello: DataArray + areacello variable + + """ + fname = f"{ctx.obj['ancils_path']}/{ctx.obj['grid_ocean']}" + ds = xr.open_dataset(fname) + if area_t is None: + area_t = ds.area_t + areacello = xr.where(ds.ht.isnull(), 0, ds.area_t) + return areacello + + +@click.pass_context +def get_basin_mask(ctx, lat, lon): + """Returns first level of basin mask from lsmask ancil file. + + Lat, lon are used to work out which mask to use tt, uu, ut, tu + where t/u refer to t/c cell, for x/y axis + For example ut stands for c-cell lon and t-cell lat + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + lat: str + latitude coordinate name + lon: str + longitude coordinate name + + Returns + ------- + basin_mask: DataArray + basin_mask(lat,lon) + + :meta private: + """ + var_log = logging.getLogger(ctx.obj['var_log']) + coords = ['t', 't'] + if 'xu' in lon: + coords[0] = 'u' + elif 'yu' in lat: + coords[1] = 'u' + fname = f"{ctx.obj['ancils_path']}/{ctx.obj['mask_ocean']}" + if os.path.isfile(fname): + ds = xr.open_dataset(fname) + else: + var_log.error(f"Ocean mask file {fname} doesn't exists") + raise MopException(f"Ocean mask file {fname} doesn't exists") + # based on coords select mask + mask = f"mask_{''.join(coords)}cell" + basin_mask = ds[mask].isel(st_ocean=0).fillna(0) + return basin_mask diff --git a/src/mopper/calc_seaice.py b/src/mopper/calc_seaice.py new file mode 100644 index 0000000..fc20567 --- /dev/null +++ b/src/mopper/calc_seaice.py @@ -0,0 +1,612 @@ +#!/usr/bin/env python +# Copyright 2024 ARC Centre of Excellence for Climate Extremes +# author: Paola Petrelli +# author: Sam Green +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This is the ACCESS Model Output Post Processor, derived from the APP4 +# originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah +# ( https://doi.org/10.5281/zenodo.7703469 ) +# +# last updated 10/10/2024 +# +# This file contains a collection of functions to calculate seaice derived variables +# from ACCESS model output. +# Initial functions' definitions were based on APP4 modified to work with Xarray. +# +# To propose new calculations and/or update to existing ones see documentation: +# +# and open a new issue on github. + + +import click +import xarray as xr +import os +import json +import numpy as np +import dask +import logging +from metpy.calc import height_to_geopotential +from importlib.resources import files as import_files + +from mopdb.utils import read_yaml, MopException + +# Global Variables +#---------------------------------------------------------------------- + +ice_density = 900 #kg/m3 +snow_density = 300 #kg/m3 + +rd = 287.1 +cp = 1003.5 +p_0 = 100000.0 +g_0 = 9.8067 # gravity constant +R_e = 6.378E+06 +#---------------------------------------------------------------------- + + +class IceTransportCalculations(): + """ + Functions to calculate mass transports. + + Parameters + ---------- + + Returns + ------- + transports : Xarray DataArray + mass transport array + + :meta private: + """ + + @click.pass_context + def __init__(self, ctx): + fname = import_files('mopdata').joinpath('transport_lines.yaml') + self.yaml_data = read_yaml(fname)['lines'] + + self.gridfile = xr.open_dataset(f"{ctx.obj['ancils_path']}/"+ + f"{ctx.obj['grid_ice']}") + self.lines = self.yaml_data['sea_lines'] + self.ice_lines = self.yaml_data['ice_lines'] + + def __del__(self): + self.gridfile.close() + + def get_grid_cell_length(self, xy): + """ + Select the hun or hue variable from the opened gridfile depending on whether + x or y are passed in. + + + Parameters + ---------- + xy : string + axis name + + Returns + ------- + L : Xarray dataset + hun or hue variable + + :meta private: + """ + if xy == 'y': + L = self.gridfile.hun / 100 #grid cell length in m (from cm) + elif xy == 'x': + L = self.gridfile.hue / 100 #grid cell length in m (from cm) + else: + raise Exception("""Need to supply value either 'x' or 'y' + for ice Transports""") + + return L + + + def transAcrossLine(self, var, i_start, i_end, j_start, j_end): + """Calculates the mass trasport across a line either + i_start=i_end and the line goes from j_start to j_end or + j_start=j_end and the line goes from i_start to i_end. + var is either the x or y mass transport depending on the line. + + + Parameters + ---------- + var : DataArray + variable extracted from Xarray dataset + i_start: int + xt_ocean axis position + i_end: int + xt_ocean axis position + j_start: int + yu_ocean axis position + j_end: int + yu_ocean axis position + + + Returns + ------- + transports : DataArray + + :meta private: + """ + #PP is it possible to generalise this? as I'm sure I have to do the same in main + # code to work out correct coordinates + if 'yt_ocean' in var: + y_ocean = 'yt_ocean' + x_ocean = 'xu_ocean' + else: + y_ocean = 'yu_ocean' + x_ocean = 'xt_ocean' + + # could we try to make this a sel lat lon values? + if i_start==i_end or j_start==j_end: + try: + #sum each axis apart from time (3d) + #trans = var.isel(yu_ocean=slice(271, 271+1), xt_ocean=slice(292, 300+1)) + trans = var[..., j_start:j_end+1, i_start:i_end+1].sum(dim=['st_ocean', f'{y_ocean}', f'{x_ocean}']) #4D + except Exception as e: + trans = var[..., j_start:j_end+1, i_start:i_end+1].sum(dim=[f'{y_ocean}', f'{x_ocean}']) #3D + + return trans + else: + raise Exception("""ERROR: Transport across a line needs to + be calculated for a single value of i or j""") + + + def lineTransports(self, tx_trans, ty_trans): + """ + Calculates the mass transports across the ocn straits. + + + Parameters + ---------- + tx_trans : DataArray + variable extracted from Xarray dataset + ty_trans: DataArray + variable extracted from Xarray dataset + + + Returns + ------- + trans : Datarray + + :meta private: + """ + #PP these are all hardcoded need to change this to be dependent on grid!!! + #initialise array + transports = np.zeros([len(tx_trans.time),len(self.lines)]) + + #0 barents opening + transports[:,0] = self.transAcrossLine(ty_trans,292,300,271,271) + transports[:,0] += self.transAcrossLine(tx_trans,300,300,260,271) + + #1 bering strait + transports[:,1] = self.transAcrossLine(ty_trans,110,111,246,246) + + #2 canadian archipelago + transports[:,2] = self.transAcrossLine(ty_trans,206,212,285,285) + transports[:,2] += self.transAcrossLine(tx_trans,235,235,287,288) + + #3 denmark strait + transports[:,3] = self.transAcrossLine(tx_trans,249,249,248,251) + transports[:,3] += self.transAcrossLine(ty_trans,250,255,247,247) + + #4 drake passage + transports[:,4] = self.transAcrossLine(tx_trans,212,212,32,49) + + #5 english channel + # Is unresolved by the access model + + #6 pacific equatorial undercurrent + #specified down to 350m not the whole depth + tx_trans_ma = tx_trans.where(tx_trans[:, 0:25, :] >= 0) + transports[:,6] = self.transAcrossLine(tx_trans_ma,124,124,128,145) + + #7 faroe scotland channel + transports[:,7] = self.transAcrossLine(ty_trans,273,274,238,238) + transports[:,7] += self.transAcrossLine(tx_trans,274,274,232,238) + + #8 florida bahamas strait + transports[:,8] = self.transAcrossLine(ty_trans,200,205,192,192) + + #9 fram strait + transports[:,9] = self.transAcrossLine(tx_trans,267,267,279,279) + transports[:,9] += self.transAcrossLine(ty_trans,268,284,278,278) + + #10 iceland faroe channel + transports[:,10] = self.transAcrossLine(ty_trans,266,268,243,243) + transports[:,10] += self.transAcrossLine(tx_trans,268,268,240,243) + transports[:,10] += self.transAcrossLine(ty_trans,269,272,239,239) + transports[:,10] += self.transAcrossLine(tx_trans,272,272,239,239) + + #11 indonesian throughflow + transports[:,11] = self.transAcrossLine(tx_trans,31,31,117,127) + transports[:,11] += self.transAcrossLine(ty_trans,35,36,110,110) + transports[:,11] += self.transAcrossLine(ty_trans,43,44,110,110) + transports[:,11] += self.transAcrossLine(tx_trans,46,46,111,112) + transports[:,11] += self.transAcrossLine(ty_trans,47,57,113,113) + + #12 mozambique channel + transports[:,12] = self.transAcrossLine(ty_trans,320,323,91,91) + + #13 taiwan luzon straits + transports[:,13] = self.transAcrossLine(ty_trans,38,39,190,190) + transports[:,13] += self.transAcrossLine(tx_trans,40,40,184,188) + + #14 windward passage + transports[:,14] = self.transAcrossLine(ty_trans,205,206,185,185) + + return transports + + + def iceTransport(self, ice_thickness, vel, xy): + """ + Calculate ice mass transport. + + + Parameters + ---------- + ice_thickness : DataArray + variable extracted from Xarray dataset + vel: DataArray + variable extracted from Xarray dataset + xy: str + variable extracted from Xarray dataset + + + Returns + ------- + ice_mass : DataArray + + + :meta private: + """ + L = self.gridfile(xy) + ice_mass = ice_density * ice_thickness * vel * L + + return ice_mass + + + def snowTransport(self, snow_thickness, vel, xy): + """ + Calculate snow mass transport. + + + Parameters + ---------- + snow_thickness : DataArray + variable extracted from Xarray dataset + vel: DataArray + variable extracted from Xarray dataset + xy: str + variable extracted from Xarray dataset + + + Returns + ------- + snow_mass : DataArray + + :meta private: + """ + L = self.gridfile(xy) + snow_mass = snow_density * snow_thickness * vel * L + + return snow_mass + + + def iceareaTransport(self, ice_fraction, vel, xy): + """ + Calculate ice area transport. + + + Parameters + ---------- + ice_fraction : DataArray + variable extracted from Xarray dataset + vel: DataArray + variable extracted from Xarray dataset + xy: str + variable extracted from Xarray dataset + + + Returns + ------- + ice_area : DataArray + + :meta private: + """ + L = self.gridfile(xy) + ice_area = ice_fraction * vel * L + + return ice_area + + + def fill_transports(self, tx_trans, ty_trans): + """ + Calculates the mass transports across the ice straits. + + + Parameters + ---------- + tx_trans : DataArray + variable extracted from Xarray dataset + ty_trans: DataArray + variable extracted from Xarray dataset + + + Returns + ------- + transports : DataArray + + :meta private: + """ + transports = np.zeros([len(tx_trans.time),len(self.lines)]) + + #PP these are all hardcoded need to change this to be dependent on grid!!! + #0 fram strait + transports[:,0] = self.transAcrossLine(tx_trans,267,267,279,279) + transports[:,0] += self.transAcrossLine(ty_trans,268,284,278,278) + + #1 canadian archipelago + transports[:,1] = self.transAcrossLine(ty_trans,206,212,285,285) + transports[:,1] += self.transAcrossLine(tx_trans,235,235,287,288) + + #2 barents opening + transports[:,2] = self.transAcrossLine(ty_trans,292,300,271,271) + transports[:,2] += self.transAcrossLine(tx_trans,300,300,260,271) + + #3 bering strait + transports[:,3] = self.transAcrossLine(ty_trans,110,111,246,246) + + return transports + + + def icelineTransports(self, ice_thickness, velx, vely): + """ + Calculates the ice mass transport across the straits + + + Parameters + ---------- + ice_thickness : DataArray + variable extracted from Xarray dataset + velx : DataArray + variable extracted from Xarray dataset + vely: DataArray + variable extracted from Xarray dataset + + + Returns + ------- + transports : DataArray + + :meta private: + """ + + tx_trans = self.iceTransport(ice_thickness,velx,'x').fillna(0) + ty_trans = self.iceTransport(ice_thickness,vely,'y').fillna(0) + transports = self.fill_transports(tx_trans, ty_trans) + + return transports + + + def snowlineTransports(self, snow_thickness, velx, vely): + """ + Calculates the Snow mass transport across the straits + + + Parameters + ---------- + snow_thickness : DataArray + variable extracted from Xarray dataset + velx : DataArray + variable extracted from Xarray dataset + vely: DataArray + variable extracted from Xarray dataset + + + Returns + ------- + transports : DataArray + + :meta private: + """ + tx_trans = self.snowTransport(snow_thickness,velx,'x').fillna(0) + ty_trans = self.snowTransport(snow_thickness,vely,'y').fillna(0) + transports = self.fill_transports(tx_trans, ty_trans) + + return transports + + + def icearealineTransports(self, ice_fraction, velx, vely): + """ + Calculates the ice are transport across the straits + + + Parameters + ---------- + ice_fraction : DataArray + variable extracted from Xarray dataset + velx : DataArray + variable extracted from Xarray dataset + vely: DataArray + variable extracted from Xarray dataset + + + Returns + ------- + transports : DataArray + + :meta private: + """ + tx_trans = self.iceareaTransport(ice_fraction,velx,'x').fillna(0) + ty_trans = self.iceareaTransport(ice_fraction,vely,'y').fillna(0) + transports = self.fill_transports(tx_trans, ty_trans) + + return transports + + + def msftbarot(self, psiu, tx_trans): + """ + Calculates the drake trans + + + Parameters + ---------- + psiu : DataArray + variable extracted from Xarray dataset + tx_trans : DataArray + variable extracted from Xarray dataset + + + Returns + ------- + psiu : DataArray + + :meta private: + """ + #PP these are all hardcoded need to change this to be dependent on grid!!! + drake_trans = self.transAcrossLine(tx_trans,212,212,32,49) + #loop over times + for i,trans in enumerate(drake_trans): + #offset psiu by the drake passage transport at that time + psiu[i,:] = psiu[i,:] + trans + return psiu + + +class SeaIceCalculations(): + """ + Functions to calculate mass transports. + + Parameters + ---------- + + Returns + ------- + transports : Xarray DataArray + mass transport array + + :meta private: + """ + + @click.pass_context + def __init__(self, ctx): + fname = import_files('mopdata').joinpath('transport_lines.yaml') + self.yaml_data = read_yaml(fname)['lines'] + + self.gridfile = xr.open_dataset(f"{ctx.obj['ancil_path']}/" + + f"{ctx.obj['grid_ice']}") + self.lines = self.yaml_data['sea_lines'] + self.ice_lines = self.yaml_data['ice_lines'] + + def __del__(self): + self.gridfile.close() + + +def calc_hemi_seaice(invar, carea, hemi, extent=False): + """Calculate seaice properties (volume, area and extent) over + hemisphere. + + Parameters + ---------- + invar : Xarray DataArray + Variable to process, either fraction (aice) or volume (hi) + carea : Xarray DataArray + Grid cell area + hemi : str + Assigning the hemisphere to calculate, either 'north' or'south'. + extent : bool + True if calculaitng extent: tarea as extent and var (aice) as filter. + + Returns + ------- + vout : xarray DataArray + Sum of property over selected hemisphere + + """ + vlat = invar.dims[1] + # if calculating extent sum carea and aice is used as filter + # with volume and area invar is multiplied by carea first + if extent: + var = tarea.where(invar <= 1. and invar >= 0.15, drop=True) + else: + var = invar * tarea + if hemi == 'north': + var = var.sel(vlat >= 0.) + elif hemi == 'south': + var = var.sel(vlat < 0.) + else: + mop_log.error(f"invalid hemisphere: {hemi}") + raise MopException(f"invalid hemisphere: {hemi}") + vout = var.sum() + return vout + + +def maskSeaIce(var, aice): + """Mask seaice. + + Parameters + ---------- + var : Xarray dataset + seaice variable + aice : Xarray dataset + seaice fraction + + Returns + ------- + vout : Xarray dataset + masked seaice variable + + """ + vout = var.where(aice != 0) + return vout + + +def sithick(hi, aice): + """Calculate seaice thickness. + + Parameters + ---------- + hi : Xarray dataset + seaice thickness + aice : Xarray dataset + seaice fraction + + Returns + ------- + vout : Xarray dataset + seaice thickness + + :meta private: + """ + aice = aice.where(aice > 1e-3, drop=True) + vout = hi / aice + return vout + + +def sisnconc(sisnthick): + """Calculate seas ice? + + Parameters + ---------- + sisnthick : Xarray dataset + + Returns + ------- + vout : Xarray dataset + + :meta private: + """ + vout = 1 - np.exp(-0.2 * 330 * sisnthick) + return vout diff --git a/src/mopper/calc_utils.py b/src/mopper/calc_utils.py new file mode 100644 index 0000000..4d1948f --- /dev/null +++ b/src/mopper/calc_utils.py @@ -0,0 +1,272 @@ +#!/usr/bin/env python +# Copyright 2024 ARC Centre of Excellence for Climate Extremes +# author: Paola Petrelli +# author: Sam Green +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This is the ACCESS Model Output Post Processor, derived from the APP4 +# originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah +# ( https://doi.org/10.5281/zenodo.7703469 ) +# +# last updated 10/10/2024 +# +# This file contains a collection of utilities to help calculate derived variables +# from ACCESS model output. +# Initial functions' definitions were based on APP4 modified to work with Xarray. + + +import click +import xarray as xr +import os +import json +import numpy as np +import dask +import logging +from importlib.resources import files as import_files + +from mopdb.utils import read_yaml, MopException + +# Global Variables +#---------------------------------------------------------------------- + +ice_density = 900 #kg/m3 +snow_density = 300 #kg/m3 + +rd = 287.1 +cp = 1003.5 +p_0 = 100000.0 +g_0 = 9.8067 # gravity constant +R_e = 6.378E+06 +#---------------------------------------------------------------------- + + +@click.pass_context +def time_resample(ctx, var, rfrq, tdim, sample='down', stats='mean'): + """ + Resamples the input variable to the specified frequency using + specified statistic. + + Resample is used with the options: + origin = 'start_day' + closed = 'right' + This puts the time label to the start of the interval and + offset is applied to get a centered time label. + The `rfrq` valid lables are described here: + https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#period-aliases + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + var : xarray.DataArray + Variable to resample. + rfrq : str + Resample frequency see above for valid inputs. + tdim: str + The name of the time dimension + sample : str + The type of resampling to perform. Valid inputs are 'up' for + upsampling or 'down' for downsampling. (default down) + stats : str + The reducing function to follow resample: mean, min, max, sum. + (default mean) + + Returns + ------- + vout : xarray.DataArray or xarray.Dataset + The resampled variable. + + Raises + ------ + ValueError + If the input variable is not a valid Xarray object. + ValueError + If the sample parameter is not 'up' or 'down'. + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + if not isinstance(var, xr.DataArray): + raise MopException("'var' must be a valid Xarray DataArray") + valid_stats = ["mean", "min", "max", "sum"] + if stats not in valid_stats: + var_log.error(f"Resample unrecognised stats {stats}") + raise MopException(f"{stats} not in valid list: {valid_stats}.") + offset = {'30m': [15, 'min'], 'h': [30, 'min'], '3h': [90, 'min'], + '6h': [3, 'h'], '12h': [6, 'h'], 'D': [12, 'h'], + '7D': [84, 'h'], '10D': [5, 'D'], 'M': [15, 'D'], + 'Y': [6, 'M'], '10Y': [5, 'Y']} + if sample == "down": + try: + vout = var.resample({tdim: rfrq}, origin="start_day", + closed="right") + method = getattr(vout, stats) + vout = method() + half, tunit = offset[rfrq][:] + vout = vout.assign_coords({tdim: + xr.CFTimeIndex(vout[tdim].values).shift(half, tunit)}) + except Exception as e: + var_log.error(f"Resample error: {e}") + raise MopException(f"{e}") + elif sample == "up": + try: + vout = var.resample({tdim: rfrq}).interpolate("linear") + except Exception as e: + var_log.error(f"Resample error: {e}") + raise MopException(f"{e}") + else: + var_log.error("Resample can only be up or down") + raise MopException("Sample is expected to be up or down") + return vout + + +def add_axis(var, name, value): + """Returns the same variable with an extra singleton axis added + + Parameters + ---------- + var : Xarray DataArray + Variable to modify + name : str + cmor name for axis + value : float + value of the new singleton dimension + + Returns + ------- + var : Xarray DataArray + Same variable with added axis at start + + """ + var = var.expand_dims(dim={name: float(value)}) + return var + + +@click.pass_context +def sum_vars(ctx, varlist): + """Returns sum of all variables in list + Parameters + ---------- + varlist : list(xarray.DataArray) + Variables to sum + + Returns + ------- + varout : xarray.DataArray + Sum of input variables + + """ + # first check that dimensions are same for all variables + varout = varlist[0] + for v in varlist[1:]: + varout = varout + v + return varout + + +@click.pass_context +def rename_coord(ctx, var1, var2, ndim, override=False): + """If coordinates in ndim position are different, renames var2 + coordinates as var1. + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + + :meta private: + """ + var_log = logging.getLogger(ctx.obj['var_log']) + coord1 = var1.dims[ndim] + coord2 = var2.dims[ndim] + if coord1 != coord2: + var_log.debug(f"{var1.name}, {var2.name}: {coord1}, {coord2}") + var2 = var2.rename({coord2: coord1}) + if 'bounds' in var1[coord1].attrs.keys(): + var2[coord1].attrs['bounds'] = var1[coord1].attrs['bounds'] + override = True + return var2, override + + +@click.pass_context +def get_ancil_var(ctx, ancil, varname): + """Opens the ancillary file and get varname + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + + Returns + ------- + ctx : click context obj + Dictionary including 'cmor' settings and attributes for experiment + Automatically passed + var : Xarray DataArray + selected variable from ancil file + + :meta private: + """ + f = xr.open_dataset(f"{ctx.obj['ancil_path']}/" + + f"{ctx.obj[ancil]}") + var = f[varname] + + return var + + +@click.pass_context +def get_plev(ctx, levnum): + """Read pressure levels from .._coordinate.json file + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + + Returns + ------- + ctx : click context obj + Dictionary including 'cmor' settings and attributes for experiment + Automatically passed + levnum : str + Indicates pressure levels to load, corresponds to plev#levnum axis + + :meta private: + """ + fpath = f"{ctx.obj['tpath']}/{ctx.obj['_AXIS_ENTRY_FILE']}" + with open(fpath, 'r') as jfile: + data = json.load(jfile) + axis_dict = data['axis_entry'] + plev = np.array(axis_dict[f"plev{levnum}"]['requested']) + plev = plev.astype(float) + return plev + + +@click.pass_context +def K_degC(ctx, var, inverse=False): + """Converts temperature from/to K to/from degC. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + var : Xarray DataArray + temperature array + + Returns + ------- + vout : Xarray DataArray + temperature array in degrees Celsius or Kelvin if inverse is True + + """ + var_log = logging.getLogger(ctx.obj['var_log']) + if not inverse and 'K' in var.units: + var_log.info("temp in K, converting to degC") + vout = var - 273.15 + elif inverse and 'C' in var.units: + var_log.info("temp in degC, converting to K") + vout = var + 273.15 + return vout diff --git a/src/mopper/calculations.py b/src/mopper/calculations.py deleted file mode 100644 index ba68dc4..0000000 --- a/src/mopper/calculations.py +++ /dev/null @@ -1,1432 +0,0 @@ -#!/usr/bin/env python -# Copyright 2023 ARC Centre of Excellence for Climate Extremes -# author: Paola Petrelli -# author: Sam Green -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# This is the ACCESS Model Output Post Processor, derived from the APP4 -# originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah -# ( https://doi.org/10.5281/zenodo.7703469 ) -# -# -# last updated 30/04/2024 - -''' -This script is a collection of functions to calculate derived variables from ACCESS model output - -Everything here is from app_functions.py but has been modified to work with Xarray data -more efficiently and optimized in general; i.e. reduced number of For and If statements. - -''' - -import click -import xarray as xr -import os -import json -import numpy as np -import dask -import logging - -from importlib.resources import files as import_files -from mopdb.utils import read_yaml - -# Global Variables -#---------------------------------------------------------------------- -#ancillary_path = os.environ.get('ANCILLARY_FILES', '')+'/' - -ice_density = 900 #kg/m3 -snow_density = 300 #kg/m3 - -rd = 287.0 -cp = 1003.5 -p_0 = 100000.0 - -R_e = 6.378E+06 -#---------------------------------------------------------------------- - - -# Modify data frequency -#---------------------------------------------------------------------- -def time_resample(var, trange, tdim, sample='down', stats='mean'): - """ - Resamples the input variable to the specified frequency. - Resample is used with the options: - origin = 'start_day' - closed = 'right' - This put the time label to the start of the interval and offset is applied - to get a centered time label. - - Parameters - ---------- - var : xarray.DataArray or xarray.Dataset - Variable from Xarray dataset. - range : str - The frequency to which the data should be resampled. Valid inputs are 'mon' (monthly), 'day' (daily), or 'year' (yearly). - tdim: str - The name of the time dimension - sample : str - The type of resampling to perform. Valid inputs are 'up' for - upsampling or 'down' for downsampling. (default down) - stats : str - The reducing function to follow resample: mean, min, max, sum. - (default mean) - - Returns - ------- - vout : xarray.DataArray or xarray.Dataset - The resampled variable. - - Raises - ------ - ValueError - If the input variable is not a valid Xarray object. - ValueError - If the sample parameter is not 'up' or 'down'. - """ - - if not isinstance(var, (xr.DataArray, xr.Dataset)): - raise ValueError("""The 'var' parameter must be a valid Xarray - DataArray or Dataset.""") - - - valid_stats = ['mean', 'min', 'max', 'sum'] - if stats not in valid_stats: - raise ValueError(f"The 'stats' parameter must be one of {valid_stats}.") - - offset = {'30m': [15, 'T'], 'H': [30, 'T'], '3H': [90, 'T'], '6H': [3, 'H'], - '12H': [6, 'H'], 'D': [12, 'H'], '7D': [84, 'H'], '10D': [5, 'D'], - 'M': [15, 'D'], 'Y': [6, 'M'], '10Y': [5, 'Y']} - - if sample == 'down': - try: - vout = var.resample({tdim: trange}, origin='start_day', - closed='right') - method = getattr(vout, stats) - vout = method() - half, tunit = offset[trange][:] - vout = vout.assign_coords({tdim: - xr.CFTimeIndex(vout[tdim].values).shift(half, tunit)}) - - except Exception as e: - print(f'{e}') - - elif sample == 'up': - try: - vout = var.resample({tdim: trange}).interpolate("linear") - - except Exception as e: - print(f'{e}') - - else: - raise Exception('sample is expected to be up or down') - - return vout -#---------------------------------------------------------------------- - - -# Sea Ice calculations -#---------------------------------------------------------------------- -class IceTransportCalculations(): - """ - Functions to calculate mass transports. - - Parameters - ---------- - - Returns - ------- - transports : Xarray DataArray - mass transport array - """ - - @click.pass_context - def __init__(self, ctx): - fname = import_files('mopdata').joinpath('transport_lines.yaml') - self.yaml_data = read_yaml(fname)['lines'] - - self.gridfile = xr.open_dataset(f"{ctx.obj['ancils_path']}/"+ - f"{ctx.obj['grid_ice']}") - self.lines = self.yaml_data['sea_lines'] - self.ice_lines = self.yaml_data['ice_lines'] - - def __del__(self): - self.gridfile.close() - - def get_grid_cell_length(self, xy): - """ - Select the hun or hue variable from the opened gridfile depending on whether - x or y are passed in. - - - Parameters - ---------- - xy : string - axis name - - Returns - ------- - L : Xarray dataset - hun or hue variable - - """ - if xy == 'y': - L = self.gridfile.hun / 100 #grid cell length in m (from cm) - elif xy == 'x': - L = self.gridfile.hue / 100 #grid cell length in m (from cm) - else: - raise Exception("""Need to supply value either 'x' or 'y' - for ice Transports""") - - return L - - - def transAcrossLine(self, var, i_start, i_end, j_start, j_end): - """Calculates the mass trasport across a line either - i_start=i_end and the line goes from j_start to j_end or - j_start=j_end and the line goes from i_start to i_end. - var is either the x or y mass transport depending on the line. - - - Parameters - ---------- - var : DataArray - variable extracted from Xarray dataset - i_start: int - xt_ocean axis position - i_end: int - xt_ocean axis position - j_start: int - yu_ocean axis position - j_end: int - yu_ocean axis position - - - Returns - ------- - transports : DataArray - - """ - #PP is it possible to generalise this? as I'm sure I have to do the same in main - # code to work out correct coordinates - if 'yt_ocean' in var: - y_ocean = 'yt_ocean' - x_ocean = 'xu_ocean' - else: - y_ocean = 'yu_ocean' - x_ocean = 'xt_ocean' - - # could we try to make this a sel lat lon values? - if i_start==i_end or j_start==j_end: - try: - #sum each axis apart from time (3d) - #trans = var.isel(yu_ocean=slice(271, 271+1), xt_ocean=slice(292, 300+1)) - trans = var[..., j_start:j_end+1, i_start:i_end+1].sum(dim=['st_ocean', f'{y_ocean}', f'{x_ocean}']) #4D - except Exception as e: - trans = var[..., j_start:j_end+1, i_start:i_end+1].sum(dim=[f'{y_ocean}', f'{x_ocean}']) #3D - - return trans - else: - raise Exception("""ERROR: Transport across a line needs to - be calculated for a single value of i or j""") - - - def lineTransports(self, tx_trans, ty_trans): - """ - Calculates the mass transports across the ocn straits. - - - Parameters - ---------- - tx_trans : DataArray - variable extracted from Xarray dataset - ty_trans: DataArray - variable extracted from Xarray dataset - - - Returns - ------- - trans : Datarray - - """ - #PP these are all hardcoded need to change this to be dependent on grid!!! - #initialise array - transports = np.zeros([len(tx_trans.time),len(self.lines)]) - - #0 barents opening - transports[:,0] = self.transAcrossLine(ty_trans,292,300,271,271) - transports[:,0] += self.transAcrossLine(tx_trans,300,300,260,271) - - #1 bering strait - transports[:,1] = self.transAcrossLine(ty_trans,110,111,246,246) - - #2 canadian archipelago - transports[:,2] = self.transAcrossLine(ty_trans,206,212,285,285) - transports[:,2] += self.transAcrossLine(tx_trans,235,235,287,288) - - #3 denmark strait - transports[:,3] = self.transAcrossLine(tx_trans,249,249,248,251) - transports[:,3] += self.transAcrossLine(ty_trans,250,255,247,247) - - #4 drake passage - transports[:,4] = self.transAcrossLine(tx_trans,212,212,32,49) - - #5 english channel - # Is unresolved by the access model - - #6 pacific equatorial undercurrent - #specified down to 350m not the whole depth - tx_trans_ma = tx_trans.where(tx_trans[:, 0:25, :] >= 0) - transports[:,6] = self.transAcrossLine(tx_trans_ma,124,124,128,145) - - #7 faroe scotland channel - transports[:,7] = self.transAcrossLine(ty_trans,273,274,238,238) - transports[:,7] += self.transAcrossLine(tx_trans,274,274,232,238) - - #8 florida bahamas strait - transports[:,8] = self.transAcrossLine(ty_trans,200,205,192,192) - - #9 fram strait - transports[:,9] = self.transAcrossLine(tx_trans,267,267,279,279) - transports[:,9] += self.transAcrossLine(ty_trans,268,284,278,278) - - #10 iceland faroe channel - transports[:,10] = self.transAcrossLine(ty_trans,266,268,243,243) - transports[:,10] += self.transAcrossLine(tx_trans,268,268,240,243) - transports[:,10] += self.transAcrossLine(ty_trans,269,272,239,239) - transports[:,10] += self.transAcrossLine(tx_trans,272,272,239,239) - - #11 indonesian throughflow - transports[:,11] = self.transAcrossLine(tx_trans,31,31,117,127) - transports[:,11] += self.transAcrossLine(ty_trans,35,36,110,110) - transports[:,11] += self.transAcrossLine(ty_trans,43,44,110,110) - transports[:,11] += self.transAcrossLine(tx_trans,46,46,111,112) - transports[:,11] += self.transAcrossLine(ty_trans,47,57,113,113) - - #12 mozambique channel - transports[:,12] = self.transAcrossLine(ty_trans,320,323,91,91) - - #13 taiwan luzon straits - transports[:,13] = self.transAcrossLine(ty_trans,38,39,190,190) - transports[:,13] += self.transAcrossLine(tx_trans,40,40,184,188) - - #14 windward passage - transports[:,14] = self.transAcrossLine(ty_trans,205,206,185,185) - - return transports - - - def iceTransport(self, ice_thickness, vel, xy): - """ - Calculate ice mass transport. - - - Parameters - ---------- - ice_thickness : DataArray - variable extracted from Xarray dataset - vel: DataArray - variable extracted from Xarray dataset - xy: str - variable extracted from Xarray dataset - - - Returns - ------- - ice_mass : DataArray - - """ - L = self.gridfile(xy) - ice_mass = ice_density * ice_thickness * vel * L - - return ice_mass - - - def snowTransport(self, snow_thickness, vel, xy): - """ - Calculate snow mass transport. - - - Parameters - ---------- - snow_thickness : DataArray - variable extracted from Xarray dataset - vel: DataArray - variable extracted from Xarray dataset - xy: str - variable extracted from Xarray dataset - - - Returns - ------- - snow_mass : DataArray - - """ - L = self.gridfile(xy) - snow_mass = snow_density * snow_thickness * vel * L - - return snow_mass - - - def iceareaTransport(self, ice_fraction, vel, xy): - """ - Calculate ice area transport. - - - Parameters - ---------- - ice_fraction : DataArray - variable extracted from Xarray dataset - vel: DataArray - variable extracted from Xarray dataset - xy: str - variable extracted from Xarray dataset - - - Returns - ------- - ice_area : DataArray - - """ - L = self.gridfile(xy) - ice_area = ice_fraction * vel * L - - return ice_area - - - def fill_transports(self, tx_trans, ty_trans): - """ - Calculates the mass transports across the ice straits. - - - Parameters - ---------- - tx_trans : DataArray - variable extracted from Xarray dataset - ty_trans: DataArray - variable extracted from Xarray dataset - - - Returns - ------- - transports : DataArray - - """ - transports = np.zeros([len(tx_trans.time),len(self.lines)]) - - #PP these are all hardcoded need to change this to be dependent on grid!!! - #0 fram strait - transports[:,0] = self.transAcrossLine(tx_trans,267,267,279,279) - transports[:,0] += self.transAcrossLine(ty_trans,268,284,278,278) - - #1 canadian archipelago - transports[:,1] = self.transAcrossLine(ty_trans,206,212,285,285) - transports[:,1] += self.transAcrossLine(tx_trans,235,235,287,288) - - #2 barents opening - transports[:,2] = self.transAcrossLine(ty_trans,292,300,271,271) - transports[:,2] += self.transAcrossLine(tx_trans,300,300,260,271) - - #3 bering strait - transports[:,3] = self.transAcrossLine(ty_trans,110,111,246,246) - - return transports - - - def icelineTransports(self, ice_thickness, velx, vely): - """ - Calculates the ice mass transport across the straits - - - Parameters - ---------- - ice_thickness : DataArray - variable extracted from Xarray dataset - velx : DataArray - variable extracted from Xarray dataset - vely: DataArray - variable extracted from Xarray dataset - - - Returns - ------- - transports : DataArray - - """ - - tx_trans = self.iceTransport(ice_thickness,velx,'x').fillna(0) - ty_trans = self.iceTransport(ice_thickness,vely,'y').fillna(0) - transports = self.fill_transports(tx_trans, ty_trans) - - return transports - - - def snowlineTransports(self, snow_thickness, velx, vely): - """ - Calculates the Snow mass transport across the straits - - - Parameters - ---------- - snow_thickness : DataArray - variable extracted from Xarray dataset - velx : DataArray - variable extracted from Xarray dataset - vely: DataArray - variable extracted from Xarray dataset - - - Returns - ------- - transports : DataArray - - """ - tx_trans = self.snowTransport(snow_thickness,velx,'x').fillna(0) - ty_trans = self.snowTransport(snow_thickness,vely,'y').fillna(0) - transports = self.fill_transports(tx_trans, ty_trans) - - return transports - - - def icearealineTransports(self, ice_fraction, velx, vely): - """ - Calculates the ice are transport across the straits - - - Parameters - ---------- - ice_fraction : DataArray - variable extracted from Xarray dataset - velx : DataArray - variable extracted from Xarray dataset - vely: DataArray - variable extracted from Xarray dataset - - - Returns - ------- - transports : DataArray - - """ - tx_trans = self.iceareaTransport(ice_fraction,velx,'x').fillna(0) - ty_trans = self.iceareaTransport(ice_fraction,vely,'y').fillna(0) - transports = self.fill_transports(tx_trans, ty_trans) - - return transports - - - def msftbarot(self, psiu, tx_trans): - """ - Calculates the drake trans - - - Parameters - ---------- - psiu : DataArray - variable extracted from Xarray dataset - tx_trans : DataArray - variable extracted from Xarray dataset - - - Returns - ------- - psiu : DataArray - - """ - #PP these are all hardcoded need to change this to be dependent on grid!!! - drake_trans = self.transAcrossLine(tx_trans,212,212,32,49) - #loop over times - for i,trans in enumerate(drake_trans): - #offset psiu by the drake passage transport at that time - psiu[i,:] = psiu[i,:] + trans - return psiu - - -class SeaIceCalculations(): - """ - Functions to calculate mass transports. - - Parameters - ---------- - - Returns - ------- - transports : Xarray dataset ?? dataset or array? - mass transport array - """ - - @click.pass_context - def __init__(self, ctx): - fname = import_files('mopdata').joinpath('transport_lines.yaml') - self.yaml_data = read_yaml(fname)['lines'] - - self.gridfile = xr.open_dataset(f"{ctx.obj['ancil_path']}/" + - f"{ctx.obj['grid_ice']}") - self.lines = self.yaml_data['sea_lines'] - self.ice_lines = self.yaml_data['ice_lines'] - - def __del__(self): - self.gridfile.close() - - -class HemiSeaIce: - def __init__(self, var, tarea, lat): - """Assign var, tarea, and lat to instance variables for later use. - - Parameters - ---------- - var : Xarray dataset - seaice variable - tarea : Xarray dataset - _description_ - lat : Xarray dataset - _description_ - """ - self.var = xr.where(var[0].mask, 0, var[0]) - self.tarea = tarea - self.lat = lat - - - def hemi_calc(self, hemi, var, nhlat, shlat): - """Calculate hemisphere seaice fraction. - - Parameters - ---------- - hemi : str - hemisphere to calculate seaice fraction for - - Returns - ------- - vout : Xarray dataset - - """ - - if hemi.find('north') != -1: - v = var.where(nhlat, drop=True) - elif hemi.find('south') != -1: - v = var.where(shlat, drop=True) - vout = v.sum() - - return vout - - - def calc_hemi_seaice_area_vol(self, hemi): - """Calculate the hemi seaice area volume. - - Parameters - ---------- - hemi : str - Assigning the hemisphere to calculate, either 'north' or'south'. - - Returns - ------- - vout : float - seaice area volume - """ - nhlati = self.lat.where(self.lat >= 0., drop=True) - shlati = self.lat.where(self.lat < 0., drop=True) - var = self.var * self.tarea - - vout = self.hemi_calc(hemi, var, nhlati, shlati) - - return vout.item() - - - def calc_hemi_seaice_extent(self, hemi): - """Calculate the hemi seaice extents. - - Parameters - ---------- - hemi : str - Assigning the hemisphere to calculate, either 'north' or'south'. - - Returns - ------- - vout : float - seaice extents - """ - nhlatiext = self.lat.where((self.var >= 0.15) & - (self.var <= 1.) & (self.lat >= 0.), drop=True) - shlatiext = self.lat.where((self.var >= 0.15) & - (self.var <= 1.) & (self.lat < 0.), drop=True) - - vout = self.hemi_calc(hemi, self.tarea, nhlatiext, shlatiext) - - return vout.item() - -def maskSeaIce(var, sic): - """Mask seaice. - - Parameters - ---------- - var : Xarray dataset - seaice variable - sic : Xarray dataset - seaice fraction - - Returns - ------- - vout : Xarray dataset - masked seaice variable - """ - vout = var.where(sic != 0) - return vout - -def sithick(hi, aice): - """Calculate seaice thickness. - - Parameters - ---------- - hi : Xarray dataset - seaice thickness - aice : Xarray dataset - seaice fraction - - Returns - ------- - vout : Xarray dataset - seaice thickness - """ - aice = aice.where(aice > 1e-3, drop=True) - vout = hi / aice - return vout - -def sisnconc(sisnthick): - """Calculate seas ice? - - Parameters - ---------- - sisnthick : Xarray dataset - - Returns - ------- - vout : Xarray dataset - - """ - vout = 1 - xr.apply_ufunc(np.exp, -0.2 * 330 * sisnthick, dask='allowed') - return vout - -#---------------------------------------------------------------------- - - -# Ocean Calculations -#---------------------------------------------------------------------- -def optical_depth(var, lwave): - """ - Calculates the optical depth. - First selects all variables at selected wavelength then sums them. - - Parameters - ---------- - var: DataArray - variable from Xarray dataset - lwave: int - level corresponding to desidered wavelength - - Returns - ------- - vout: DataArray - Optical depth - - """ - var_list = [v.sel(pseudo_level_0=lwave) for v in var] - vout = sum_vars(var_list) - return vout - - -def ocean_floor(var): - """Not sure.. - - Parameters - ---------- - var : Xarray dataset - pot_temp variable - - Returns - ------- - vout : Xarray dataset - ocean floor temperature? - """ - lv = (~var.isnull()).sum(dim='st_ocean') - 1 - vout = var.take(lv, dim='st_ocean').squeeze() - return vout - - -def calc_global_ave_ocean(var, rho_dzt, area_t): - """Calculate global ocean mass transport. - - Parameters - ---------- - var : Xarray dataset - ocean variable - rho_dzt : Xarray dataset - density transport - area_t : Xarray dataset - area transport - - Returns - ------- - vnew : Xarray dataset - global ocean mass transport - """ - mass = rho_dzt * area_t - #PP would be better to get the correct dimension from variable and use them - # rather than try and except - - try: - vnew = var.weighted(mass).mean(dim=('st_ocean', 'yt_ocean', 'xt_ocean'), skipna=True) - except Exception as e: - vnew = var.weighted(mass[:, 0, :, :]).mean(dim=('x', 'y'), skipna=True) - - return vnew - - -@click.pass_context -def get_plev(ctx, levnum): - """Read pressure levels from .._coordinate.json file - - Returns - ------- - plev : numpy array - """ - fpath = f"{ctx.obj['tpath']}/{ctx.obj['_AXIS_ENTRY_FILE']}" - with open(fpath, 'r') as jfile: - data = json.load(jfile) - axis_dict = data['axis_entry'] - - plev = np.array(axis_dict[f"plev{levnum}"]['requested']) - plev = plev.astype(float) - - return plev - - -@click.pass_context -def plevinterp(ctx, var, pmod, levnum): - """Interpolating var from model levels to pressure levels - - _extended_summary_ - - Based on function from Dale Roberts (currently ANU) - - Parameters - ---------- - var : Xarray DataArray - The variable to interpolate dims(time, lev, lat, lon) - pmod : Xarray DataArray - Air pressure on model levels dims(lev, lat, lon) - levnum : int - Number of the pressure levels to load. NB these need to be - defined in the '_coordinates.yaml' file as 'plev#' - - Returns - ------- - interp : Xarray DataArray - The variable interpolated on pressure levels - """ - - var_log = logging.getLogger(ctx.obj['var_log']) - # avoid dask warning - dask.config.set(**{'array.slicing.split_large_chunks': True}) - plev = get_plev(levnum) - lev = var.dims[1] - # if pmod is pressure on rho_level_0 and variable is on rho_level - # change name and remove last level - pmodlev = pmod.dims[1] - if pmodlev == lev + '_0': - pmod = pmod.isel({pmodlev:slice(0,-1)}) - pmod = pmod.rename({pmodlev: lev}) - # we can assume lon_0/lat_0 are same as lon/lat for this purpose - # if pressure and variable have different coordinates change name - vlat, vlon = var.dims[2:] - plat, plon = pmod.dims[2:] - var_log.debug(f"vlat, vlon: {vlat}, {vlon}") - var_log.debug(f"plat, plon: {plat}, {plon}") - override = False - if vlat != plat: - pmod = pmod.rename({plat: vlat}) - pmod[vlat].attrs['bounds'] = var[vlat].attrs['bounds'] - override = True - if vlon != plon: - pmod = pmod.rename({plon: vlon}) - pmod[vlon].attrs['bounds'] = var[vlon].attrs['bounds'] - override = True - var_log.debug(f"override: {override}") - if override is True: - pmod = pmod.reindex_like(var, method='nearest') - var_log.debug(f"pmod and var coordinates: {pmod.dims}, {var.dims}") - var = var.chunk({lev: -1}) - pmod = pmod.chunk({lev: -1}) - # temporarily making pressure values negative so they are in ascending - # order as required by numpy.interp final result it's same and - # we re-assign original plev to interp anyway - interp = xr.apply_ufunc( - np.interp, - -1 * plev, - -1 * pmod, - var, - kwargs = {'left': np.nan, 'right': np.nan}, - input_core_dims=[ ["plev"], [lev], [lev]], - output_core_dims=[ ["plev"] ], - exclude_dims=set((lev,)), - vectorize=True, - dask="parallelized", - output_dtypes=['float32'], - keep_attrs=True - ) - interp['plev'] = plev - interp['plev'] = interp['plev'].assign_attrs({'units': "Pa", - 'axis': "Z", 'standard_name': "air_pressure", - 'positive': ""}) - dims = list(var.dims) - dims[1] = 'plev' - interp = interp.transpose(*dims) - - return interp - - -# Temperature Calculations -#---------------------------------------------------------------------- -@click.pass_context -def K_degC(ctx, var): - """Converts temperature from K to degC. - - Parameters - ---------- - var : Xarray DataArray - temperature array - - Returns - ------- - vout : Xarray DataArray - temperature array in degrees Celsius - """ - var_log = logging.getLogger(ctx.obj['var_log']) - if 'K' in var.units: - var_log.info("temp in K, converting to degC") - vout = var - 273.15 - - return vout - - -def tos_3hr(var, landfrac): - """not sure this is needed?? - - Parameters - ---------- - var : Xarray dataset - - Returns - ------- - vout : Xarray dataset - """ - - var = K_degC(var) - - vout = xr.zeros_like(var) - t = len(var.time) - - for i in range(t): - vout[i,:,:] = var[i,:,:].where(landfrac[i,:,:] != 1) - - return vout -#---------------------------------------------------------------------- - - -# Land Calculations -#---------------------------------------------------------------------- - - -@click.pass_context -def extract_tilefrac(ctx, tilefrac, tilenum, landfrac=None, lev=None): - """Calculates the land fraction of a specific type. - i.e. crops, grass, wetland, etc. - - Parameters - ---------- - tilefrac : Xarray DataArray - variable - tilenum : Int or [Int] - the number indicating the tile - landfrac : Xarray DataArray - Land fraction variable if None (default) is read from ancil file - lev: str - name of pseudo level to add to output array (default is None) - - Returns - ------- - vout : Xarray DataArray - land fraction of object - - Raises - ------ - Exception - tile number must be an integer or list - """ - - if isinstance(tilenum, int): - vout = tilefrac.sel(pseudo_level_1=tilenum) - elif isinstance(tilenum, list): - vout = tilefrac.sel(pseudo_level=tilenum).sum(dim='pseudo_level') - else: - raise Exception('E: tile number must be an integer or list') - if landfrac is None: - landfrac = get_ancil_var('land_frac', 'fld_s03i395') - vout = vout * landfrac - - if lev: - fname = import_files('mopdata').joinpath('landtype.yaml') - data = read_yaml(fname) - type_dict = data['mod_mapping'] - vout = vout.expand_dims(dim={lev: type_dict[lev]}) - - return vout.filled(0) - - -def landuse_frac(var, landfrac=None, nwd=0): - """Defines new tile fractions variables where - original tiles are re-organised in 4 super-categories - - 0 - psl Primary and secondary land (includes forest, grasslands, - and bare ground) (1,2,3,4,5,6,7,11,14) or - (6,7,11,14?) if nwd is true - not sure why they're excluding barren soil with nwd error? - 1 - pst Pastureland (includes managed pastureland and rangeland) - (2) or (7) if nwd - 2 -crp Cropland (9) or (7) if nwd - 3 - Urban settlement (15) or (14) if nwd is true?? - - Tiles in CABLE: - 1. Evergreen Needleleaf - 2. Evergreen Broadleaf - 3. Deciduous Needleleaf - 4. Deciduous Broadleaf - 5. Shrub - 6. C3 Grassland - 7. C4 Grassland - 8. Tundra - 9. C3 Cropland - 10. C4 Cropland - 11. Wetland - 12. empty - 13. empty - 14. Barren - 15. Urban - 16. Lakes - 17. Ice - - Parameters - ---------- - var : Xarray DataArray - Tile variable - landfrac : Xarray DataArray - Land fraction variable if None (default) is read from ancil file - nwd : int - Indicates if only non-woody categories (1) or all (0 - default) - should be used - - Returns - vout : Xarray DataArray - Input tile variable redifined over 4 super-categories - """ - - #nwd (non-woody vegetation only) - tiles 6,7,9,11 only - vout = xr.zeros_like(var[:, :4, :, :]) - vout = vout.rename(pseudo_level_1='landUse') - vout['landUse'] = ['psl','pst','crp','urb'] - - # Define the tile indices based on 'nwd' value - if nwd == 0: - tile_indices = [1, 2, 3, 4, 5, 6, 7, 11, 14] - elif nwd == 1: - tile_indices = [6, 7, 11, 14] # - - # .loc allows you to modify the original array in-place, based on label and index respectively. So when you use .loc, the changes are applied to the original vout1 DataArray. - # The sel() operation doesn't work in-place, it returns a new DataArray that is a subset of the original DataArray. - for t in tile_indices: - vout.loc[dict(landUse='psl')] += var.sel(pseudo_level_1=t) - - # Pastureland not included in CABLE - # Crop tile 9 - vout.loc[dict(landUse='crp')] = var.sel(pseudo_level_1=9) - - # Urban tile updated based on 'nwd' in app4 not sure why - #if nwd == 0: - vout.loc[dict(landUse='urb')] = var.sel(pseudo_level_1=15) - - if landfrac is None: - landfrac = get_ancil_var('land_frac', 'fld_s03i395') - vout = vout * landfrac - # if nwdFracLut we want typenwd as an extra dimension as axis=0 - if nwd: - vout = vout.expand_dims(typenwd='herbaceous_vegetation') - - return vout - - -@click.pass_context -def get_ancil_var(ctx, ancil, varname): - """Opens the ancillary file and get varname - - Returns - ------- - var : Xarray DataArray - selected variable from ancil file - """ - f = xr.open_dataset(f"{ctx.obj['ancil_path']}/" + - f"{ctx.obj[ancil]}") - var = f[varname] - - return var - - -def average_tile(var, tilefrac=None, lfrac=1, landfrac=None, lev=None): - """Returns variable averaged over grid-cell, counting only specific tile/s - and land fraction when suitable. - For example: nLitter is nitrogen mass in litter and should be calculated only - over land fraction and each tile type will have different amounts of litter - average = sum_over_tiles(N amount on tile * tilefrac) * landfrac - - Parameters - ---------- - var : Xarray DataArray - variable to process defined opver tiles - tilefrac : Xarray DataArray, optional - variable defining tiles' fractions (default is None, read from ancil) - lfrac : int, optional - by default 1 controls if landfrac is considered (1) or not (0) - landfrac : Xarray DataArray - variable defining land fraction (default is None, read from ancil) - lev: str - name of pseudo level to add to output array (default is None) - - Returns - ------- - vout : Xarray DataArray - averaged input variable - """ - - if tilefrac is None: - tilefrac = get_ancil_var('land_tile', 'fld_s03i317') - vout = var * tilefrac - pseudo_level = vout.dims[1] - vout = vout.sum(dim=pseudo_level) - - if lfrac == 1: - if landfrac is None: - landfrac = get_ancil_var('land_frac', 'fld_s03i395') - vout = vout * landfrac - - if lev: - fname = import_files('mopdata').joinpath('landtype.yaml') - data = read_yaml(fname) - type_dict = data['mod_mapping'] - vout = vout.expand_dims(dim={lev: type_dict[lev]}) - return vout - - -@click.pass_context -def calc_topsoil(ctx, soilvar): - """Returns the variable over the first 10cm of soil. - - Parameters - ---------- - soilvar : Xarray DataArray - Soil moisture over soil levels - depth : Xarray DataArray - Soil depth coordinate array - - Returns - ------- - topsoil : Xarray DataArray - Variable defined on top 10cm of soil - """ - var_log = logging.getLogger(ctx.obj['var_log']) - depth = soilvar.depth - # find index of bottom depth level including the first 10cm of soil - maxlev = np.nanargmin(depth.where(depth >= 0.1).values) - var_log.debug(f"Max level of soil used is {maxlev}") - # calculate the fraction of maxlev which falls in first 10cm - fraction = (0.1 - depth[maxlev -1])/(depth[maxlev] - depth[maxlev-1]) - topsoil = soilvar.isel(depth=slice(0,maxlev)).sum(dim='depth') - topsoil = topsoil + fraction * soilvar.isel(depth=maxlev) - - return topsoil -#---------------------------------------------------------------------- - - -# More Calculations -#---------------------------------------------------------------------- - -@click.pass_context -def level_to_height(ctx, var, levs=None): - """Returns model level variable with level height instead of - number as dimension - - Parameters - ---------- - var : Xarray DataArray - Variable defined on model levels number - levs : tuple(str,str) - slice of levels to apply (optional, default is None) - - Returns - ------- - vout : Xarray DataArray - Same variable defined on model levels height - """ - var_log = logging.getLogger(ctx.obj['var_log']) - if levs is not None and type(levs) not in [tuple, list]: - var_log.error(f"level_to_height function: levs {levs} should be a tuple or list") - zdim = var.dims[1] - zdim_height = zdim.replace('number', 'height').replace('model_','') - var = var.swap_dims({zdim: zdim_height}) - if levs is not None: - var = var.isel({zdim_height: slice(int(levs[0]), int(levs[1]))}) - return var - - -def add_axis(var, name, value): - """Return the same variable with an extra singleton axis added - - Parameters - ---------- - var : Xarray DataArray - Variable to modify - name : str - cmor name for axis - value : float - value of the new singleton dimension - - Returns - ------- - var : Xarray DataArray - Same variable with added axis at start - """ - var = var.expand_dims(dim={name: float(value)}) - return var - - -@click.pass_context -def get_areacello(ctx, area_t=None): - """Returns areacello - - Parameters - ---------- - area_t: DataArray - area of t-cells (default None then is read from ancil file) - - Returns - ------- - areacello: DataArray - areacello variable - """ - fname = f"{ctx.obj['ancils_path']}/{ctx.obj['grid_ocean']}" - ds = xr.open_dataset(fname) - if area_t is None: - area_t = ds.area_t - areacello = xr.where(ds.ht.isnull(), 0, ds.area_t) - return areacello - - -@click.pass_context -def calc_global_ave_ocean(ctx, var, rho_dzt): - """ - rho_dzt: Xarray DataArray - sea_water_mass_per_unit_area dimensions: (time, depth, lat, lon) - """ - fname = f"{ctx.obj['ancils_path']}/{ctx.obj['grid_ocean']}" - ds = xr.open_dataset(fname) - area_t = ds['area_t'].reindex_like(rho_dzt, method='nearest') - mass = rho_dzt * area_t - try: - vnew=np.average(var,axis=(1,2,3),weights=mass) - except Exception as e: - vnew=np.average(var,axis=(1,2),weights=mass[:,0,:,:]) - - return vnew - - -@click.pass_context -def calc_overt(ctx, varlist, sv=False): - """ - - Parameters - ---------- - ctx : click context obj - Dictionary including 'cmor' settings and attributes for experiment - varlist: list( DataArray ) - List of ocean transport variables (ty_trans_) - From 1-3 if gm and/or submeso are present - sv: bool - If True units are sverdrup and they are converted to kg/s - (default is False) - varlist: list( DataArray ) - transport components to use to calculate streamfunction - - Returns - ------- - overt: DataArray - overturning mass streamfunction (time, basin, depth, gridlat) variable - """ - var_log = logging.getLogger(ctx.obj['var_log']) - var1 = varlist[0] - vlat, vlon = var1.dims[2:] - mask = get_basin_mask(vlat, vlon) - mlat = mask.dims[0] - mlon = mask.dims[1] - if [mlat, mlon] != [vlat, vlon]: - - # if mask uses different lat/lon interp mask to var dimesnions - #mask = mask.sel(mlat=vlat, mlon=vlon, method="nearest") - mask = mask.sel(**{mlat:var1[vlat], mlon:var1[vlon]}, method="nearest") - var_log.debug(f"Basin mask: {mask}") - # first calculate for global ocean - glb = overturn_stream(varlist) - # atlantic and arctic basin have mask values 2 and 4 #TODO double check this - var_masked = [ v.where(mask.isin([2, 4]), 0) for v in varlist] - atl = overturn_stream(var_masked) - #Indian and Pacific basin are given by mask values 3 and 5 #TODO double check this - var_masked = [ v.where(mask.isin([3, 5]), 0) for v in varlist] - ind = overturn_stream(var_masked) - # now add basin dimension to resulting array - glb = glb.expand_dims(dim={'basin': ['global_ocean']}, axis=1) - atl = atl.expand_dims(dim={'basin': ['atlantic_arctic_ocean']}, axis=1) - ind = ind.expand_dims(dim={'basin': ['indian_pacific_ocean']}, axis=1) - overt = xr.concat([atl, ind, glb], dim='basin', coords='minimal') - if ctx.obj['variable_id'][:5] == 'msfty': - overt = overt.rename({vlat: 'gridlat'}) - - return overt - - -@click.pass_context -def get_basin_mask(ctx, lat, lon): - """Returns first level of basin mask from lsmask ancil file. - - Lat, lon are used to work out which mask to use tt, uu, ut, tu - where t/u refer to t/c cell, for x/y axis - For example ut stands for c-cell lon and t-cell lat - - Parameters - ---------- - lat: str - latitude coordinate name - lon: str - longitude coordinate name - - Returns - ------- - basin_mask: DataArray - basin_mask(lat,lon) - """ - var_log = logging.getLogger(ctx.obj['var_log']) - coords = ['t', 't'] - if 'xu' in lon: - coords[0] = 'u' - elif 'yu' in lat: - coords[1] = 'u' - fname = f"{ctx.obj['ancils_path']}/{ctx.obj['mask_ocean']}" - if os.path.isfile(fname): - ds = xr.open_dataset(fname) - else: - var_log.error(f"Ocean mask file {fname} doesn't exists") - # based on coords select mask - mask = f"mask_{''.join(coords)}cell" - basin_mask = ds[mask].isel(st_ocean=0).fillna(0) - return basin_mask - - -@click.pass_context -def overturn_stream(ctx, varlist, sv=False): - """Returns ocean overturning mass streamfunction. - Calculation is: - sum over the longitudes and cumulative sum over depth for ty_trans var - then sum these terms to get final values - - Parameters - ---------- - varlist: list( DataArray ) - List of ocean overturning mass streamfunction variables (ty_trans_) - From 1-3 if gm and/or submeso are present - sv: bool - If True units are sverdrup and they are converted to kg/s - (default is False) - - Returns - ------- - stream: DataArray - The ocean overturning mass streamfunction in kg s-1 - """ - var_log = logging.getLogger(ctx.obj['var_log']) - londim = varlist[0].dims[3] - depdim = varlist[0].dims[1] - var_log.debug(f"Streamfunct lon, dep dims: {londim}, {depdim}") - # work out which variables are in list - var = {'ty': None, 'gm': None, 'subm': None} - for v in varlist: - if '_gm' in v.name: - var['gm'] = v - elif '_submeso' in v.name: - var['subm'] = v - else: - var['ty'] = v - # calculation - ty_lon = var['ty'].sum(londim) - stream = ty_lon.cumsum(depdim) - if var['gm'] is not None: - stream += var['gm'].sum(londim) - if var['subm'] is not None: - stream += var['subm'].sum(londim) - stream = stream - ty_lon.sum(depdim) - if sv is True: - stream = stream * 10**9 - - return stream - - -def sum_vars(varlist): - """Returns sum of all variables in list - """ - # first check that dimensions are same for all variables - varout = varlist[0] - for v in varlist[1:]: - varout = varout + v - - return varout - - -@click.pass_context -def calc_depositions(ctx, var, weight=None): - """Returns aerosol depositions - - At the moment is assuming sea salt will need more work to be - adapted for other depositions. - Original variables are mol s-1 output is kg m-2 s-1, so we - multiply by molecular weight. - Sea salt is assumed to be NaCl: 0.05844 kg.mol-1 - NB we are using only surface level as: "Dry deposition occurs - when aerosol bumps into something at surface level, so it doesn't - make sense for there to be data in the levels above" - (personal communication from M. Woodhouse) - """ - - #var_log = logging.getLogger(ctx.obj['var_log']) - varlist = [] - for v in var: - v0 = v.sel(model_theta_level_number=1).squeeze(dim='model_theta_level_number') - varlist.append(v0) - if weight is None: - weight = 0.05844 - deps = sum_vars(varlist) * weight - return deps - diff --git a/src/mopper/cmip_utils.py b/src/mopper/cmip_utils.py index 161e55f..97a2206 100755 --- a/src/mopper/cmip_utils.py +++ b/src/mopper/cmip_utils.py @@ -18,7 +18,7 @@ # originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah # ( https://doi.org/10.5281/zenodo.7703469 ) # -# last updated 06/11/2023 +# last updated 08/10/2024 # # This file contains functions needed when processing CMIP files via dreq @@ -28,6 +28,7 @@ import click from collections import OrderedDict +from mopdb.utils import MopException def find_cmip_tables(dreq): """ @@ -99,8 +100,8 @@ def read_dreq_vars(ctx, table_id, activity_id): Parameters ---------- - cdict : dict - Dictionary with post-processing config + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes table_id : str CMIP table id activity_id: str diff --git a/src/mopper/mop_setup.py b/src/mopper/mop_setup.py index 02132bb..80fa4f0 100755 --- a/src/mopper/mop_setup.py +++ b/src/mopper/mop_setup.py @@ -19,10 +19,9 @@ # originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah # ( https://doi.org/10.5281/zenodo.7703469 ) # -# last updated 08/04/2024 +# last updated 10/10/2024 import os -import sys import shutil import json import csv @@ -33,9 +32,9 @@ from importlib.resources import files as import_files from mopper.setup_utils import (define_timeshot, adjust_nsteps, - find_custom_tables, write_var_map, write_table) + find_map_tables, write_var_map, write_table) from mopper.cmip_utils import find_cmip_tables, read_dreq_vars -from mopdb.utils import read_yaml +from mopdb.utils import read_yaml, write_yaml, MopException def find_matches(table, var, realm, frequency, varlist): @@ -67,6 +66,7 @@ def find_matches(table, var, realm, frequency, varlist): match : dict Dictionary containing matched variable specifications or None if not matches + """ mop_log = logging.getLogger('mop_log') near_matches = [] @@ -113,11 +113,15 @@ def find_matches(table, var, realm, frequency, varlist): def find_nearest(varlist, frequency): - """If variable is present in file at different frequencies, + """Find variable with nearest frequency to resample. + + If variable is present in file at different frequencies, finds the one with higher frequency nearest to desired frequency. Adds frequency to variable resample field. Checks if modifier is present for frequency, match freq+mod must equal var frequency, however modifier is removed to find resample frequency + For valid resample frequency labels, see: + https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#period-aliases Parameters ---------- @@ -132,6 +136,7 @@ def find_nearest(varlist, frequency): var : dict Dictionary containing matched variable specifications or None if not matches + """ mop_log = logging.getLogger('mop_log') var = None @@ -144,8 +149,8 @@ def find_nearest(varlist, frequency): resample_order = ['10yr', 'yr', 'mon', '10day', '7day', 'day', '12hr', '6hr', '3hr', '1hr', '30min', '10min'] resample_frq = {'10yr': '10Y', 'yr': 'Y', 'mon': 'M', '10day': '10D', - '7day': '7D', 'day': 'D', '12hr': '12H', '6hr': '6H', - '3hr': '3H', '1hr': 'H', '30min': '30T'} + '7day': '7D', 'day': 'D', '12hr': '12h', '6hr': '6h', + '3hr': '3h', '1hr': 'h', '30min': '30min'} freq_idx = resample_order.index(freq) mop_log.debug(f"In find_nearest, freq: {freq}, freq_idx: {freq_idx}") for frq in resample_order[freq_idx+1:]: @@ -169,12 +174,12 @@ def setup_env(ctx): Parameters ---------- - ctx : click context obj - Dictionary including 'cmor' settings and attributes for experiment + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes Returns ------- - ctx : click context obj + ctx : click context With updated dictionary including 'cmor' settings and attributes for experiment @@ -183,6 +188,8 @@ def setup_env(ctx): cdict = ctx.obj cdict['appdir'] = Path(cdict['appdir']) appdir = cdict['appdir'] + if cdict['project'][0] == "$": + cdict['project'] = os.getenv(cdict['project'][1:]) mop_log.debug(f"appdir: {appdir}, {type(appdir)}") if cdict['outpath'] == 'default': cdict['outpath'] = (f"/scratch/{cdict['project']}/" + @@ -238,22 +245,39 @@ def setup_env(ctx): # and change year start end according to experiment @click.pass_context def var_map(ctx, activity_id=None): - """ + """Compares list of variables request by user to ones available + in mappings file, call functions to define corresponding files. + + Calls create_var_map() for each identified table and finally write + list of selected variables to yaml file for provenance. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + activity-id: str + CMIP activity-id necessary only for CMIP style processing + (default is None) + Returns + ------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ mop_log = logging.getLogger('mop_log') tables = ctx.obj.get('tables', 'all') subset = ctx.obj.get('var_subset', False) sublist = ctx.obj.get('var_subset_list', None) + varsel = {} if subset is True: if sublist is None: mop_log.error("var_subset is True but file with variable list not provided") - sys.exit() + raise MopException("var_subset is True but file with variable list not provided") elif Path(sublist).suffix not in ['.yaml', '.yml']: mop_log.error(f"{sublist} should be a yaml file") - sys.exit() + raise MopException(f"{sublist} should be a yaml file") else: sublist = ctx.obj['appdir'] / sublist -# Custom mode vars + # Custom mode vars #if ctx.obj['mode'].lower() == 'custom': # access_version = ctx.obj['access_version'] if ctx.obj['force_dreq'] is True: @@ -270,23 +294,24 @@ def var_map(ctx, activity_id=None): tables = [t for t in selection.keys()] for table in tables: mop_log.info(f"\n{table}:") - create_var_map(table, masters, selection=selection[table]) + varsel = create_var_map(table, masters, varsel, selection=selection[table]) elif tables.lower() == 'all': mop_log.info(f"Experiment {ctx.obj['exp']}: processing all tables") if ctx.obj['force_dreq']: tables = find_cmip_tables(ctx.obj['dreq']) else: - tables = find_custom_tables() + tables = find_map_tables(masters) for table in tables: mop_log.info(f"\n{table}:") - create_var_map(table, masters, activity_id) + varsel = create_var_map(table, masters, varsel, activity_id) else: - create_var_map(tables, masters) + varsel = create_var_map(tables, varsel, masters) + write_yaml(varsel, 'mop_var_selection.yaml', 'mop_log') return ctx @click.pass_context -def create_var_map(ctx, table, mappings, activity_id=None, +def create_var_map(ctx, table, mappings, varsel, activity_id=None, selection=None): """Create a mapping file for this specific experiment based on model ouptut mappings, variables listed in table/s passed by config. @@ -294,16 +319,33 @@ def create_var_map(ctx, table, mappings, activity_id=None, Parameters ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + table : str + CMOR table to use + mappings : dict + Contains mappings as read from the csv map file + varsel : dict + Contains selection of variables to process + activity-id: str + CMIP activity-id necessary only for CMIP style processing + (default is None) + selection : list + List of variables to select in table, as passed by user + with subset yaml file (default is None) Returns ------- + varsel : dict + Contains updated selection of variables to process + """ mop_log = logging.getLogger('mop_log') matches = [] fpath = ctx.obj['tables_path'] / f"{table}.json" if not fpath.exists(): - fpath = import_files('mopdata').joinpath( - f"cmor_tables/{table}.json") + fpath = import_files('mopdata.cmor_tables').joinpath( + f"{table}.json") table_id = table.split('_')[1] mop_log.debug(f"Mappings: {mappings}") try: @@ -311,7 +353,7 @@ def create_var_map(ctx, table, mappings, activity_id=None, vardict = json.loads(text) except JSONDecodeError as e: mop_log.error(f"Invalid json {fpath}: {e}") - raise + raise MopException(f"Invalid json {fpath}: {e}") row_dict = vardict['variable_entry'] all_vars = [v for v in row_dict.keys()] # work out which variables you want to process @@ -343,14 +385,26 @@ def create_var_map(ctx, table, mappings, activity_id=None, else: mop_log.info(f" Found {len(matches)} variables") write_var_map(ctx.obj['maps'], table, matches) + varsel[table] = [x['cmor_var'] for x in matches] write_table(table, vardict, select) - return + return varsel @click.pass_context def archive_workdir(ctx): """If updating current post-processing move files to keep for provenance to "workidr#" folder. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + + Returns + ------- + workdir : pathlib.Path + Path of archived working directory + """ n = 1 workdir = ctx.obj['outpath'] / f"workdir{str(n)}" @@ -374,7 +428,14 @@ def archive_workdir(ctx): @click.pass_context def manage_env(ctx): - """Prepare output directories and removes pre-existing ones + """Prepare working and directories. Removes or update pre-existing + ones, based on user choice. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + """ mop_log = logging.getLogger('mop_log') # check if output path already exists @@ -386,10 +447,9 @@ def manage_env(ctx): try: shutil.rmtree(outpath) except OSError as e: - raise(f"Error couldn't delete {outpath}: {e}") + raise MopException(f"Couldn't delete {outpath}: {e}") else: - mop_log.info("Exiting") - sys.exit() + raise MopException("Aborting setup") # if updating working directory move files to keep if ctx.obj['update']: mop_log.info("Updating job_files directory...") @@ -408,8 +468,8 @@ def manage_env(ctx): '_control_vocabulary_file']: fpath = ctx.obj['tables_path'] / ctx.obj[f] if not fpath.exists(): - fpath = import_files('mopdata').joinpath( - f"cmor_tables/{ctx.obj[f]}") + fpath = import_files('mopdata.cmor_tables').joinpath( + f"{ctx.obj[f]}") if f == '_control_vocabulary_file': fname = "CMIP6_CV.json" # if updating make sure the CV file is not different diff --git a/src/mopper/mop_utils.py b/src/mopper/mop_utils.py index 3577e25..b322f18 100755 --- a/src/mopper/mop_utils.py +++ b/src/mopper/mop_utils.py @@ -19,7 +19,7 @@ # originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah # ( https://doi.org/10.5281/zenodo.7703469 ) # -# last updated 15/05/2024 +# last updated 08/10/2024 import numpy as np import re @@ -36,8 +36,12 @@ from functools import partial from pathlib import Path -from mopper.calculations import * -from mopdb.utils import read_yaml +from mopper.calc_land import * +from mopper.calc_atmos import * +from mopper.calc_utils import * +from mopper.calc_seaice import * +from mopper.calc_ocean import * +from mopdb.utils import read_yaml, MopException from importlib.resources import files as import_files @@ -122,37 +126,48 @@ def _preselect(ds, varlist): @click.pass_context def get_files(ctx): """Returns all files in time range - First identifies all files with pattern/s defined for invars - Then retrieve time dimension and if multiple time axis are present - Finally filter only files in time range based on file timestamp (faster) - If this fails or multiple time axis are present reads first and - last timestep from each file + + 1) Identifies all files with pattern/s defined for invars + 2) Retrieves time dimension, checks if file has multiple time axes + 3) Filters files in time range based on file timestamp (faster) + 4) If last step fails or multiple time axis are present reads first and + last timestep from each file + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + Returns + ------- + path_vars : dict(dict) """ # Returns file list for each input var and list of vars for each file pattern var_log = logging.getLogger(ctx.obj['var_log']) - all_files, path_vars = find_all_files() - - # PP FUNCTION END return all_files, extra_files - var_log.debug(f"access files from: {os.path.basename(all_files[0][0])}" + - f"to {os.path.basename(all_files[0][-1])}") - ds = xr.open_dataset(all_files[0][0], decode_times=False) - time_dim, units, multiple_times = get_time_dim(ds) - del ds - try: - inrange_files = [] - for i,paths in enumerate(all_files): - if multiple_times is True: - inrange_files.append( check_in_range(paths, time_dim) ) - else: - inrange_files.append( check_timestamp(paths) ) - except Exception as e: - for i,paths in enumerate(all_files): - inrange_files.append( check_in_range(paths, time_dim) ) - - for i,paths in enumerate(inrange_files): - if paths == []: + path_vars = find_all_files() + var_log.debug(f"get_files, path_vars size: {len(path_vars)}") + # step 2 + # step 3/4 + for pat,v in path_vars.items(): + paths = v['files'] + if v['duplicate'] != '': + continue + ds = xr.open_dataset(v['files'][0], decode_times=False) + v['tdim'], multiple_times = get_time_dim(ds) + del ds + if multiple_times is True: + v['files'] = check_timeaxis(paths, v['tdim']) + else: + try: + v['files'] = check_timestamp(paths) + except Exception as e: + var_log.debug("get_files: using timestamp failed trying timeaxis") + v['files'] = check_timeaxis(paths, v['tdim']) + path_vars[pat] = v + if path_vars[pat]['files'] == []: var_log.error(f"No data in requested time range for: {ctx.obj['filename']}") - return inrange_files, path_vars, time_dim, units + for pat,v in path_vars.items(): + if v['duplicate'] != '': + path_vars[pat]['files'] = path_vars[v['duplicate']]['files'] + + return path_vars @click.pass_context @@ -162,70 +177,111 @@ def find_all_files(ctx): be in chronological order because there is usually some sort of date and/or time information in the filename. Check that all variables needed are in file, otherwise add extra file pattern + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) var_log.debug(f"Input file structure: {ctx.obj['infile']}") patterns = ctx.obj['infile'].split() var_log.debug(f"Input file patterns: {patterns}") #set normal set of files - files = [] - for i,p in enumerate(patterns): + path_vars = {} + for p in patterns: + path_vars[p] = {} + path_vars[p]['duplicate'] = '' path, match = p.split("**/") pattern_paths = [x for x in Path(path).rglob(match)] if len(pattern_paths) == 0: var_log.warning(f"""Could not find files for pattern {p}. Make sure path correct and project storage flag included""") pattern_paths.sort( key=lambda x:x.name) - files.append(pattern_paths) - #files.append( [str(x) for x in Path(path).rglob(match)]) - #files[i].sort() + path_vars[p]['files'] = pattern_paths # if there is more than one variable: make sure all vars are in # one of the file pattern and couple them missing = copy.deepcopy(ctx.obj['vin']) i = 0 - path_vars = {} while len(missing) > 0 and i < len(patterns): - path_vars[i] = [] - f = files[i][0] - missing, found = check_vars_in_file(missing, f) - if len(found) > 0: - for v in found: - path_vars[i].append(v) + pat = patterns[i] + files = path_vars[pat]['files'] + missing, found, duplicate = check_vars_in_file(missing, files[0]) + var_log.debug(f"calling add_var_path: found {found}, duplicate {duplicate}") + # if there are variables with different time axes duplicate paths + path_vars = add_var_path(path_vars, pat, files, found, duplicate) i+=1 # if we couldn't find a variable check other files in same directory if len(missing) > 0: var_log.error(f"Input vars: {missing} not in files {ctx.obj['infile']}") - return files, path_vars + return path_vars + + +@click.pass_context +def add_var_path(ctx, path_vars, pat, files, found, duplicate): + """ + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + """ + if len(found) > 0: + if duplicate is False: + path_vars[pat]['vars'] = found + else: + path_vars[pat]['vars'] = [found[0]] + # duplicate paths for other variables + for i,v in enumerate(found[1:]): + path_vars[f"{pat}-{i}"] = {} + path_vars[f"{pat}-{i}"]['vars'] = [v] + path_vars[f"{pat}-{i}"]['files'] = files + path_vars[f"{pat}-{i}"]['duplicate'] = pat + return path_vars @click.pass_context def check_vars_in_file(ctx, invars, fname): """Check that all variables needed for calculation are in file else return extra filenames + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ - #var_log = logging.getLogger(ctx.obj['var_log']) + var_log = logging.getLogger(ctx.obj['var_log']) ds = xr.open_dataset(fname, decode_times=False) tofind = [v for v in invars if v not in ds.variables] found = [v for v in invars if v not in tofind] - return tofind, found + tdims = [] + # Check if variables are using different time axes, if yes duplciate info + duplicate = False + for v in found: + td = [d for d in ds[v].dims if 'time' in d] + var_log.debug(f"timedim for {v} is {td}") + if td != []: + tdims.append(td[0]) + var_log.debug(f"tdim list {tdims}") + if len(tdims) > 1: + duplicate = True + var_log.debug("Found variables with different time axis in calculation") + return tofind, found, duplicate @click.pass_context def get_time_dim(ctx, ds): """Find time info: time axis, reference time and set tstart and tend also return mutlitple_times True if more than one time axis + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) time_dim = None multiple_times = False - varname = [ctx.obj['vin'][0]] + # use first input variable found + for varname in ctx.obj['vin']: + if varname in ds.data_vars: + break # var_log.debug(f" check time var dims: {ds[varname].dims}") for var_dim in ds[varname].dims: axis = ds[var_dim].attrs.get('axis', '') if 'time' in var_dim or axis == 'T': time_dim = var_dim - units = ds[var_dim].units + #units = ds[var_dim].units var_log.debug(f"first attempt to tdim: {time_dim}") var_log.debug(f"time var is: {time_dim}") @@ -234,19 +290,35 @@ def get_time_dim(ctx, ds): ds[x].attrs.get('axis', '') == 'T'] if len(tdims) > 1: multiple_times = True + var_log.debug(f"Multiple time axis: {multiple_times}") del ds - return time_dim, units, multiple_times + return time_dim, multiple_times @click.pass_context def check_timestamp(ctx, all_files): """This function tries to guess the time coverage of a file based on its timestamp - and return the files in range. At the moment it does a lot of checks based on the realm and real examples - eventually it would make sense to make sure all files generated are consistent in naming + and return the files in range. + + Tries to detect timestamp in fileame by breaking it at [., _] and + matching possible date patterns. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + all_files : list(Path) + List of Path obj for all files available + + Returns + ------- + inrange : list(Path) + List of Path obj for all files that have timstamp in + [sel_start, sel_end] + """ var_log = logging.getLogger(ctx.obj['var_log']) inrange_files = [] - realm = ctx.obj['realm'] var_log.info("checking files timestamp ...") tstart = ctx.obj['sel_start'] tend = ctx.obj['sel_end'] @@ -255,20 +327,27 @@ def check_timestamp(ctx, all_files): if 'fx' in ctx.obj['frequency']: inrange_files = [all_files[0]] else: + # set potentially regex for dates in order of reliability + # first group looks for at least a year starting with 0/1/2 + # second group is for year < 1000 where starting 0 is omitted + rdates = [r"[0,1,2]\d{7}", r"[0,1,2]\d{5}", + r"[0,1,2]\d{3}-d{2}-d{2}", r"[0,1,2]\d{3}-d{2}", + r"[0,1,2]\d{3}", r"\d{7}", r"\d{5}", r"\d{3}-d{2}-d{2}", + r"\d{3}-d{2}", r"\d{3}"] for infile in all_files: - inf = infile.replace('.','_') - inf = inf.replace('-','_') + var_log.debug(f"infile: {infile}") + inf = infile.name.replace('.','_') + #inf = inf.replace('-','_') dummy = inf.split("_") - if realm == 'ocean': - tstamp = dummy[-1] - elif realm == 'ice': - tstamp = ''.join(dummy[-3:-2]) - else: - tstamp = dummy[-3] - # usually atm files are xxx.code_date_frequency.nc - # sometimes there's no separator between code and date - # 1 make all separator _ so xxx_code_date_freq_nc - # then analyse date to check if is only date or codedate + var_log.debug(f"dummy: {dummy}") + for d in reversed(dummy): + pattern = [x for x in rdates if re.search(x, d)] + if pattern != []: + break + if pattern == []: + var_log.error(f"couldn't find timestamp for {infile}") + tstamp = d.replace('-','') + #var_log.debug(f"first tstamp: {tstamp}") # check if timestamp as the date time separator T hhmm = '' if 'T' in tstamp: @@ -276,18 +355,11 @@ def check_timestamp(ctx, all_files): # if tstamp start with number assume is date if not tstamp[0].isdigit(): tstamp = re.sub("\\D", "", tstamp) - tlen = len(tstamp) - if tlen >= 8: - tstamp = tstamp[-8:] - elif 6 <= tlen < 8: - tstamp = tstamp[-6:] - elif 4 <= tlen < 6: - tstamp = tstamp[-4:] tlen = len(tstamp) if tlen != 8: if tlen in [3, 5, 7] : - #assume year is yyy - tstamp += '0' + #assume year is yyy and 0 + tstamp = '0' + tstamp if len(tstamp) == 4: tstart = tstart[:4] tend = tend[:4] @@ -305,14 +377,32 @@ def check_timestamp(ctx, all_files): var_log.debug(f"tstart, tend {tstart}, {tend}") if tstart <= tstamp <= tend: inrange_files.append(infile) + var_log.debug("file selected") return inrange_files @click.pass_context -def check_in_range(ctx, all_files, tdim): - """Return a list of files in time range - Open each file and check based on time axis - Use this function only if check_timestamp fails +def check_timeaxis(ctx, all_files, tdim): + """Returns a list of files in time range. + + Opens each file and check based on time axis. + This function is called only if check_timestamp fails or + if multiple time axes are present. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + all_files : list() + All files paths matching a specific pattern + tdim : str + Name of time dimension associated with datasets + + Returns + ------- + inrange_files : list + Files that contain data in desired time range + """ var_log = logging.getLogger(ctx.obj['var_log']) inrange_files = [] @@ -320,30 +410,47 @@ def check_in_range(ctx, all_files, tdim): var_log.debug(f"time dimension: {tdim}") tstart = ctx.obj['tstart'].replace('T','') tend = ctx.obj['tend'].replace('T','') + var_log.debug(f"tstart, tend from opts: {tstart}, {tend}") if 'fx' in ctx.obj['table']: inrange_files = [all_files[0]] else: for input_file in all_files: try: ds = xr.open_dataset(input_file, use_cftime=True) - # get first and last values as date string - tmin = ds[tdim][0].dt.strftime('%4Y%m%d%H%M') - tmax = ds[tdim][-1].dt.strftime('%4Y%m%d%H%M') - var_log.debug(f"tmax from time dim: {tmax}") - var_log.debug(f"tend from opts: {tend}") - if not(tmin > tend or tmax < tstart): - inrange_files.append(input_file) - del ds except Exception as e: - var_log.error(f"Cannot open file: {e}") + var_log.error(f"Cannot open file: {input_file} - {e}") + continue + # If file has multiple time axes, it's possible they not all present + # in all the files + if tdim not in ds.dims: + continue + # get first and last values as date string + tmin = ds[tdim][0].dt.strftime('%4Y%m%d%H%M') + tmax = ds[tdim][-1].dt.strftime('%4Y%m%d%H%M') + var_log.debug(f"tmin, tmax from time dim: {str(tmin.values)}, {str(tmax.values)}") + if not(tmin > tend or tmax < tstart): + inrange_files.append(input_file) + del ds var_log.debug(f"Number of files in time range: {len(inrange_files)}") var_log.info("Found all the files...") return inrange_files @click.pass_context -def load_data(ctx, inrange_files, path_vars, time_dim): - """Returns a dictionary of input var: xarray dataset +def load_data(ctx, path_vars): + """Returns a dictionary listing open ds obj for each input var + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + path_vars : dict + + Returns + ------- + input_ds : dict + Dictionary {input-var1: xarray dataset, ..} + """ # preprocessing to select only variables we need to avoid # concatenation issues with multiple coordinates @@ -352,114 +459,133 @@ def load_data(ctx, inrange_files, path_vars, time_dim): # this is to prevent issues with ocean files var_log = logging.getLogger(ctx.obj['var_log']) input_ds = {} - for i, paths in enumerate(inrange_files): - preselect = partial(_preselect, varlist=path_vars[i]) - dsin = xr.open_mfdataset(paths, preprocess=preselect, + first = ctx.obj['vin'][0] + for k,v in path_vars.items(): + var_log.debug(f"load_data: pattern & paths: {k}, {v['files']}") + var_log.debug(f"load_data: path_vars vars: {v['vars']}") + preselect = partial(_preselect, varlist=v['vars']) + dsin = xr.open_mfdataset(v['files'], preprocess=preselect, parallel=True, decode_times=False) + if 'tdim' not in v.keys(): + tdim, multiple_times = get_time_dim(dsin) + else: + tdim = v['tdim'] + # Get the units and other attrs of first variable + if first in v['vars']: + var_log.debug(f"load_data: getting attrs for {first}") + in_units, in_missing, positive, coords = get_attrs(dsin, + first) dsin = xr.decode_cf(dsin, use_cftime=True) - if time_dim is not None and 'fx' not in ctx.obj['frequency']: - dsin = dsin.sel({time_dim: slice(ctx.obj['tstart'], - ctx.obj['tend'])}) - for v in path_vars[i]: - var_log.debug(f"Load data, var and path: {v}, {path_vars[i]}") - input_ds[v] = dsin - return input_ds + if tdim is not None and 'fx' not in ctx.obj['frequency']: + var_log.debug(f"load_data: slicing time {tdim}") + dsin = dsin.sel({tdim: slice(ctx.obj['tstart'], + ctx.obj['tend'])}) + for field in v['vars']: + var_log.debug(f"load_data, var & path: {field}, {v['vars']}") + input_ds[field] = dsin + return input_ds, in_units, in_missing, positive, coords - @click.pass_context -def get_cmorname(ctx, axis_name, axis, z_len=None): - """Get time cmor name based on timeshot option +def generic_name(ctx, aname, orig, cnames): + """Get cmor name for z axes with generic name + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + aname : str + Name of variable dimension + orig : str + Cmor name for variable dimension to use to define cmor axis + cnames : list + List of possible cmor names for generic specified axis + + Returns + ------- + cmor_name : str + Cmor name for variable dimension to use to define cmor axis + """ var_log = logging.getLogger(ctx.obj['var_log']) - var_log.debug(f'axis_name, axis.name: {axis_name}, {axis.name}') - ctx.obj['axes_modifier'] = [] - if axis_name == 't': - timeshot = ctx.obj['timeshot'] - if any(x in timeshot for x in ['mean', 'min', 'max', 'sum']): - cmor_name = 'time' - elif 'point' in timeshot: - cmor_name = 'time1' - elif 'clim' in timeshot: - cmor_name = 'time2' - else: - #assume timeshot is mean - var_log.warning("timeshot unknown or incorrectly specified") - cmor_name = 'time' - elif axis_name == 'lat': - cmor_name = 'latitude' - elif axis_name == 'lon': - cmor_name = 'longitude' - elif axis_name == 'glat': - cmor_name = 'gridlatitude' - elif axis_name == 'z': - #PP pressure levels derived from plevinterp - if 'plevinterp' in ctx.obj['calculation'] : - levnum = re.findall(r'\d+', ctx.obj['variable_id'])[-1] - cmor_name = f"plev{levnum}" - elif 'depth100' in ctx.obj['axes_modifier']: - cmor_name = 'depth100m' - elif (axis.name == 'st_ocean') or (axis.name == 'sw_ocean'): - cmor_name = 'depth_coord' - #ocean pressure levels - elif axis.name == 'potrho': - cmor_name = 'rho' - elif 'theta_level_height' in axis.name or 'rho_level_height' in axis.name: - cmor_name = 'hybrid_height2' - elif axis.name == 'level_number': - cmor_name = 'hybrid_height' - elif 'rho_level_number' in axis.name: - cmor_name = 'hybrid_height_half' - #atmospheric pressure levels: - elif axis.name == 'lev' or \ - any(x in axis.name for x in ['_p_level', 'pressure']): - cmor_name = f"plev{str(z_len)}" - elif 'soil' in axis.name or axis.name == 'depth': - cmor_name = 'sdepth' - if 'topsoil' in ctx.obj['axes_modifier']: - #top layer of soil only - cmor_name = 'sdepth1' - var_log.debug(f"Cmor name for axis {axis.name}: {cmor_name}") + var_log.debug(f"generic_name axis name: {aname}") + # get list of possible names for generic level + cmor_name = orig + if orig == "olevel": + if aname in ["st_ocean", "sw_ocean"]: + cmor_name = "depth_coord" + elif orig == "alevel": + if any(x in aname for x in ["theta_level_height", "rho_level_height"]): + cmor_name = "hybrid_height2" + elif "level_number" in aname: + cmor_name = "hybrid_height" + elif orig == "alevhalf": + if "rho_level_number" in axname: + cmor_name = "hybrid_height_half" + if cmor_name == orig: + var_log.error(f"""cmor name for axis {aname} and + {cmor_name} not yet defined. Use correct cmor name + in map file as temporary solution and open an issue""") + raise MopException("cmor name not defined for generic axis") + if cmor_name not in cnames: + var_log.warning(f"{cmor_name} not in axes_names.yaml file") + return cmor_name - -#PP this should eventually just be generated directly by defining the dimension using the same terms -# in related calculation @click.pass_context -def pseudo_axis(ctx, axis): - """coordinates with axis_identifier other than X,Y,Z,T - PP not sure if axis can be used to remove axes_mod +def get_cmorname(ctx, axis_name): + """Get cmor name for axes based on their name, cmor var definition + and list of defined axes in cmor coordinate file. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + axis_name : str + Name of variable dimension + + Returns + ------- + cmor_name : str + Cmor name for variable dimension to use to define cmor axis + """ var_log = logging.getLogger(ctx.obj['var_log']) - cmor_name = None - p_vals = None - p_len = None - #PP still need to work on this to eleiminate axes-modifier! - if 'dropLev' in ctx.obj['axes_modifier']: - var_log.info("variable on tiles, setting pseudo levels...") - #z_len=len(dim_values) - for mod in ctx.obj['axes_modifier']: - if 'type' in mod: - cmor_name = mod - if cmor_name is None: - var_log.error('could not determine land type, check ' - + 'variable dimensions and calculations') - #PP check if we can just return list from det_landtype - p_vals = list( det_landtype(cmor_name) ) - if 'landUse' in ctx.obj['axes_modifier']: - p_vals = getlandUse() - p_len = len(landUse) - cmor_name = 'landUse' - if 'vegtype' in ctx.obj['axes_modifier']: - p_vals = cableTiles() - p_len = len(cabletiles) - cmor_name = 'vegtype' - return cmor_name, p_vals, p_len + var_log.debug(f"get_cmorname axis_name: {axis_name}") + generic_axes = ["alevel", "alevhalf", "olevel", "olevhalf"] + names = ctx.obj['axes'].split() + cmor_name = [] + if axis_name in ['time', 'lat', 'lon', 'gridlat']: + cmor_name = [x for x in names if axis_name in x] + else: + fname = import_files('mopdata').joinpath('axes_names.yaml') + data = read_yaml(fname) + if axis_name == 'p': + cnames = data['pseudo_axes'] + else: + cnames = data['Z_axes'] + # add specific names for generic axes + cnames.extend([v for x in generic_axes for v in data[x]]) + var_log.debug(f"{cnames}") + var_log.debug(f"{names}") + cmor_name = [x for x in names if x in cnames] + if cmor_name == []: + cmor_name = None + var_log.warning(f"Cannot detect cmor name for {axis_name}") + else: + cmor_name = cmor_name[0] + if cmor_name in generic_axes: + cmor_name = generic_name(axis_name, cmor_name, data[cmor_name]) + var_log.debug(f"Cmor name for axis {axis_name}: {cmor_name}") + return cmor_name + #PP this should eventually just be generated directly by defining the dimension using the same terms # in calculation for meridional overturning @click.pass_context def create_axis(ctx, axis, table): """ + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) # maybe we can just create these axis as they're meant in calculations @@ -482,6 +608,9 @@ def hybrid_axis(ctx, lev, z_ax_id, z_ids): """Setting up additional hybrid axis information PP this needs fixing can't possible work now without b_vals, b_bnds?? lev is cmor_zName? + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ #var_log = logging.getLogger(ctx.obj['var_log']) hybrid_dict = {'hybrid_height': 'b', @@ -505,6 +634,8 @@ def hybrid_axis(ctx, lev, z_ax_id, z_ids): @click.pass_context def ij_axis(ctx, ax, ax_name, table): """ + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ #var_log = logging.getLogger(ctx.obj['var_log']) cmor.set_table(table) @@ -516,14 +647,16 @@ def ij_axis(ctx, ax, ax_name, table): @click.pass_context def ll_axis(ctx, ax, ax_name, ds, table, bounds_list): """ + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) var_log.debug("in ll_axis") cmor.set_table(table) - cmor_aName = get_cmorname(ax_name, ax) + cmor_aName = get_cmorname(ax_name) ax_units = ax.attrs.get('units', 'degrees') a_bnds = None - var_log.debug(f"got cmor name: {cmor_aName}") + var_log.debug(f"found cmor name: {cmor_aName}") if cmor_aName in bounds_list: a_bnds = get_bounds(ds, ax, cmor_aName) a_vals = ax.values @@ -544,6 +677,9 @@ def ll_axis(ctx, ax, ax_name, ds, table, bounds_list): @click.pass_context def define_grid(ctx, j_id, i_id, lat, lat_bnds, lon, lon_bnds): """If we are on a non-cartesian grid, Define the spatial grid + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) grid_id=None @@ -560,6 +696,9 @@ def define_grid(ctx, j_id, i_id, lat, lat_bnds, lon, lon_bnds): @click.pass_context def get_coords(ctx, ovar, coords): """Get lat/lon and their boundaries from ancil file + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) # open ancil grid file to read vertices @@ -568,7 +707,7 @@ def get_coords(ctx, ovar, coords): ancil_file = ancil_dir + "/" + ctx.obj.get(f"grid_{ctx.obj['realm']}", '') if ancil_file == '' or not Path(ancil_file).exists(): var_log.error(f"Ancil file {ancil_file} not set or inexistent") - sys.exit() + raise MopException(f"Ancil file {ancil_file} not set or inexistent") var_log.debug(f"getting lat/lon and bnds from ancil file: {ancil_file}") ds = xr.open_dataset(ancil_file) var_log.debug(f"ancil ds: {ds}") @@ -598,62 +737,89 @@ def get_coords(ctx, ovar, coords): @click.pass_context def get_axis_dim(ctx, var): """ + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + """ var_log = logging.getLogger(ctx.obj['var_log']) axes = {'t_ax': None, 'z_ax': None, 'glat_ax': None, 'lat_ax': None, 'lon_ax': None, 'j_ax': None, - 'i_ax': None, 'p_ax': None, 'e_ax': None} + 'i_ax': None, 'p_ax': [], 's_ax': []} + axes_str = "" for dim in var.dims: if dim in var.coords: axis = var[dim] - var_log.debug(f"axis found: {axis}") + var_log.debug(f"axis found: {dim}") else: var_log.warning(f"No coordinate variable associated with the dimension {dim}") axis = None - # need to file to give a value then??? if axis is not None: attrs = axis.attrs - axis_name = attrs.get('axis', None) - var_log.debug(f"trying axis attrs: {axis_name}") - axis_name = attrs.get('cartesian_axis', axis_name) - var_log.debug(f"trying cart axis attrs: {axis_name}") - if axis_name == 'T' or 'time' in dim.lower(): + axis_attr = attrs.get('axis', None) + var_log.debug(f"trying axis attrs: {axis_attr}") + axis_attr = attrs.get('cartesian_axis', axis_attr) + var_log.debug(f"trying cart axis attrs: {axis_attr}, {axis.name}") + if axis_attr == 'T' or 'time' in dim.lower(): axes['t_ax'] = axis - elif axis_name and 'Y' in axis_name: + axes_str += f"t_ax: {axis.name}; " + elif axis_attr and 'Y' in axis_attr: if dim.lower() == 'gridlat': axes['glat_ax'] = axis + axes_str += f"glat_ax: {axis.name}; " elif 'lat' in dim.lower(): axes['lat_ax'] = axis + axes_str += f"lat_ax: {axis.name}; " elif any(x in dim.lower() for x in ['nj', 'yu_ocean', 'yt_ocean']): axes['j_ax'] = axis - # have to add this because a simulation didn't have the dimenision variables + axes_str += f"j_ax: {axis.name}; " + # have to add this because a simulation didn't have the dimension variables elif any(x in dim.lower() for x in ['nj', 'yu_ocean', 'yt_ocean']): axes['j_ax'] = axis - elif axis_name and 'X' in axis_name: + axes_str += f"j_ax: {axis.name}; " + elif axis_attr and 'X' in axis_attr: if 'glon' in dim.lower(): axes['glon_ax'] = axis + axes_str += f"glon_ax: {axis.name}; " elif 'lon' in dim.lower(): axes['lon_ax'] = axis + axes_str += f"lon_ax: {axis.name}; " elif any(x in dim.lower() for x in ['ni', 'xu_ocean', 'xt_ocean']): axes['i_ax'] = axis - # have to add this because a simulation didn't have the dimenision variables + axes_str += f"i_ax: {axis.name}; " + # have to add this because a simulation didn't have the dimension variables elif any(x in dim.lower() for x in ['ni', 'xu_ocean', 'xt_ocean']): axes['i_ax'] = axis - elif axis_name == 'Z' or any(x in dim for x in ['lev', 'heigth', 'depth']): + axes_str += f"i_ax: {axis.name}; " + elif axis_attr == 'Z' or any(x in dim for x in + ['lev', 'heigth', 'depth']): axes['z_ax'] = axis - #z_ax.attrs['axis'] = 'Z' - elif axis_name and 'pseudo' in axis_name: - axes['p_ax'] = axis - elif dim in ['basin', 'oline', 'siline']: - axes['e_ax'] = axis + axes_str += f"z_ax: {axis.name}; " else: - var_log.info(f"Unknown axis: {axis_name}") + fname = import_files('mopdata').joinpath('axes_names.yaml') + data = read_yaml(fname) + snames = data['singleton_axes'] + var_log.debug(f"{snames}") + if axis.name in data['singleton_axes']: + axes['s_ax'].append(axis) + axes_str += f"s_ax: {axis.name}; " + else: + axes['p_ax'].append(axis) + axes_str += f"p_ax: {axis.name}; " + if len(axis) == 1: + var_log.warning( + f"Axis 1 value but not singleton: {axis.name}") + var_log.debug(f"Detected axes: {axes_str}") return axes @click.pass_context def check_time_bnds(ctx, bnds, frequency): - """Checks if dimension boundaries from file are wrong""" + """Checks if dimension boundaries from file are wrong. + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + + """ var_log = logging.getLogger(ctx.obj['var_log']) var_log.debug(f"Time bnds 1,0: {bnds[:,1], bnds[:,0]}") diff = bnds[:,1] - bnds[:,0] @@ -675,6 +841,9 @@ def check_time_bnds(ctx, bnds, frequency): def require_bounds(ctx): """Returns list of coordinates that require bounds. Reads the requirement directly from .._coordinate.json file + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) fpath = f"{ctx.obj['tpath']}/{ctx.obj['_AXIS_ENTRY_FILE']}" @@ -688,9 +857,12 @@ def require_bounds(ctx): @click.pass_context -def bnds_change(ctx, axis): +def bounds_change(ctx, axis): """Returns True if calculation/resample changes bnds of specified dimension. + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ #var_log = logging.getLogger(ctx.obj['var_log']) dim = axis.name @@ -711,12 +883,15 @@ def get_bounds(ctx, ds, axis, cmor_name, ax_val=None): uses edges or tries to calculate them. If variable goes through calculation potentially bounds are different from input file and forces re-calculating them + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) var_log.debug(f'in getting bounds: {axis}') dim = axis.name var_log.info(f"Getting bounds for axis: {dim}") - changed_bnds = bnds_change(axis) + changed_bnds = bounds_change(axis) var_log.debug(f"Bounds has changed: {changed_bnds}") #The default bounds assume that the grid cells are centred on #each grid point specified by the coordinate variable. @@ -764,7 +939,7 @@ def get_bounds(ctx, ds, axis, cmor_name, ax_val=None): if inrange is False: var_log.error(f"Boundaries for {cmor_name} are " + "wrong even after calculation") - #PP should probably raise error here! + raise MopException(f"Boundaries for {cmor_name} wrong") # Take into account type of axis # as we are often concatenating along time axis and bnds are # considered variables they will also be concatenated along time axis @@ -793,6 +968,9 @@ def get_bounds(ctx, ds, axis, cmor_name, ax_val=None): def get_bounds_values(ctx, ds, bname): """Return values of axis bounds, if they're not in file tries to get them from ancillary grid file instead. + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ calc = False var_log = logging.getLogger(ctx.obj['var_log']) @@ -813,12 +991,12 @@ def get_bounds_values(ctx, ds, bname): return calc, bnds_val @click.pass_context -def get_attrs(ctx, infiles, var1): +def get_attrs(ctx, ds, var1): """ + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ var_log = logging.getLogger(ctx.obj['var_log']) - # open only first file so we can access encoding - ds = xr.open_dataset(infiles[0][0]) var_attrs = ds[var1].attrs in_units = ctx.obj['in_units'] if in_units in [None, '']: @@ -851,14 +1029,17 @@ def get_attrs(ctx, infiles, var1): @click.pass_context -def extract_var(ctx, input_ds, tdim, in_missing): +def extract_var(ctx, input_ds, in_missing): """ - This function pulls the required variables from the Xarray dataset. - If a calculation isn't needed then it just returns the variables to be saved. - If a calculation is needed then it evaluates the calculation and returns the result. - Finally it re-select time rnage in case resmaple or other operations have introduced - extra timesteps + This function extracts the required variables from the Xarray dataset. + If no calculation then it just returns the variables to be saved. + If calculation, it evaluates the calculation and returns the result. + If resample, executes after calcualtion step. + Re-selects time range in case resample or other operations have + introduced extra timesteps + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes input_ds - dict dictionary of input datasets for each variable """ @@ -872,14 +1053,16 @@ def extract_var(ctx, input_ds, tdim, in_missing): var_log.debug(f"{array}") else: var = [] - var_log.info("Adding variables to var list") + var_log.info(f"Adding variables {ctx.obj['vin']} to var list") for v in ctx.obj['vin']: try: + var_log.debug(f"trying to append {v}") var.append(input_ds[v][v][:]) except Exception as e: failed = True + var_log.debug(f"{[x.name for x in input_ds[v].variables]}") var_log.error(f"Error appending variable, {v}: {e}") - + raise MopException(f"Error appending variable, {v}: {e}") var_log.info("Finished adding variables to var list") # Now try to perform the required calculation @@ -890,7 +1073,9 @@ def extract_var(ctx, input_ds, tdim, in_missing): failed = True mop_log.info(f"error evaluating calculation, {ctx.obj['filename']}") var_log.error(f"error evaluating calculation, {ctx.obj['calculation']}: {e}") + raise MopException(f"Error evaluating calculation: {e}") #Call to resample operation is defined based on timeshot + tdim = [d for d in array.dims if 'time' in d][0] if ctx.obj['resample'] != '': array = time_resample(array, ctx.obj['resample'], tdim, stats=ctx.obj['timeshot']) @@ -922,6 +1107,8 @@ def define_attrs(ctx): NB for calculation is checking only if name of function used is listed in notes file, this is indicated by precending any function in file with a ~. For other fields it checks equality. + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ #var_log = logging.getLogger(ctx.obj['var_log']) attrs = ctx.obj['attrs'] diff --git a/src/mopper/mopper.py b/src/mopper/mopper.py index a8f57d5..5ad0563 100644 --- a/src/mopper/mopper.py +++ b/src/mopper/mopper.py @@ -20,7 +20,7 @@ # ( https://doi.org/10.5281/zenodo.7703469 ) # Github: https://github.com/ACCESS-Hive/ACCESS-MOPPeR # -# last updated 08/04/2024 +# last updated 10/10/2024 import click @@ -33,15 +33,16 @@ import yaml import cmor import cftime +from pathlib import Path from mopper.mop_utils import (config_log, config_varlog, get_files, - load_data, get_cmorname, pseudo_axis, create_axis, hybrid_axis, + load_data, get_cmorname, create_axis, hybrid_axis, ij_axis, ll_axis, define_grid, get_coords, get_axis_dim, require_bounds, get_bounds, get_attrs, extract_var, define_attrs) from mopper.mop_setup import setup_env, var_map, manage_env from mopper.setup_utils import (create_exp_json, write_config, populate_db, count_rows, sum_file_sizes, filelist_sql, write_job) -from mopdb.utils import db_connect, create_table, query +from mopdb.utils import db_connect, create_table, query, MopException from mopper.cmip_utils import edit_json_cv warnings.simplefilter(action='ignore', category=FutureWarning) @@ -81,8 +82,8 @@ def mop(ctx): Parameters ---------- - ctx : obj - Click context object + ctx : click context + To pass settings """ #ctx.obj = {} pass @@ -100,6 +101,8 @@ def mop_run(ctx, cfile, debug): Parameters ---------- + ctx : click context + To pass settings cfile : str Name of yaml configuration file, run sub-command uses the configuration created by setup @@ -113,7 +116,7 @@ def mop_run(ctx, cfile, debug): ctx.obj = cfg['cmor'] ctx.obj['attrs'] = cfg['attrs'] # set up logger - mop_log = config_log(debug, ctx.obj['appdir']) + mop_log = config_log(debug, ctx.obj['outpath']) ctx.obj['debug'] = debug mop_log.info(f"Simulation to process: {ctx.obj['exp']}") # Open database and retrieve list of files to create @@ -126,15 +129,15 @@ def mop_run(ctx, cfile, debug): mop_log.info("no more rows to process") # Set up pool handlers to create each file as a separate process mop_log.info(f"number of rows: {len(rows)}") - results = pool_handler(rows, ctx.obj['ncpus']) + results = pool_handler(rows, ctx.obj['ncpus'], ctx.obj['cpuxworker']) mop_log.info("mop run finished!\n") # Summary or results and update status in db: mop_log.info("RESULTS:") for r in results: mop_log.info(r[0]) - c.execute("UPDATE filelist SET status=? WHERE rowid=?",[r[2],r[1]]) + out = c.execute("UPDATE filelist SET status=? WHERE rowid=?",(r[1],r[2])) conn.commit() - print('updating database') + mop_log.info(f"Updated {c.rowcount} files status in database") return @@ -156,6 +159,8 @@ def mop_setup(ctx, cfile, debug, update): Parameters ---------- + ctx : click context + To pass settings cfile : str Name of yaml configuration file, run sub-command uses the configuration created by setup @@ -164,13 +169,14 @@ def mop_setup(ctx, cfile, debug, update): update : bool If True update current workding directory (default is False) """ - # load config file with open(cfile, 'r') as yfile: cfg = yaml.safe_load(yfile) ctx.obj = cfg['cmor'] ctx.obj['attrs'] = cfg['attrs'] ctx.obj['debug'] = debug + if ctx.obj['appdir'] == "default": + ctx.obj['appdir'] = Path.cwd() # set up logger mop_log = config_log(debug, ctx.obj['appdir'], stream_level=logging.INFO) # then add setup_env to config @@ -212,6 +218,7 @@ def mop_setup(ctx, cfile, debug, update): if status.returncode != 0: mop_log.error(f"{ctx.obj['app_job']} submission failed, " + f"returned code is {status.returncode}.\n Try manually") + raise MopException(f"{ctx.obj['app_job']} submission failed") return @@ -222,8 +229,10 @@ def mop_process(ctx): Sets up CMOR dataset, tables and axis. Extracts and/or calculates variable and write to file using CMOR. Returns path of created file if successful or error code if not. + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ - mop_log = logging.getLogger('mop_log') var_log = logging.getLogger(ctx.obj['var_log']) logname = f"{ctx.obj['variable_id']}_{ctx.obj['table']}_{ctx.obj['tstart']}" @@ -242,31 +251,23 @@ def mop_process(ctx): global_attrs = define_attrs() for k,v in global_attrs.items(): cmor.set_cur_dataset_attribute(k, v) - - #Load the CMIP/custom tables + # Load the CMIP/custom tables tables = [] tables.append(cmor.load_table(f"{ctx.obj['tpath']}/{ctx.obj['grids']}")) tables.append(cmor.load_table(f"{ctx.obj['tpath']}/{ctx.obj['table']}.json")) - # Select files to use and associate a path to each input variable - #P I might not need this! - inrange_files, path_vars, time_dim, t_units = get_files() - + # Select files to use and associate a path, time dim to each input variable + path_vars = get_files() # Open input datasets based on input files, return dict= {var: ds} - dsin = load_data(inrange_files, path_vars, time_dim) - - #Get the units and other attrs of first variable. + dsin, in_units, in_missing, positive, coords = load_data(path_vars) var1 = ctx.obj['vin'][0] - in_units, in_missing, positive, coords = get_attrs(inrange_files, - var1) - var_log.debug(f"var just after reading {dsin[var1][var1]}") # Extract variable and calculation: var_log.info("Loading variable and calculating if needed...") var_log.info(f"calculation: {ctx.obj['calculation']}") var_log.info(f"resample: {ctx.obj['resample']}") try: - ovar, failed = extract_var(dsin, time_dim, in_missing) + ovar, failed = extract_var(dsin, in_missing) var_log.info("Calculation completed.") except Exception as e: mop_log.error(f"E: Unable to retrieve/calculate var for {ctx.obj['filename']}") @@ -282,18 +283,18 @@ def mop_process(ctx): bounds_list = require_bounds() # get axis of each dimension axes = get_axis_dim(ovar) - var_log.debug(f"detected axes: {axes}") cmor.set_table(tables[1]) axis_ids = [] z_ids = [] + time_dim = None setgrid = False if axes['t_ax'] is not None: - cmor_tName = get_cmorname('t', axes['t_ax']) + time_dim = axes['t_ax'].name + cmor_tName = get_cmorname('time') ctx.obj['reference_date'] = f"days since {ctx.obj['reference_date']}" var_log.debug(f"{ctx.obj['reference_date']}") t_ax_val = cftime.date2num(axes['t_ax'], units=ctx.obj['reference_date'], calendar=ctx.obj['attrs']['calendar']) - #var_log.debug(f"t_ax[3] {t_ax_val[3]}") t_bounds = None if cmor_tName in bounds_list: t_bounds = get_bounds(dsin[var1], axes['t_ax'], cmor_tName, @@ -305,12 +306,9 @@ def mop_process(ctx): cell_bounds=t_bounds, interval=None) axis_ids.append(t_ax_id) - if axes['e_ax'] is not None: - e_ax_id = create_axis(axes['e_ax'], tables[1]) - axis_ids.append(e_ax_id) if axes['z_ax'] is not None: zlen = len(axes['z_ax']) - cmor_zName = get_cmorname('z', axes['z_ax'], z_len=zlen) + cmor_zName = get_cmorname(axes['z_ax'].name) z_bounds = None if cmor_zName in bounds_list: z_bounds = get_bounds(dsin[var1], axes['z_ax'], cmor_zName) @@ -321,7 +319,24 @@ def mop_process(ctx): cell_bounds=z_bounds, interval=None) axis_ids.append(z_ax_id) - # if both i, j are defined setgrid if only one treat as lat/lon + if axes['p_ax'] != []: + for p_ax in axes['p_ax']: + cmor_pName = get_cmorname('p') + p_bounds = None + if cmor_pName in bounds_list: + p_bounds = get_bounds(dsin[var1], p_ax, cmor_pName) + avals = p_ax.values + punits = p_ax.units + if punits == "": + avals = avals.astype(str) + p_ax_id = cmor.axis(table_entry=cmor_pName, + units=punits, + length=len(p_ax), + coord_vals=avals, + cell_bounds=p_bounds, + interval=None) + axis_ids.append(p_ax_id) + # if both i, j are defined call setgrid, if only one treat as lat/lon if axes['i_ax'] is not None and axes['j_ax'] is not None: var_log.debug(f"Setting grid with {axes}") setgrid = True @@ -337,10 +352,9 @@ def mop_process(ctx): grid_id = define_grid(j_id, i_id, lat, lat_bnds, lon, lon_bnds) else: if axes['glat_ax'] is not None: - lat_id = ll_axis(axes['glat_ax'], 'glat', dsin[var1], + lat_id = ll_axis(axes['glat_ax'], 'gridlat', dsin[var1], tables[1], bounds_list) axis_ids.append(lat_id) - #z_ids.append(lat_id) elif axes['lat_ax'] is not None: lat_id = ll_axis(axes['lat_ax'], 'lat', dsin[var1], tables[1], bounds_list) @@ -351,13 +365,6 @@ def mop_process(ctx): bounds_list) axis_ids.append(lon_id) z_ids.append(lon_id) - if axes['p_ax'] is not None: - cmor_pName, p_vals, p_len = pseudo_axis(axes['p_ax']) - p_ax_id = cmor.axis(table_entry=cmor_pName, - units='', - length=p_len, - coord_vals=p_vals) - axis_ids.append(p_ax_id) if setgrid: axis_ids.append(grid_id) z_ids.append(grid_id) @@ -365,7 +372,6 @@ def mop_process(ctx): if (axes['z_ax'] is not None and cmor_zName in ['hybrid_height', 'hybrid_height_half']): zfactor_b_id, zfactor_orog_id = hybrid_axis(cmor_zName, z_ax_id, z_ids) - # Freeing up memory del dsin @@ -404,7 +410,6 @@ def mop_process(ctx): + f"See cmor log, status: {status}") return 2 var_log.info("Finished writing") - # Close the CMOR file. path = cmor.close(variable_id, file_name=True) return path @@ -418,16 +423,17 @@ def process_file(ctx, row): Parameters ---------- - ctx : obj - Click context object + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes row : dict row from filelist db table describing one output file + Returns ------- out : tuple Output status message and code and db rowid for processed file - """ + """ mop_log = logging.getLogger('mop_log') var_log = logging.getLogger(ctx.obj['var_log']) row['vin'] = row['vin'].split() @@ -502,15 +508,29 @@ def process_row(ctx, row): """Processes one db filelist row. Sets up variable log file, prepares dictionary with file details and calls process_file + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + row : dict + row from filelist db table describing one output file + + Returns + ------- + msg : str + Message string from + """ pid = os.getpid() record = {} header = ['infile', 'filepath', 'filename', 'vin', 'variable_id', - 'table', 'frequency', 'realm', 'timeshot', 'tstart', - 'tend', 'sel_start', 'sel_end', 'status', 'file_size', - 'exp_id', 'calculation', 'resample', 'in_units', - 'positive', 'cfname', 'source_id', 'access_version', - 'json_file_path', 'reference_date', 'version', 'rowid'] + 'table', 'frequency', 'realm', 'timeshot', 'axes', + 'tstart', 'tend', 'sel_start', 'sel_end', 'status', + 'file_size', 'exp_id', 'calculation', 'resample', + 'in_units', 'positive', 'cfname', 'source_id', + 'access_version', 'json_file_path', 'reference_date', + 'version', 'rowid'] for i,val in enumerate(header): record[val] = row[i] # call logging @@ -527,11 +547,16 @@ def process_row(ctx, row): @click.pass_context -def pool_handler(ctx, rows, ncpus): +def pool_handler(ctx, rows, ncpus, cpuxworker): """Sets up the concurrent future pool executor and submits rows from filelist db table to process_row. Each row represents a file to process. + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + Returns ------- result_futures : list @@ -539,7 +564,9 @@ def pool_handler(ctx, rows, ncpus): tuples with status message and code, and rowid """ mop_log = logging.getLogger('mop_log') - executor = concurrent.futures.ProcessPoolExecutor(max_workers=ncpus) + nworkers= int(ncpus/cpuxworker) + mop_log.info(f"Calling concurrent.futures with {nworkers} workers") + executor = concurrent.futures.ProcessPoolExecutor(max_workers=nworkers) futures = [] for row in rows: # Using submit with a list instead of map lets you get past the first exception @@ -548,7 +575,6 @@ def pool_handler(ctx, rows, ncpus): futures.append(future) # Wait for all results concurrent.futures.wait(futures) - # After a segfault is hit for any child process (i.e. is "terminated abruptly"), the process pool becomes unusable # and all running/pending child processes' results are set to broken result_futures = [] diff --git a/src/mopper/setup_utils.py b/src/mopper/setup_utils.py index 05dfaca..50bea48 100755 --- a/src/mopper/setup_utils.py +++ b/src/mopper/setup_utils.py @@ -19,9 +19,8 @@ # originally written for CMIP5 by Peter Uhe and dapted for CMIP6 by Chloe Mackallah # ( https://doi.org/10.5281/zenodo.7703469 ) # -# last updated 08/04/2024 +# last updated 08/10/2024 -import sys import json import sqlite3 import copy @@ -29,10 +28,12 @@ import pathlib import logging -from datetime import datetime#, timedelta +from datetime import datetime from dateutil.relativedelta import relativedelta +from importlib.resources import files as import_files +from calendar import monthrange -from mopdb.utils import query, write_yaml +from mopdb.utils import query, write_yaml, read_yaml, MopException from mopper.cmip_utils import fix_years @@ -46,9 +47,24 @@ def write_var_map(outpath, table, matches): def define_timeshot(frequency, resample, cell_methods): """Returns timeshot based on frequency, cell_methods and resample. - It also fixes and returns frequency for pressure levels and + + It also fixes and returns frequency for instantaneous and climatology data. - If data will be resample timeshot is mean/max/min + If data will be resampled timeshot is mean/max/min + + Parameters + ---------- + v : dict + Dictionary containing variable specifications + frequency : str + Current variable frequency + + Returns + ------- + timeshot : str + frequency : str + Updated variable frequency + """ if 'time:' in cell_methods: bits = cell_methods.split() @@ -73,13 +89,26 @@ def define_timeshot(frequency, resample, cell_methods): def adjust_nsteps(v, frq): - """Adjust variable grid size to new number of timesteps, + """Adjust variable grid size to new number of timesteps. + Each variable master definition has size of one timestep and - number of time steps. If frequency changes as for resample + number of time steps. If frequency changes (for example by resample), then number of timesteps need to be adjusted. New number of time steps is: total_time(days) / nstep_day(new_frq) - total_time (days) = nsteps*nstep_day(orig_frq) + total_time (days) = nsteps * nstep_day(orig_frq) + + Parameters + ---------- + v : dict + Dictionary containing variable specifications + frq : str + New frequency for variable + + Returns + ------- + nsteps + """ # number of timesteps in a day for given frequency nstep_day = {'10min': 144, '30min': 48, '1hr': 24, '3hr': 8, @@ -99,8 +128,8 @@ def write_config(ctx, fname='exp_config.yaml'): Parameters ---------- - ctx : dict(dict) - Dictionary including 'cmor' settings and attributes for experiment + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes fname : str Yaml filename (default: exp_config.yaml) @@ -119,16 +148,21 @@ def write_config(ctx, fname='exp_config.yaml'): @click.pass_context -def find_custom_tables(ctx, cmip=False): - """Returns list of tables files in custom table path +def find_map_tables(ctx, mappings): + """Returns list of tables files listed in mapping file + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + + Returns + ------- + """ mop_log = logging.getLogger('mop_log') - tables = [] - table_files = ctx.obj['tables_path'].rglob("*_*.json") - for f in table_files: - f = str(f).replace(".json", "") - tables.append(f) - mop_log.debug(f"Tables found in {ctx.obj['tables_path']}:\n {tables}") + tables = [x['cmor_table'] for x in mappings] + tables = set(tables) + mop_log.debug(f"Tables found: {tables}") return tables @@ -136,6 +170,9 @@ def find_custom_tables(ctx, cmip=False): def write_table(ctx, table, vardict, select): """Write CMOR table in working directory Includes only selected variables and adds deflate levels. + + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ new = copy.deepcopy(vardict) for k in vardict['variable_entry'].keys(): @@ -171,6 +208,7 @@ def filelist_sql(): frequency text, realm text, timeshot text, + axes text, tstart text, tend text, sel_start text, @@ -195,6 +233,8 @@ def filelist_sql(): @click.pass_context def write_job(ctx, nrows): """ + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes """ mop_log = logging.getLogger('mop_log') # define storage flag @@ -206,10 +246,10 @@ def write_job(ctx, nrows): # hugemem requires minimum 6 cpus if ctx.obj['queue'] == 'hugemem' and nrows < 6: ctx.obj['ncpus'] = 6 - elif nrows <= 24: + elif nrows <= ctx.obj['max_cpus']: ctx.obj['ncpus'] = nrows else: - ctx.obj['ncpus'] = 24 + ctx.obj['ncpus'] = ctx.obj['max_cpus'] ctx.obj['nmem'] = ctx.obj['ncpus'] * ctx.obj['mem_per_cpu'] if ctx.obj['nmem'] >= 1470: ctx.obj['nmem'] = 1470 @@ -231,8 +271,8 @@ def create_exp_json(ctx, json_cv): Parameters ---------- - config : dict(dict) - Dictionary with both cmor settings and attributes defined for experiment + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes json_cv : str Path of CV json file to edit @@ -240,6 +280,7 @@ def create_exp_json(ctx, json_cv): ------- fname : str Name of created experiment json file + """ mop_log = logging.getLogger('mop_log') fname = ctx.obj['outpath'] / f"{ctx.obj['exp']}.json" @@ -250,13 +291,13 @@ def create_exp_json(ctx, json_cv): # if present but source description is different overwrite file in custom mode if any(x not in attrs.keys() for x in ['source_id', 'source']): mop_log.error("Source and source_id need to be defined") - sys.exit() + raise MopException("Source and source_id need to be defined") at_sid, at_source = attrs['source_id'], attrs['source'] cv_sid = cv_dict['CV']['source_id'].get(at_sid,'') if cv_sid == '' or cv_sid['source'] != at_source: if cv_sid == '' and ctx.obj['mode'] == 'cmip6': mop_log.error(f"source_id {at_sid} not defined in CMIP6_CV.json file") - sys.exit() + raise MopException(f"source_id {at_sid} not defined in CMIP6_CV.json file") cv_dict['CV']['source_id'][at_sid] = {'source_id': at_sid, 'source': at_source} with json_cv.open(mode='w') as f: @@ -280,7 +321,7 @@ def create_exp_json(ctx, json_cv): else: glob_attrs[k] = ctx.obj.get(k, '') # temporary correction until CMIP6_CV file name is not anymore hardcoded in CMOR - glob_attrs['_control_vocabulary_file'] = f"{ctx.obj['outpath']}/CMIP6_CV.json" + glob_attrs['_control_vocabulary_file'] = f"{ctx.obj['tpath']}/CMIP6_CV.json" # replace {} _ and / in output templates glob_attrs['output_path_template'] = ctx.obj['path_template'] \ .replace('{','<').replace('}','>').replace('/','') @@ -307,8 +348,8 @@ def populate_db(ctx, conn): Parameters ---------- - ctx : dict(dict) - Dictionary including 'cmor' settings and attributes for experiment + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes conn : obj DB connection object """ @@ -355,8 +396,8 @@ def add_row(values, cursor, update): ---------- values : list List of values of file attributes - cursor : obj - Dictionary with attributes defined for experiment + cursor : sqlite3.cursor obj + To execute sql statements on database update : bool If True update existing rows instead of adding them @@ -366,16 +407,17 @@ def add_row(values, cursor, update): mop_log = logging.getLogger('mop_log') sql = '''insert into filelist (infile, filepath, filename, vin, variable_id, ctable, - frequency, realm, timeshot, tstart, tend, sel_start, sel_end, - status, file_size, exp_id, calculation, resample, in_units, - positive, cfname, source_id, access_version, json_file_path, - reference_date, version) + frequency, realm, timeshot, axes, tstart, tend, sel_start, + sel_end, status, file_size, exp_id, calculation, resample, + in_units, positive, cfname, source_id, access_version, + json_file_path, reference_date, version) values (:infile, :filepath, :filename, :vin, :variable_id, :table, - :frequency, :realm, :timeshot, :tstart, :tend, :sel_start, - :sel_end, :status, :file_size, :exp_id, :calculation, :resample, - :in_units, :positive, :cfname, :source_id, :access_version, - :json_file_path, :reference_date, :version)''' + :frequency, :realm, :timeshot, :axes, :tstart, :tend, + :sel_start, :sel_end, :status, :file_size, :exp_id, + :calculation, :resample, :in_units, :positive, :cfname, + :source_id, :access_version, :json_file_path, :reference_date, + :version)''' if update: sql = sql.replace("insert", "replace") try: @@ -404,7 +446,8 @@ def adjust_size(opts, insize): plevnum = calc.split(',')[-1] else: raise('check plevinterp calculation def plev probably missing') - plevnum = float(plevnum.replace(')','')) + f = filter(str.isdecimal,plevnum) + plevnum = float("".join(f)) grid_size = float(insize)/float(opts['levnum'])*plevnum return grid_size @@ -418,19 +461,20 @@ def compute_fsize(ctx, opts, grid_size, frequency): Parameters ---------- - ctx : str - Path of CV json file to edit + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes attrs: dict Dictionary with attributes defined for experiment Returns ------- """ - #mop_log = logging.getLogger('mop_log') + mop_log = logging.getLogger('mop_log') # set small number for fx frequency so it always create only one file nstep_day = {'10min': 144, '30min': 48, '1hr': 24, '3hr': 8, '6hr': 4, 'day': 1, '10day': 0.1, 'mon': 1/30, - 'yr': 1/365, 'dec': 1/3652, 'fx': 1/5000} + 'yr': 1/365, '2yr': 1/730, '5yr': 1/1826, + 'dec': 1/3652, 'fx': 1/5000} max_size = ctx.obj['max_size'] # work out if grid-size might change because of calculation if opts['calculation'] != '' or opts['resample'] != '': @@ -440,10 +484,12 @@ def compute_fsize(ctx, opts, grid_size, frequency): # work out how long is the entire span in days start = datetime.strptime(str(ctx.obj['start_date']), '%Y%m%dT%H%M') finish = datetime.strptime(str(ctx.obj['end_date']), '%Y%m%dT%H%M') + mop_log.debug(f"compute_fsize start, finish: {start}, {finish}") delta = (finish - start).days # if overall interval less than a day use seconds as days will be 0 if delta == 0: delta = (finish - start).seconds/(3600*24) + mop_log.debug(f"compute_fsize full interval in days: {delta}") # calculate the size of potential file intervals depending on timestep frequency size = {} size['days=0.25'] = size_tstep * nstep_day[frequency] * 0.25 @@ -453,35 +499,35 @@ def compute_fsize(ctx, opts, grid_size, frequency): size['days=7'] = size['days=1'] * 7 size['months=1'] = size['days=1'] * 30 size['years=1'] = size['months=1'] * 12 + size['years=2'] = size['years=1'] * 2 + size['years=5'] = size['years=1'] * 5 size['years=10'] = size['years=1'] * 10 size['years=100'] = size['years=10'] * 10 - # Evaluate intervals in order starting from all timeseries - # and then from longer to shorter + # Evaluate intervals in order starting from the maximum size (entire + # timeseries) to the shorter option until size <= max_size*1.1 if size[f'days={delta}'] <= max_size*1.1: interval = f'days={delta}' else: - for interval in ['years=100', 'years=10', 'years=1', 'months=1', - 'days=7', 'days=1', 'days=0.5', 'days=0.25']: + for interval in ['years=100', 'years=10', 'years=2', 'years=5', + 'years=1', 'months=1', 'days=7', 'days=1', 'days=0.5', + 'days=0.25']: if size[interval] <= max_size*1.1: break return interval, size[interval] @click.pass_context -def build_filename(ctx, opts, tstart, tend, half_tstep): +def build_filename(ctx, opts): """Builds name for file to be created based on template in config - NB we are using and approximations for dates - not including here exact hour + + Trims tstart and tend from opts dictionary based on frequency. Parameters ---------- - cdict : dict - Dictionary with cmor settings for experiment + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes opts : dict Dictionary with attributes for a specific variable - tstart : - tend : - half_tstep : Returns ------- @@ -489,35 +535,32 @@ def build_filename(ctx, opts, tstart, tend, half_tstep): Path for file to be created fname : str Name for file to be created + """ frequency = opts['frequency'].replace("Pt","").replace( "CM","").replace("C","") - # add/subtract half timestep from start/end to mimic cmor - if opts['timeshot'] == 'point': - tstart = tstart + 2*half_tstep - else: - tstart = tstart + half_tstep - tend = tend - half_tstep - stamp = '%4Y%m%d%H%M%S' + #stamp = '%4Y%m%d%H%M%S' + idx = 15 if frequency != 'fx': if frequency in ['yr', 'dec']: - stamp = stamp[:3] + idx = 4 elif frequency == 'mon': - stamp = stamp[:5] + idx = 6 elif frequency == 'day': - stamp = stamp[:7] + idx = 8 elif 'hr' in frequency: - stamp = stamp[:11] - tstart = tstart.strftime(stamp) - tend = tend.strftime(stamp) + idx = 13 +##PP restart from here how to apply format if already strin? + tstart = (opts['tstart'] + '00')[:idx].replace('T', '') + tend = (opts['tend'] + '00')[:idx].replace('T', '') opts['date_range'] = f"{tstart}-{tend}" else: opts['date_range'] = "" - # PP we shouldn't need this as now we pas subhr and then the actual minutes spearately + # PP we shouldn't need this as now we pas subhr and then the actual minutes separately if 'min' in frequency: opts['frequency'] = 'subhr' - if opts['timeshot'] == 'point': - opts['frequency'] = 'subhrPt' + if opts['timeshot'] == 'point': + opts['frequency'] += 'Pt' opts['version'] = opts['version'].replace('.', '-') path_template = f"{str(ctx.obj['outpath'])}/{ctx.obj['path_template']}" fpath = path_template.format(**opts) @@ -525,6 +568,8 @@ def build_filename(ctx, opts, tstart, tend, half_tstep): if opts['timeshot'] == "clim": fname = fname + "-clim" fname = fname + ".nc" + if opts['timeshot'] == 'point' and opts['frequency'] != 'subhrPt': + opts['frequency'] = opts['frequency'].replace('Pt','') return fpath, fname @@ -536,12 +581,14 @@ def process_vars(ctx, maps, opts, cursor): Parameters ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes maps : list(dict) List of dictionaries where each item represents one variable to process - cdict : dict - Dictionary with cmor settings for experiment opts : dict Dictionary with attributes of specific variable to update + cursor : sqlite3.cursor obj + To execute sql statements on database Returns ------- @@ -562,65 +609,99 @@ def process_vars(ctx, maps, opts, cursor): opts['in_units'] = mp['units'] opts['levnum'] = ctx.obj['levnum'] opts['cfname'] = mp['standard_name'] - define_files(cursor, opts, mp) + opts['axes'] = mp['axes'] + add_files(cursor, opts, mp) return @click.pass_context -def define_files(ctx, cursor, opts, mp): +def add_files(ctx, cursor, opts, mp): """Determines tstart and tend, filename and path and size for each file - to produce for variable. Based on frequency, time range to cover and - time interval for each file. This last is determined by maximum file size. + to produce for variable. + + Based on frequency, time range to cover and time interval for each file. + This last is determined by maximum file size. These and other files details are saved in filelist db table. + + Parameters + ---------- + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + cursor : sqlite3.cursor obj + To execute sql statements on database + + Returns + ------- + + """ mop_log = logging.getLogger('mop_log') update = ctx.obj['update'] exp_start = opts['exp_start'] exp_end = opts['exp_end'] + # only used in cmip mode if mp['years'] != 'all' and ctx.obj['dreq_years']: exp_start, exp_end = fix_years(mp['years'], exp_start[:4], exp_end[:4]) if exp_start is None: mop_log.info(f"""Years requested for variable are outside specified period: {mp['years']}""") return - tstep_dict = {'10min': ['minutes=10', 'minutes=5'], - '30min': ['minutes=30', 'minutes=15'], - '1hr': ['hours=1', 'minutes=30'], - '3hr': ['hours=3', 'hours=1.5'], - '6hr': ['hours=6', 'hours=3'], - 'day': ['days=1', 'hours=12'], - '10day': ['days=10','days=5'], - 'mon': ['months=1', 'days=15'], - 'yr': ['years=1', 'months=6'], - 'dec': ['years=10', 'years=5']} + # set half and full time step for each frequency + fname = import_files('mopdata').joinpath('tstep_delta.yaml') + tstep_dict = read_yaml(fname)['tstep_dict'] start = datetime.strptime(str(exp_start), '%Y%m%dT%H%M') finish = datetime.strptime(str(exp_end), '%Y%m%dT%H%M') frq = opts['frequency'] if 'subhr' in frq: frq = ctx.obj['subhr'] + frq.split('subhr')[1] + tstep = eval(f"relativedelta({tstep_dict[frq][0]})") + half_tstep = eval(f"relativedelta({tstep_dict[frq][1]})") + mop_log.debug(f"add_files frq, half_tstep, tstep: {frq}, {half_tstep}, {tstep}") # interval is file temporal range as a string to evaluate timedelta interval, opts['file_size'] = compute_fsize(opts, mp['size'], frq) + mop_log.debug(f"add_files time interval for 1 file: {interval}") + delta = eval(f"relativedelta({interval})") #loop over times if frq == 'fx': finish = start + relativedelta(days=1) tstep_dict['fx'] = tstep_dict['day'] while (start < finish): - half_tstep = eval(f"relativedelta({tstep_dict[frq][1]})") - delta = eval(f"relativedelta({interval})") - newtime = min(start+delta, finish) - tstart = start + half_tstep - opts['tstart'] = tstart.strftime('%4Y%m%dT%H%M') - opts['tend'] = newtime.strftime('%4Y%m%dT%H%M') - # select files on 1 tstep wider interval to account for timestamp shifts - opts['sel_start'] = start.strftime('%4Y%m%d%H%M') - opts['sel_end'] = (newtime - half_tstep).strftime('%4Y%m%d%H%M') - opts['filepath'], opts['filename'] = build_filename(opts, - start, newtime, half_tstep) + opts, newtime = define_file(opts, start, finish, delta, + tstep, half_tstep) + opts['filepath'], opts['filename'] = build_filename(opts) rowid = add_row(opts, cursor, update) mop_log.debug(f"Last added row id: {rowid}") start = newtime return +def define_file(opts, start, finish, delta, tstep, half_tstep): + """ + """ + mop_log = logging.getLogger('mop_log') + # correct half_step for start with monthly data + if opts['frequency'] == 'mon': + ndays = monthrange(start.year, start.month)[1] + half_tstep = relativedelta(days=ndays/2.0) + newtime = min(start+delta, finish) + if opts['timeshot'] == 'point': + tstart = start + tstep + tend = start + delta + else: + tstart = start + half_tstep + tend = start + delta - half_tstep + if opts['frequency'] == 'mon': + mop_log.debug(f"define_file, tend before mon adjust: {tend}") + ndays = monthrange(tend.year, tend.month)[1] + mop_log.debug(f"define_file, tend ndays: {ndays}") + half_end = relativedelta(days=ndays/2.0) + tend = start + delta - tstep + half_end + mop_log.debug(f"define_file, tend after mon adjust: {tend}") + opts['tstart'] = tstart.strftime('%4Y%m%dT%H%M') + opts['tend'] = tend.strftime('%4Y%m%dT%H%M') + # select files on 1 tstep wider interval to account for timestamp shifts + opts['sel_start'] = (tstart - tstep).strftime('%4Y%m%d%H%M') + opts['sel_end'] = (tend + tstep).strftime('%4Y%m%d%H%M') + return opts, newtime def count_rows(conn, exp): """Returns number of files to process @@ -650,8 +731,12 @@ def define_template(ctx, flag, nrows): Parameters ---------- - cdict : dict - Dictionary with cmor settings for experiment + ctx : click context + Includes obj dict with 'cmor' settings, exp attributes + + Returns + ------- + """ template = f"""#!/bin/bash #PBS -P {ctx.obj['project']} @@ -672,6 +757,6 @@ def define_template(ctx, flag, nrows): {ctx.obj['conda_env']} cd {ctx.obj['appdir']} -mop run -c {ctx.obj['exp']}_config.yaml +mop run -c {ctx.obj['exp']}_config.yaml # --debug (uncomment to run in debug mode) echo 'APP completed for exp {ctx.obj['exp']}.'""" return template diff --git a/tests/conftest.py b/tests/conftest.py index 3770a94..462f57f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -88,8 +88,9 @@ def setup_access_db(session): "near-surface (usually, 2 meter) air temperature", "longitude latitude time height2m", "tas", "real", "", "", "", "", "", "", "")''') - session.execute('''INSERT INTO mapping VALUES ("tas", "fld_s03i236", - "", "K", "time lat lon", "mon", "atmos", "area: time: mean", + session.execute('''INSERT INTO mapping VALUES ("tas", + "fld_s03i236", "", "K", "time lat lon", + "longitude latitude time", "mon", "atmos", "area: time: mean", "", "CMIP6_Amon", "CM2", "air_temperature", "cm000")''') session.connection.commit() @@ -98,7 +99,14 @@ def setup_access_db(session): def setup_mopper_db(session): flist_sql = filelist_sql() session.execute(flist_sql) - session.execute('''INSERT INTO filelist VALUES ("/testdata/atmos/umnsa_spec_*.nc", "/testdata/mjo-elnino/v1-0/A10min/", "tas_AUS2200_mjo-elnino_subhrPt_20160101001000-20160102000000.nc", "fld_s03i236", "tas", "AUS2200_A10min", "subhrPt", "atmos", "point", "20160101T0005", "20160102T0000", "201601010000", "201601012355", "unprocessed", "3027.83203125", "mjo-elnino", "K", "AUS2200", "AUS2200", "/testdata/mjo-elnino/mjo-elnino.json", "1970-01-01", "v1-0")''') + session.execute('''INSERT INTO filelist VALUES ( + "/testdata/atmos/umnsa_spec_*.nc", "/testdata/mjo-elnino/v1-0/A10min/", + "tas_AUS2200_mjo-elnino_subhrPt_20160101001000-20160102000000.nc", + "fld_s03i236", "tas", "AUS2200_A10min", "subhrPt", "atmos", "point", + "longitude latitude time", "20160101T0005", "20160102T0000", + "201601010000", "201601012355", "unprocessed", "3027.83203125", + "mjo-elnino", "K", "AUS2200", "AUS2200", + "/testdata/mjo-elnino/mjo-elnino.json", "1970-01-01", "v1-0")''') session.connection.commit() @@ -116,9 +124,9 @@ def varlist_rows(): @pytest.fixture def matches(): - matches = [("tas", "fld_s03i236", "", "1hr", "atmos", "AUS2200", "AUS2200_A1hr", "", "K"), - ("siconca", "fld_s00i031", "", "mon", "ocean", "CM2", "CMIP6_OImon", "", "1"), - ("hfls", "fld_s03i234", "", "mon", "atmos", "CM2", "CMIP6_Amon", "up", "W/m2")] + matches = [("tas", "fld_s03i236", "", "1hr", "atmos", "AUS2200", "AUS2200_A1hr", "", "K", "lo la t"), + ("siconca", "fld_s00i031", "", "mon", "ocean", "CM2", "CMIP6_OImon", "", "1", "lo la t"), + ("hfls", "fld_s03i234", "", "mon", "atmos", "CM2", "CMIP6_Amon", "up", "W/m2", "lo la t")] return matches @pytest.fixture @@ -147,7 +155,7 @@ def var_obj(fobj): @pytest.fixture def mapvar_obj(var_obj): - match = ('','','','','','','','','') + match = ('','','','','','','','','','') mvobj = MapVariable(match, var_obj) return mvobj diff --git a/tests/test_calculations.py b/tests/test_calculations.py index 8c70d28..9699e30 100644 --- a/tests/test_calculations.py +++ b/tests/test_calculations.py @@ -21,7 +21,8 @@ import numpy as np import pandas as pd import logging -from mopper.calculations import (overturn_stream, calc_topsoil,) +from mopper.calc_ocean import overturn_stream +from mopper.calc_land import calc_topsoil from conftest import ctx diff --git a/tests/test_mop_setup.py b/tests/test_mop_setup.py new file mode 100644 index 0000000..65b4e83 --- /dev/null +++ b/tests/test_mop_setup.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# Copyright 2024 ARC Centre of Excellence for Climate Extremes +# author: Paola Petrelli +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from importlib.resources import files as import_files +from pathlib import Path + +def test_import_data(): + fpath = import_files('mopdata.cmor_tables').joinpath( + "CMIP6_Amon.json") + assert Path(fpath).exists() + fpath = import_files('mopdata').joinpath("notes.yaml") + assert Path(fpath).exists() diff --git a/tests/test_mop_utils.py b/tests/test_mop_utils.py index 8cf28a2..dd64697 100644 --- a/tests/test_mop_utils.py +++ b/tests/test_mop_utils.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # Copyright 2023 ARC Centre of Excellence for Climate Extremes # author: Paola Petrelli -# author: Sam Green # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,60 +20,109 @@ import numpy as np import pandas as pd import logging +from pathlib import Path + from mopper.mop_utils import (check_timestamp, get_cmorname,) ctx = click.Context(click.Command('cmd'), obj={'sel_start': '198302170600', 'sel_end': '198302181300', 'realm': 'atmos', 'frequency': '1hr', 'var_log': 'varlog_1'}) +# to test 6 hourly files +ctx2 = click.Context(click.Command('cmd'), + obj={'sel_start': '198302170000', 'sel_end': '198302182100', + 'realm': 'atmos', 'frequency': '6hr', 'var_log': 'varlog_1'}) def test_check_timestamp(caplog): global ctx caplog.set_level(logging.DEBUG, logger='mop_log') caplog.set_level(logging.DEBUG, logger='varlog_1') - # test atmos files - files = [f'obj_198302{d}T{str(h).zfill(2)}01_1hr.nc' for d in ['17','18','19'] - for h in range(24)] + # test atmos 1hr files + files = [Path(f'obj_198302{d}T{str(h).zfill(2)}01_1hr.nc') + for d in ['17','18','19'] for h in range(24)] inrange = files[6:37] with ctx: - out1 = check_timestamp(files) + out1 = check_timestamp(files) assert out1 == inrange # get only first file is frequency is fx ctx.obj['frequency'] = 'fx' inrange = [files[0]] with ctx: - out2 = check_timestamp(files) + out2 = check_timestamp(files) assert out2 == inrange - # test ocn files + # test atmos 6hr files + files = [Path(f'obj_198302{d}T{str(h).zfill(2)}01_6hr.nc') + for d in ['17','18','19'] for h in range(0,24,6)] + inrange = files[:8] + with ctx2: + out3 = check_timestamp(files) + assert out3 == inrange + # test atmos 1hr AUS2200 style files + ctx2.obj['frequency'] = '1hr' + ctx2.obj['sel_start'] = '198302150530' + ctx2.obj['sel_end'] = '198302151130' + files = [Path(f'/g/d/h/A/f-e/19830215T0000/a/um_cl_19830215T{str(h).zfill(2)}00_1hr.nc') + for h in range(0,24)] + inrange = files[6:12] + with ctx2: + out4 = check_timestamp(files) + assert out4 == inrange + # function is now independent from realm no need to fix it in ctx + # test ocean files ctx.obj['frequency'] = 'day' - ctx.obj['realm'] = 'ocean' - files = [f'ocn_daily.nc-198302{str(d).zfill(2)}' for d in range(1,29)] + files = [Path(f'ocn_daily.nc-198302{str(d).zfill(2)}') for d in range(1,29)] inrange = files[16:18] with ctx: - out3 = check_timestamp(files) - assert out3 == inrange + out5 = check_timestamp(files) + assert out5 == inrange + # test ice files + # this pass but because month and year are separated by "-" + # it selects more than we would expect as tstamp is only 1983 + ctx2.obj['sel_start'] = '198301010000' + ctx2.obj['sel_end'] = '198312311200' + files = [Path(f'iceh_d.1983-{str(m).zfill(2)}.nc') for m in range(1,12)] + inrange = files + with ctx2: + out6 = check_timestamp(files) + assert out6 == inrange + # test with 3 digit number in filename which is not a date + files = [Path(f'/sc/AM3/di787/di787a.pd198303.nc')] + with ctx2: + out7 = check_timestamp(files) + assert out7 == files + # test with 3 digit number in filename which is not a date + # and missing 0 at start of year + ctx2.obj['sel_start'] = '078301010000' + ctx2.obj['sel_end'] = '078312311200' + files = [Path(f'/sc/AM3/di787/di787a.pd78303.nc')] + with ctx2: + out8 = check_timestamp(files) + assert out8 == files def test_get_cmorname(caplog): global ctx caplog.set_level(logging.DEBUG, logger='mop_log') # axis_name t - ctx.obj['calculation'] = "plevinterp(var[0], var[1], 24)" - ctx.obj['variable_id'] = "ta24" - ctx.obj['timeshot'] = 'mean' - data = np.random.rand(3, 5, 3, 6) - tdata = pd.date_range("2000-01-01", periods=5) - lats = np.linspace(-20.0, 10.0, num=3) - lons = np.linspace(120.5, 150.0, num=6) - levs = np.arange(1, 4) - foo = xr.DataArray(data, coords=[levs, tdata, lats, lons], - dims=["lev", "t", "lat", "lon"]) + ctx.obj['axes'] = 'longitude latitude plev3 time' + #data = np.random.rand(3, 5, 3, 6) + #tdata = pd.date_range("2000-01-01", periods=5) + #lats = np.linspace(-20.0, 10.0, num=3) + #lons = np.linspace(120.5, 150.0, num=6) + #levs = np.arange(1, 4) + #foo = xr.DataArray(data, coords=[levs, tdata, lats, lons], + # dims=["lev", "t", "lat", "lon"]) with ctx: - tname = get_cmorname('t', foo.t, z_len=None) - iname = get_cmorname('lon', foo.lon, z_len=None) - jname = get_cmorname('lat', foo.lat, z_len=None) - zname = get_cmorname('z', foo.lev, z_len=3) + tname = get_cmorname('time') + iname = get_cmorname('lon') + jname = get_cmorname('lat') + zname = get_cmorname('lev') assert tname == 'time' assert iname == 'longitude' assert jname == 'latitude' - assert zname == 'plev24' + assert zname == 'plev3' + # test generic axis alevel + ctx.obj['axes'] = 'longitude latitude alevel time' + with ctx: + zname = get_cmorname('theta_model_level_number') + assert zname == 'hybrid_height' diff --git a/tests/test_mopdb.py b/tests/test_mopdb.py index b377077..f8e1c9a 100644 --- a/tests/test_mopdb.py +++ b/tests/test_mopdb.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # Copyright 2023 ARC Centre of Excellence for Climate Extremes # author: Paola Petrelli -# author: Sam Green # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,7 +52,7 @@ def test_template(session, runner, tmp_path, caplog, os.mkdir("myfiles") with open('myfiles/varlist.csv', 'w') as f: f.write('name;cmor_var;units;dimensions;frequency;realm;cell_methods;cmor_table;dtype;size;nsteps;fpattern;long_name;standard_name') - f.write('fld_s03i236;tas;K;time lat lon,mon;atmos;area: time: mean;CMIP6_Amon;float32;110592;2081;cm000a.pm;TEMPERATURE AT 1.5M;air_temperature') + f.write('fld_s03i236;tas;K;time lat lon;mon;atmos;area: time: mean;CMIP6_Amon;float32;110592;2081;cm000a.pm;TEMPERATURE AT 1.5M;air_temperature') f.write('fld_s03i237;huss;1;time lat lon;mon;atmos;area: time: mean;CMIP6_Amon;float32;110592;2081;cm000a.pm;SPECIFIC HUMIDITY AT 1.5M;specific_humidity') f.write('fld_s05i205;prrc;kg m-2 s-1;time_0 lat lon;3hr;atmos;area: time: mean;CMIP6_E3hr;float32;110592;578880;cm000a.p8;CONVECTIVE RAINFALL RATE KG/M2/S;convective_rainfall_flux') f.write('fld_s03i236;tas;K;time lat lon;day;atmos;area: time: mean;CMIP6_day;float32;110592;74772;cm000a.pd;TEMPERATURE AT 1.5M;air_temperature') diff --git a/tests/test_mopdb_map.py b/tests/test_mopdb_map.py index 9b66447..fe59de2 100644 --- a/tests/test_mopdb_map.py +++ b/tests/test_mopdb_map.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # Copyright 2023 ARC Centre of Excellence for Climate Extremes # author: Paola Petrelli -# author: Sam Green # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,7 +20,7 @@ import xarray as xr from mopdb.mopdb_map import (add_var, get_file_frq) #from mopdb.mopdb_class import MapVariable, Variable, FPattern -#from conftest import * +from conftest import matches, varobjs TESTS_HOME = os.path.abspath(os.path.dirname(__file__)) diff --git a/tests/test_mopdb_utils.py b/tests/test_mopdb_utils.py index b5409b3..851f916 100644 --- a/tests/test_mopdb_utils.py +++ b/tests/test_mopdb_utils.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # Copyright 2023 ARC Centre of Excellence for Climate Extremes # author: Paola Petrelli -# author: Sam Green # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,7 +17,9 @@ #import pytest import logging import itertools -from mopdb.mopdb_utils import (get_date_pattern, ) +from pathlib import Path + +from mopdb.mopdb_utils import (get_date_pattern, identify_patterns) #from mopdb.mopdb_class import MapVariable, Variable, FPattern @@ -42,3 +43,49 @@ def test_get_date_pattern(caplog): dp = get_date_pattern(fname, fpattern) date = ''.join(x for x in itertools.compress(fname,dp)) assert date == '095101' + + +def test_identify_patterns(caplog): + # test CM2 style run with p7/p8 files + files = ['cw323a.pm095103_mon.nc', 'cw323a.pm095106_mon.nc', 'cw323a.pm095109_mon.nc', + 'cw323a.pm095112_mon.nc', 'ocean_month.nc-09961231', 'cw323a.p7095103_mon.nc', + 'cw323a.p8095103_mon.nc', 'cw323a.pd095106_dai.nc', + 'ocean_daily.nc-09981231', 'ocean_daily.nc-10001231', 'ocean_month.nc-09971231', + 'ocean_scalar.nc-09991231', 'ocean_scalar.nc-09991231', + 'iceh_d.1000-01.nc', 'iceh_m.1000-01.nc', 'iceh_d.0999-12.nc', 'iceh_m.0999-12.nc' + 'iceh_d.1000-02.nc', 'iceh_m.1000-02.nc', 'iceh_d.0999-11.nc', 'iceh_m.0999-11.nc'] + paths = [Path(x) for x in sorted(files)] + patterns = identify_patterns(paths) + assert patterns == ['cw323a.p7', 'cw323a.p8', 'cw323a.pd', 'cw323a.pm', + 'iceh_d.', 'iceh_m.', 'ocean_daily', 'ocean_month', + 'ocean_scalar'] + # test CM2 style ocean & ice run with only 1 file + files = ['ocean_daily.nc-09981231', 'ocean_month.nc-09971231', + 'ocean_scalar.nc-09991231', 'iceh_d.1000-01.nc', 'iceh_m.1000-01.nc'] + paths = [Path(x) for x in sorted(files)] + patterns = identify_patterns(paths) + assert patterns == ['iceh_d', 'iceh_m.1000-01.nc', 'ocean_d', + 'ocean_m', 'ocean_scalar.nc-09991231'] + # test AUS2200 style files + files = ['umnsa_cldrad_20220222T0000.nc', 'umnsa_mdl_20220222T0200.nc', + 'umnsa_slv_20220222T0400.nc', 'umnsaa_pa000.nc', 'umnsa_cldrad_20220222T0100.nc', + 'umnsa_mdl_20220222T0300.nc', 'umnsa_slv_20220222T0500.nc', 'umnsaa_pvera000.nc', + 'umnsa_cldrad_20220222T0200.nc', 'umnsa_mdl_20220222T0400.nc', + 'umnsa_spec_20220222T0000.nc', 'umnsaa_pverb000.nc', 'umnsa_spec_20220222T0100.nc', + 'umnsaa_pverc000.nc', 'umnsaa_pverd000.nc', 'umnsa_cldrad_20220222T0500.nc', + 'umnsa_mdl_20220222T0100.nc', 'umnsa_slv_20220222T0300.nc', 'umnsa_spec_20220222T0500.nc'] + paths = [Path(x) for x in sorted(files)] + patterns = identify_patterns(paths) + assert patterns == ['umnsa_cldrad_', 'umnsa_mdl_', 'umnsa_slv_', + 'umnsa_spec_', 'umnsaa_pa', 'umnsaa_pvera', 'umnsaa_pverb', + 'umnsaa_pverc', 'umnsaa_pverd000.nc'] + # test patterns with jan, feb labels + files = ['br565Wa.pd0989apr.nc', 'br565Wa.pd0989aug.nc', 'br565Wa.pd0988apr.nc', 'br565Wa.pd0988aug.nc'] + paths = [Path(x) for x in sorted(files)] + patterns = identify_patterns(paths) + assert patterns == ['br565Wa.pd'] + # test patterns with T and/or "-' in stem works + files = ['b56Ta-so.pd0989apr.nc', 'b56Ta-so.pd0989aug.nc', 'b56Ta-so.pd0988apr.nc', 'b56Ta-so.pd0988aug.nc'] + paths = [Path(x) for x in sorted(files)] + patterns = identify_patterns(paths) + assert patterns == ['b56Ta-so.pd'] diff --git a/tests/test_mopper.py b/tests/test_mopper.py index e30e943..76b3f5f 100644 --- a/tests/test_mopper.py +++ b/tests/test_mopper.py @@ -1,7 +1,6 @@ #!/usr/bin/env python -# Copyright 2023 ARC Centre of Excellence for Climate Extremes +# Copyright 2024 ARC Centre of Excellence for Climate Extremes # author: Paola Petrelli -# author: Sam Green # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_setup_utils.py b/tests/test_setup_utils.py new file mode 100644 index 0000000..5d6b48d --- /dev/null +++ b/tests/test_setup_utils.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python +# Copyright 2024 ARC Centre of Excellence for Climate Extremes +# author: Paola Petrelli +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#import pytest +import click +import logging +import pytest + +from datetime import datetime +from dateutil.relativedelta import relativedelta + +from mopper.setup_utils import (compute_fsize, adjust_size, adjust_nsteps, + build_filename, define_timeshot, define_file) + +ctx = click.Context(click.Command('cmd'), + obj={'start_date': '19830101T0000', 'end_date': '19830201T0000', + 'realm': 'atmos', 'frequency': '1hr', 'max_size': 2048.0}) +# to test fx frequency4yy +ctx2 = click.Context(click.Command('cmd'), + obj={'start_date': '19830101T0000', 'end_date': '19830201T0000', + 'realm': 'atmos', 'frequency': 'fx', 'max_size': 2048.0}) + +ctx3 = click.Context(click.Command('cmd'), + obj={'start_date': '20230101T0000', 'end_date': '20250101T0000', + 'frequency': 'mon', 'outpath': '/g/da/exp', + 'path_template': '{version}/{frequency}', 'file_template': + '{variable_id}_{frequency}'}) + +def test_compute_fsize(caplog): + caplog.set_level(logging.DEBUG, logger='mop_log') + grid_size = 22048000.0 + opts = {'calculation': '', 'resample': ''} + # 31 days, 1hr frq and max size ~2 GB, expected 1 file * day + with ctx: + interval, fsize = compute_fsize(opts, grid_size, ctx.obj['frequency']) + assert int(fsize) == 504 + assert interval == 'days=1' + # 31 days, fx frq and max size ~2 GB, expected 1 file (entire interval) + with ctx2: + interval, fsize = compute_fsize(opts, grid_size, ctx2.obj['frequency']) + assert pytest.approx(fsize, 0.01) == 0.13 + assert interval == 'days=31' + +def test_adjust_size(caplog): + caplog.set_level(logging.DEBUG, logger='mop_log') + insize = 22048000.0 + opts = {'calculation': 'plevinterp(var[0], var[1], 3)', + 'resample': '', 'levnum': 30} + with ctx: + assert insize/10.0 == adjust_size(opts, insize) + # test case where plevnum includes letter + opts['calculation'] = 'plevinterp(var[0], var[1], 3h)' + with ctx: + assert insize/10.0 == adjust_size(opts, insize) + +def test_adjust_nsteps(caplog): + frq = 'day' + vdict = {'nsteps': 240, 'frequency': '1hr'} + assert 10 == adjust_nsteps(vdict, frq) + +#@pytest.mark.parametrize('tshot', ['mean','max','min']) +def test_define_timeshot(): + frq = "day" + resample = "" + cell_methods = 'time: mean' + #cell_methods = f"area: time: {tshot}" + timeshot, frequency = define_timeshot(frq, resample, cell_methods) + assert frequency == frq + assert timeshot == "mean" + # test that timeshot is updated from point to mean with resample + cell_methods = "area: mean time: point" + resample = "D" + timeshot, frequency = define_timeshot(frq, resample, cell_methods) + assert frequency == "day" + assert timeshot == "mean" + # test that timeshot is updated from maximum to max with resample + cell_methods = "area: mean time: maximum" + resample = "D" + timeshot, frequency = define_timeshot(frq, resample, cell_methods) + assert frequency == "day" + assert timeshot == "max" + # test that timeshot stays sum with resample + cell_methods = "area: mean time: sum" + resample = "D" + timeshot, frequency = define_timeshot(frq, resample, cell_methods) + assert frequency == "day" + assert timeshot == "sum" + # test timeshot point if Pt in frequency + resample = "" + frq = "1hrPt" + timeshot, frequency = define_timeshot(frq, resample, cell_methods) + assert frequency == "1hr" + assert timeshot == "point" + + +def test_build_filename(): + # test monthly frequency + half_tstep = relativedelta(days=15) + opts = { 'frequency': 'mon', 'timeshot': 'mean', + 'version': 'v1.0', 'variable_id': 'tas', + 'tstart': '20230116T1200', 'tend': '20231216T1200'} + with ctx3: + fpath, fname = build_filename(opts) + assert fpath == "/g/da/exp/v1-0/mon" + assert fname == "tas_mon_202301-202312.nc" + # test daily frequency + opts['tstart'] = '20230101T1200' + opts['tend'] = '20231231T1200' + opts['frequency'] = 'day' + ctx3.obj['frequency'] = 'day' + half_tstep = relativedelta(hours=12) + with ctx3: + fpath, fname = build_filename(opts) + assert fpath == "/g/da/exp/v1-0/day" + assert fname == "tas_day_20230101-20231231.nc" + # test 10min frequency and timeshot point + opts['tstart'] = '20230101T0010' + opts['tend'] = '20240101T0000' + opts['frequency'] = '10min' + opts['timeshot'] = 'point' + half_tstep = relativedelta(minutes=5) + ctx3.obj['frequency'] = '10minPt' + #ctx3.obj['end_date'] = '20250101T0001' + with ctx3: + fpath, fname = build_filename(opts) + assert fpath == "/g/da/exp/v1-0/subhrPt" + assert fname == "tas_subhrPt_20230101001000-20240101000000.nc" + +def test_define_file(): + frm = '%Y%m%dT%H%M' + st = datetime.strptime('20230101T0000', frm) + fin = datetime.strptime('20240101T0000', frm) + delta = relativedelta(months=1) + half_tstep = relativedelta(hours=12) + tstep = relativedelta(days=1) + opts, newtime = define_file({'timeshot':'mean', 'frequency':'day'}, + st, fin, delta, tstep, half_tstep) + assert opts['tstart'] == '20230101T1200' + assert opts['sel_start'] == '202212311200' + assert opts['tend'] == '20230131T1200' + assert opts['sel_end'] == '202302011200' + assert newtime == datetime.strptime('20230201T0000', frm) + # test 10min frequency + delta = relativedelta(days=1) + half_tstep = relativedelta(minutes=5) + tstep = relativedelta(minutes=10) + opts, newtime = define_file({'timeshot':'point', 'frequency': '10min'}, + st, fin, delta, tstep, half_tstep) + assert opts['tstart'] == '20230101T0010' + assert opts['sel_start'] == '202301010000' + assert opts['tend'] == '20230102T0000' + assert opts['sel_end'] == '202301020010' + assert newtime == datetime.strptime('20230102T0000', frm) + # test monthly frequency + delta = relativedelta(years=1) + half_tstep = relativedelta(days=15) + tstep = relativedelta(months=1) + opts, newtime = define_file({'timeshot':'mean', 'frequency': 'mon'}, + st, fin, delta, tstep, half_tstep) + assert opts['tstart'] == '20230116T1200' + assert opts['sel_start'] == '202212161200' + assert opts['tend'] == '20231216T1200' + assert opts['sel_end'] == '202401161200' + assert newtime == datetime.strptime('20240101T0000', frm) + # test monthly frequency for February and 1 timestep file + delta = relativedelta(months=1) + st = datetime.strptime('20230201T0000', frm) + opts, newtime = define_file({'timeshot':'mean', 'frequency': 'mon'}, + st, fin, delta, tstep, half_tstep) + assert opts['tstart'] == '20230215T0000' + assert opts['sel_start'] == '202301150000' + assert opts['tend'] == '20230215T0000' + assert opts['sel_end'] == '202303150000' + assert newtime == datetime.strptime('20230301T0000', frm) + # assert that last files end at finish + delta = relativedelta(years=1) + fin = datetime.strptime('20230701T0000', frm) + opts, newtime = define_file({'timeshot':'mean', 'frequency': 'mon'}, + st, fin, delta, tstep, half_tstep) + assert newtime == datetime.strptime('20230701T0000', frm)